01_Redis📍 Redis(REmote DIctionary Server)메모리(RAM)에 데이터를 저장하는 키-값(key-value) 데이터 저장소여러 서버에서 공유할 수 있고 빠름(일반 변수는 빠르지만 서버 간 공유x. RDBMS는 공유되지만 느림) 디스크: 일반적인 RDBMS. 느림. 용량 많음. 복잡한 쿼리 가능.메모리: Redis. 디스크보다 훨씬 빠름. 용량 제약. 복잡한 쿼리 약함. 활용 사례설명캐시(Cache)DB 조회 결과를 잠시 저장해 다음 요청 때 DB 대신 Redis에서 빠르게 조회세션 저장소로그인 세션을 저장 (특히 여러 서버를 운영할 때)토큰 저장JWT Refresh Token, 인증번호, 비밀번호 재설정 토큰 등분산 락(Distributed Lock)동시에 같은 자원에 접근하..
01_Swagger📍 Swagger코드의 어노테이션을 기반으로 API 문서 자동 생성하고 웹 화면에서 API를 직접 호출해볼 수 있는 도구Spring Boot 3.x에서는 Springdoc OpenAPI 라이브러리 사용해 자동으로 OpenAPI 문서 생성 동작 방식브라우저가 /swagger-ui/index.html을 요청한다.Swagger UI 페이지가 로드되면서 내부적으로 /v3/api-docs를 호출해 OpenAPI 명세를 가져온다.명세를 기반으로 API 목록을 화면에 그린다. 02_SpringBoot에 Swagger 적용📍 의존성 추가Spring Boot 3.x에서는 springdoc-openapi-starter-webmvc-ui 를 사용 build.gradledependencies { ..
01_Health Check📍 Health Check현재 서버가 살아있는지 확인→ 사람이 직접 확인 어렵→ 자동화된 외부 시스템이 주기적으로 서버 상태를 확인할 수 있는 엔드포인트 사용 02_Health Check API 구현📍 직접 엔드포인트 생성package com.example.global.api;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RestController;@RestControllerpublic class HealthCheckController { @GetMapping("/health-check") public String he..
01_공통 응답 형식 구현📍 BaseCode응답 코드의 공통 규격을 인터페이스로 정의package com.example.global.response.base;import org.springframework.http.HttpStatus;public interface BaseCode { HttpStatus getHttpStatus(); String getMessage(); String name();} 📍 SuccessCode상태 코드별로 HTTP 상태 코드와 메시지 관리package com.example.global.response.code;import com.example.global.response.base.BaseCode;import lombok.Getter;import lomb..
01_공통 예외처리📍 공통 예외처리매번 try-catch로 예외를 처리하는 건 비효율적 → 공통 예외처리 사용모든 예외 응답의 형식 통일디버깅에 필요한 정보(발생 시각, 요청 경로 등) 포함 전체 구조구성 요소역할BaseCode (interface)응답 코드의 공통 규격 정의ErrorCode (enum)에러 종류별 HTTP 상태 코드와 메시지 관리CustomException비즈니스 로직에서 발생시키는 사용자 정의 예외ErrorResponse (record)클라이언트에게 반환하는 에러 응답 DTOGlobalExceptionHandler모든 예외를 한 곳에서 처리하는 핸들러 02_공통 예외처리 구현📍 BaseCode응답 코드의 공통 규격을 인터페이스로 정의package com.example.glo..
01_BaseTimeEntity📍 BaseTimeEntity모든 엔티티가 공통으로 가져야 할 시간 관련 필드를 모아둔 부모 클래스자식 엔티티는 BaseTimeEntity를 상속받기만 하면 createdAt, updatedAt 필드를 자동으로 가지게 됨import jakarta.persistence.EntityListeners;import jakarta.persistence.MappedSuperclass;import lombok.Getter;import org.springframework.data.annotation.CreatedDate;import org.springframework.data.annotation.LastModifiedDate;import org.springframework.data.jp..
01_JPA(Java Persistence API)📍JPA(Java Persistence API)객체와 관계형 데이터베이스의 테이블을 짝지어 데이터를 영구적으로 저장할 수 있도록 정해진 Java 진영의 규칙JPA를 실제 코드로 작성한 가장 유명한 프레임워크가 HibernateHibernate는 내부적으로 JDBC를 사용한다. src/main/resources/application.ymlspring: jpa: hibernate: ddl-auto: none properties: hibernate: show_sql: true format_sql: true dialect: org.hibernate.dialect.MySQL8Dialect🔍 코..