Spring 공통 모듈 & 공통 DTO 사용하기
·
Spring
이번 팀 프로젝트에서 MSA 기반 e-commerce를 만들게 되었는데 MSA다 보니 다들 모듈이 나뉘어져 있는 상태여서 공통 모듈을 만들어 이 안에서 공통 dto와 예외 처리를 한번에 다 하기로 했다!  ❓  ResponseEntity 대신 CommonResponse 사용하는 이유일관된 응답 형식 제공 : 마이크로 서비스는 모두 다른 서비스를 담당하지만 클라이언트에게는 일관된 형식의 응답을 제공해야 함.API 버전 관리 용이 : 마이크로 서비스는 지속적으로 개발되기에 API 버전 관리가 중요하기에 필드 유지보수가 편리하도록 CommonResponseDto로 관리해야 함.코드 재사용 : 반복적인 코드 작성을 줄이고 생산성을 높일 수 있음.관심사 분리 : ResponseEntity는 상태와 헤더 값 등 통..
서킷 브레이커 Resilience4j와 API 게이트웨이 이해하기
·
Spring
서킷 브레이커 서킷 브레이커는 마이크로서비스 간의 호출 실패를 감지하고 시스템의 전체적인 안정성을 유지하는 패턴외부 서비스 호출 실패 시 빠른 실패를 통해 장애를 격리하고, 시스템의 다른 부분에 영향을 주지 않도록 함.상태 변화 : 클로즈드 → 오픈 → 하프-오픈  Resilience4j Resilience4j : 서킷 브레이커 라이브러리로, 서비스 간의 호출 실패를 감지하고 시스템의 안정성을 유지한다.서킷 브레이커 상태클로즈드 : 기본 상태로, 모든 요청을 통과 시킴. 이 상태에서 호출이 실패하면 실패 카운터가 증가함. 실패율이 설정된 임계값을 초과하면 서킷 브레이커가 오픈 상태로 전환됨.오픈 : 서킷 브레이커가 오픈 상태로 전환되면 모든 요청을 즉시 실패로 처리, 에러 응답 반환. 설정된 대기 시간이..
클라이언트 사이드 로드 밸런싱 FeignClient와 Ribbon 이해하기
·
Spring
로드 밸런싱 로드 밸런싱은 네트워크 트래픽을 여러 서버로 분산시켜 서버의 부하를 줄이고, 시스템의 성능과 가용성을 높이는 기술.서버 간 트래픽을 고르게 분배하여 특정 서버에 부하가 집중되는 것을 방지.종류 : 클라이언트 사이드 로드 밸런싱, 서버 사이드 로드 밸런싱 클라이언트 사이드 로드 밸런싱 클라이언트 사이드 로드 밸런싱은 클라이언트가 직접 여러 서버 중 하나를 선택하여 요청을 보내는 방식.클라이언트는 서버의 목록을 가지고 있으며, 이를 바탕으로 로드 밸런싱을 수행.  FeignClient FeignClient는 Spring Cloud에서 제공하는 HTTP 클라이언트로, 선언적으로 RESTful 웹 서비스를 호출 할 수 있음.Eureka와 같은 서비스 디스커버리와 연동하여 동적으로 서비스 인스턴스를 ..
서비스 디스커버리 Eureka 서버 이해하기 및 실습
·
Spring
서비스 디스커버리 서비스 디스커버리 : 마이크로서비스 아키텍처에서 각 서비스의 위치를 동적으로 관리하고 찾아주는 기능.각 서비스는 등록 서버에 자신의 위치를 등록하고, 다른 서비스는 이를 조회하여 통신.주요 기능으로는 서비스 등록, 서비스 조회, 헬스 체크 등이 있음.  Eureka Eureka : 넷플릭스가 개발한 서비스 디스커버리 서버로, 마이크로 서비스 아키텍처에서 각 서비스의 위치를 동적으로 관리.모든 서비스 인스턴스의 위치를 저장하는 중앙 저장소 역할을 하며, 서비스 인스턴스의 상태를 주기적으로 확인하여 가용성 보장. Eureka 서버 설정 Eureka 서버는 서비스 레지스트리를 구성하는 중앙 서버서버 설정 파일 예시 >server: port: 8761eureka: client: reg..
Spring 데이터 검증 (Validation)하기
·
Spring
Validation Validation (검증)은 프로그래밍을 하는데에 있어서 가장 중요한 부분 중 하나. 특히나 Java는 null 값에 대한 접근에 대해 NullPointerException 오류가 발생하기 떄문에 이러한 부분을 예방하기 위해 검증 과정이 필요하다. Spring에서는 null 확인 뿐만 아니라 문자의 길이 측정과 같은 다른 검증 과정도 쉽게 처리할 수 있도록 Bean Validation 제공하고 있다. Bean Validation@NotNull : null 불가@NotEmpty : null, "" 불가@NotBlank : null, "", " " 불가@Size : 문자 길이 측정@Max : 최대값@Min : 최소값@Positive : 양수@Negative : 음수@Email : Ema..
Spring Security 접근 불가 페이지 만들기
·
Spring
Spring Security에 "권한(Authority)" 설정 방법  회원 상세정보(UserDetailsImpl) 를 통해 권한 설정 가능. 권한을 1개 이상 설정 가능."권한 이름" 규칙 : "ROLE_"로 시작해야 함.예) "ADMIN" 권한 부여 → "ROLE_ADMIN" "USER" 권한 부여 → "ROLE_USER" public enum UserRoleEnum { USER(Authority.USER), // 사용자 권한 ADMIN(Authority.ADMIN); // 관리자 권한 private final String authority; UserRoleEnum(String authority) { this.authority = authority; } ..
Spring Security 프레임워크 이해하기
·
Spring
Spring Security "Spring Security" 프레임워크는 Spring 서버에 필요한 인증 및 인가를 위해 많은 기능을 제공해 줌으로써 개발의 수고를 덜어 준다. WebSecurityConfig@Configuration@EnableWebSecurity // Spring Security 지원을 가능하게 함public class WebSecurityConfig { @Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { // CSRF 설정 http.csrf((csrf) -> csrf.disable()); http.authorizeHttpReq..
Spring의 Filter 이해하기 및 구현하기
·
Spring
Filter Filter란 Web 애플리케이션에서 관리되는 영엽으로 Client로 부터 오는 요청과 응답에 대해 최초/최종 단계의 위치이며 이를 통해 요청과 응답의 정보를 변경하거나 부가적인 기능을 추가 할 수 있다.  주로 범용적으로 처리해야 하는 작업들, 예를 들어 로깅 및 보안 처리, 인증, 인가 등에 활용 한다. Filter를 사용하면 인증/인가와 관련된 로직을 비즈니스 로직과 분리하여 관리 할 수 있다는 장점이 있다. Filter Chain  Filter는 한 개만 존재하는 것이 아니라 이렇게 여러 개가 Chain 형식으로 묶여서 처리될 수 있다. 📍 요청 URL의 인가 처리 및 인증 처리를 진행할 수 있는 Filter 구현 + 요청 URL을 로깅해주는 Filter 구현 Request URL ..