Spring Cloud 구성 요소

PARK JOOCHANG·2024년 8월 9일
0

MSA

목록 보기
5/8

서비스 디스커버리 (Eureka)

서비스 디스커버리란?

  • MSA에서 각 서비스의 위치를 동적으로 관리하고 찾아주는 기능
  • 각 서비스는 등록 서버(Eureka)에 자신의 위치를 등록하고, 이를 조회하여 통신
  • 서비스 등록, 서비스 조회, 헬스 체크 등의 기능

Eureka란?

  • 모든 서비스 인스턴스의 위치를 저장하는 중앙 저장소 역할, 서비스의 상태를 주기적으로 확인하여 가용성 보장
  • 여러 인스턴스를 지원하여 고가용성을 유지할 수 있음

Eureka 서버 설정

  • Eureka 서버는 서비스 레지스트리를 구성하는 중앙 서버
server:
  port: 8761

eureka:
  client:
    register-with-eureka: false  # 다른 Eureka 서버에 이 서버를 등록하지 않음
    fetch-registry: false  # 다른 Eureka 서버의 레지스트리를 가져오지 않음
  server:
    enable-self-preservation: false  # 자기 보호 모드 비활성화
  • 위 설정을 통해 Eureka 서버 구성, 클라이언트가 등록할 수 있도록 준비

Eureka 클라이언트 설정

  • 각 서비스는 Eureka 서버에 자신을 등록해야 함
spring:
  application:
    name: my-service

eureka:
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka/  # Eureka 서버 URL
    register-with-eureka: true  # Eureka 서버에 등록
    fetch-registry: true  # Eureka 서버로부터 레지스트리 정보 가져오기
  instance:
    hostname: localhost  # 클라이언트 호스트 이름
    prefer-ip-address: true  # IP 주소 사용 선호
    lease-renewal-interval-in-seconds: 30  # 리스 갱신 간격
    lease-expiration-duration-in-seconds: 90  # 리스 만료 기간

클라이언트 사이드 로드 밸런싱 (FeignClient, Ribbon)

로드 밸런싱이란?

  • 로드 밸런싱은 네트워크 트래픽을 여러 서버로 분산시켜 서버의 부하를 줄이고, 시스템의 성능과 가용성을 높이는 기술
  • 서버 간 트래픽을 고르게 분배하여 특정 서버에 부하가 집중되는 것을 방지
  • 종류: 클라이언트 사이드 로드 밸런싱, 서버 사이드 로드 밸런싱

클라이언트 사이드 로드 밸런싱이란?

  • 클라이언트 사이드 로드 밸런싱은 클라이언트가 직접 서버를 선택하여 요청을 보내는 방식
  • 클라이언트는 서버의 목록을 가지고 있으며, 이를 바탕으로 로드 밸런싱을 수행

FeignClient란?

  • FeignClient는 Spring Cloud에서 제공하는 HTTP 클라이언트로, 선언적으로 RESTful 웹 서비스를 호출할 수 있음
  • Eureka와 같은 서비스 디스커버리와 연동하여 동적으로 서비스 인스턴스를 조회하고 로드 밸런싱을 수행

FeignClient의 주요 특징

  • 선언적 HTTP 클라이언트: 인터페이스와 어노테이션을 사용하여 REST API를 호출할 수 있음
  • Eureka 연동: Eureka와 통합하여 서비스 인스턴스 목록을 동적으로 조회하고 로드 밸런싱을 수행
  • 자동 로드 밸런싱: Ribbon이 통합되어 있어 자동으로 로드 밸런싱을 수행

Ribbon이란?

  • 넷플릭스가 개발한 클라이언트 사이드 로드 밸런서로, 마이크로서비스 아키텍처에서 서비스 인스턴스 간의 부하를 분산
  • 다양한 로드 밸런싱 알고리즘을 지원하며, Eureka와 같은 서비스 디스커버리와 연동하여 사용

Ribbon의 주요 특징

  • 서버 리스트 제공자: Eureka 등으로부터 서비스 인스턴스 리스트를 제공받아 로드 밸런싱에 사용
  • 로드 밸런싱 알고리즘: 라운드 로빈, 가중치 기반 등 다양한 로드 밸런싱 알고리즘 지원
  • Failover: 요청 실패 시 다른 인스턴스로 자동 전환


서킷 브레이커 (Resilience4j)

서킷 브레이커란?

  • 서킷 브레이커는 마이크로서비스 간 호출 실패를 감지하고 시스템의 전체적인 안정성을 유지하는 패턴
  • 외부 서비스 호출 실패 시 빠른 실패를 통해 장애를 격리하고, 시스템의 다른 부분에 영향을 주지 않도록 함
  • 상태 변화 : Closed -> Open -> Half-Open

Resilience4j란?

  • 서킷 브레이커 라이브러리로, 서비스 간 호출 실패를 감지하고 시스템 안정성 유지

Resilience4j 주요 특징

  • 서킷 브레이커 상태 : Closed -> Open -> Half-Open 로 실패 관리
  • Fallback : 호출 실패 시 대체 로직을 제공하여 시스템 안정성 확보
  • 모니터링 : 서킷 브레이커 상태를 모니터링하고 관리할 수 있는 다양한 도구 제공


API Gateway

API Gateway란?

  • API Gateway는 클라이언트의 요청을 받아 서비스로 라우팅하고, 다양한 부가 기능을 제공하는 중간 서버
  • 클라이언트와 서비스 간 단일 진입점 역할을 하며 보안, 로깅, 모니터링, 요청 필터링 등을 처리

API Gateway 주요 기능

  • 라우팅 : 클라이언트 요청을 각 서비스로 전달
  • 인증 및 권한 부여 : 요청의 인증 및 권한 검증
  • 로드 밸런싱 : 여러 서비스 인스턴스 간 부하 분산
  • 모니터링 및 로깅 : 요청 및 응답을 로깅하고 모니터링
  • 요청 및 응답 변환 : 요청과 응답을 변환하거나 필터링

Spring Cloud Gateway란?

  • Spring에서 개발한 API Gateway로 클라이언트의 요청을 적절한 서비스로 라우팅하고 다양한 필터링 기능을 제공
  • Spring Cloud Netflix 패키지 일부로 MSA에서 널리 사용됨

Spring Cloud Gateway 주요 특징

  • 동적 라우팅 : 요청 URL 패턴에 따라 동적으로 라우팅
  • 필터링 : 요청 전후에 다양한 작업을 수행할 수 있는 필터 체인 제공
  • 모니터링 : 요청 로그 및 메트릭을 통해 서비스 상태 모니터링
  • 보안 : 요청의 인증 및 권한 검증
profile
모르면 알고 넘어가자

0개의 댓글

관련 채용 정보