[Beyond SW] Spring Cloud

이경민·3일 전

한화시스템 Beyond SW

목록 보기
40/40

Spring Cloud : MSA 구축하고 운영하는 데 필요한 다양한 기능 제공하는 Spring Framework 모음. 여러 개별 서비스가 서로 원활하게 통신하고 관리될 수 있도록 돕는 도구와 패턴 제공.

Eureka

서비스 등록 및 발견 서버
각 서비스는 Eureka 서버에 자신의 정보 등록, 다른 서비스는 이를 통해 필요한 서비스를 찾아 호출 가능. 클라이언트측 로드밸런싱과 장애감지 기능 제공.

클라이언트 요청과 API Gateway

  • 클라이언트가 서비스를 호출할 때 개별 서비스에 직접접근하지 않고 API Gateway를 통해 요청 보냄.
  • API Gateway는 msa에서 단일 진입점 역할을 함
  • 클라이언트는 각기 다른 마이크로서비스에 직접접근하지 않고 통합된 인터페이스를 통해 서비스 요청
  • API Gateway는 요청 라우팅(네트워크에서 통신 데이터를 보낼 경로를 선택하는 과정), 각기 다른 서비스로 분배하는 역할, 인증, 권한 부여, 로깅

Service Discovery

  • Eureka는 Service Discovery를 담당하는 구성 요소, 마이크로 서비스가 동적으로 변화할 수 있는 환경에서 서비스들의 위치를 추적하고 관리함
  • Eureka Server: 각 서비스 인스턴스들이 자신의 상태와 위치를 등록하는 중앙 관리 시스템.
  • Eureka Client: Service Instane A,B,C. 각 인스턴스는 시작 시 Eureka 서버에 자신 등록, 주기적으로 상태 Health Check, 그결과를 서버에 업데이트.-> Eureka 서버는 현재 실행중인 서비스의 위치와 상태를 실시간으로 파악함
  • 새로운 서비스 인스턴스 생성 or 기존 인스턴스 종료되면 Eureka 서버는 변화를 실시간으로 반영하여 API Gateway와 LoadBalancer가 올바른 서비스로 요청을 전달할 수 있게 도움

Load Balancer

: 서비스 간의 트래픽 분산 담당
클라이언트가 API Gateway 통해 요청 보내면 서비스 인스턴스 중 하나로 전달되어야함. 이때 로드 밸런서가 Eureka 서버에서 받은 정보를 바탕으로 적절한 인스턴스로 요청을 분배.
각 인스턴스의 상태(Health Status)를 주기적으로 체크하여 문제가 있는 인스턴스에는 트래픽을 보내지 않도록하여 시스템의 안정성 높임
부하가 특정 인스턴스에 치우치지 않도록 부하 분산 기능을 수행하여 전체 시스템의 성능 최적화

Service Instance

: 실제 비즈니스 로직 수행하는 역할
서비스 인스턴스 A,B,C는 각기 다른 포트에서 구동됨.
각 인스턴스는 고유의 포트 번호로 구동됨
클라이언트의 요청에 따라 API Gateway와 Load Balancer를 통해 서비스됨
마이크로서비스 환경에서는 인스턴스들이 확장 or 축소될 수 있음

전체적인 흐름

클라이언트가 특정 서비스를 요청하면 요청은 API Gateway로 전달됨
API Gateway는 요청된 서비스의 이름을 기반으로 Eureka 서버에서 해당 서비스의 인스턴스 정보를 조회
조회된 정보는 로드 밸런서에 전달됨.
로드밸런서는 각 서비스의 상태를 확인한 후 적절한 서비스 인스턴스로 요청 전달
서비스 인스턴스는 요청 처리. 그 결과를 API Gateway를 통해 클라이언트에게 반환

0개의 댓글