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..
MSA와 Spring Cloud 이해하기
·
Spring
MSA Microservices Architecture (MSA) : MSA는 하나의 애플리케이션을 여러 개의 독립적인 서비스로 분리하여 개발, 배포, 유지보수를 용이하게 하는 소프트웨어 아키텍처 스타일. 각 서비스는 특정 비즈니스 기능을 수행하며, 서로 독립적으로 배포되고 확장 될 수 있음. 서비스 간의 통신은 주로 HTTP/HTTPS, 메시지 큐 등을 통해 이루어짐.  Spring Cloud Spring Cloud : 마이크로서비스 개발을 위해 다양한 도구와 서비스를 제공하는 스프링 프레임워크의 확장.주요 기능서비스 등록 및 디스커버리 : Eureka, Consul, Zookeeper로드 밸런싱 : Ribbon, Spring Cloud LoadBalancer서킷 브레이커 : Hystrix, Resil..
Spring의 RestTemplate 이해하기
·
Spring
RestTemplate 예시로 회원 가입 시 사용자의 주소를 받아와야 할 때 이 부분을 직접 구현하지 않고 이미 만들어져 있는 API를 사용하면 해당 기능을 간편하게 구현 할 수 있다. 이렇게 서버에서 다른 서버로 간편하게 요청할 수 있도록 Spring에서는 RestTemplate 기능을 제공한다.  💭 Client의 서버 포트 번호는 8080, Server의 서버 포트 번호를 7070으로 가정해 놓았을 때RestTemplate Get 요청 알아보기 Client 입장private final RestTemplate restTemplate;// RestTemplateBuilder의 build()를 사용하여 RestTemplate을 생성합니다.public RestTemplateService(RestTempl..