본문 바로가기

개발

Spring Cloud 모듈들 간단한 설명

Spring cloud gateway - API Gateway는 API의 요청자인 Client(웹어플리케이션 또는 모바일앱)와 API의 제공자인 backend service를 연결하는 중계자

Spring cloud 커뮤니티에서 zuul 대신 권고하고 있는 API Gateway가 입니다.

Spring Cloud Sleuth - Logging 하나의 Request에 대해 서버 전체에 걸쳐 동일한 UUID

Spring Cloud Sleuth 사용시 Application 로그에 Trace ID(UUID)가 함께 출력

Trace ID - 하나의 Request에 대해 서버 전체에 걸쳐 동일한 UUID

Eureka - 서비스 클라이언트가 서비스를 호출할때 서비스의 위치 (즉 IP주소와 포트)를 알아낼 수 있는 기능

클라우드 환경이 되면서 서비스가 오토 스케일링등에 의해서 동적으로 생성되거나 컨테이너 기반의 배포로 인해서, 서비스의 IP가 동적으로 변경.

이 때, 서비스 클라이언트가 서비스를 호출할때 서비스의 위치 (즉 IP주소와 포트)를 알아낼 수 있는 기능을 **서비스 디스커버리(Service discovery)**라고 부름

클라이언트 사이드 디스커버리 패턴(Client-Side Discovery Pattern)

  • 서비스 인스턴스의 네트워크 위치를 찾고 로드밸런싱하는 역할을 클라이언트가 담당하는 방식
  • 서버 사이드 디스커버리 패턴(Server-Side Discovery Pattern)
    • 서버 쪽에서 디스커버리 로직을 구현한 방식

Ribbon - Load balancing을 요청 어플리케이션 단에서 수행해주는 Client-side Load balancer

Spring WebClient - 웹으로 API를 호출하기 위해 사용되는 Http Client Non-Blocking방식 모듈

Java에서 가장 많이 사용하는 Http Client는 RestTemplate입니다.

차이점은 통신방법이 RestTemplate은 Blocking방식이고, WebClient는 Non-Blocking방식

Spring커뮤니티에서는 RestTemplate을 이미 Depreciated 시키고 WebClient를 사용할것을 강력히 권고하고 있습니다.