- Service Registry 기능을 할 Eureka Server 가 최초에 기동된다.
- Service Registry 서버인 Eureka Server 에 등록될 서비스들이 기동된다. 여기서 등록된 서비스는 Eureka Client 라고 한다.
- Eureka 서버는 자신에게 등록된 Eureka Client 에게 30초마다 Ping을 보내며 Health Checking을 수행한다.
만약 30초마다 보내는 Heart Heat가 일정 횟수 이상으로 동작되지 않으면 Eureka Server는 해당 Client를 삭제한다.- Eureka는 단지 서비스의 위치만을 표현하는 역할로 보통 Spring Cloud Gateway나 Netflix Zuul 과 같은 Gateway 서비스나 Ribbon 과 같은 클라이언트 사이드 로드밸런서와 함께 동작한다.
MSA는 큰 서비스를 잘게 쪼개어 개발/운영하는 아키텍쳐이다. 하나의 큰 서비스는 여러 작은 서비스로 나누어지며, 만약 이를 클라이언트에서 서비스를 직접 호출하는 형태라면 다음과 같은 문제점이 생길 수 있다.
각각 서비스마다 인증/인가 등 공통된 로직 구현
API 호출을 기혹하고 관리하는데의 어려움
클라이언트에서 여러 마이크로 서비스에 대한 번거로운 호출
내부의 비즈니스 로직이 드러나 보안의 취약
API gateway는 API 서버 앞단에 모든 API 서버들의 엔드포인트를 단일화 해주는 또 다른 서버이다. API 에 대한 인증과 인가 기능을 가지고 있고, 메시지 내용에 따라 어플리케이션 내부에 잇는 마이크로 서비스로 라우팅 하는 역할을 담당
특히, eureka로 등록한 서비스들은 랜덤 포트번호를 가지도록 하였는데 계속 바뀐 포트번호를 다른 서비스에서도 알고있어야 하기 때문에 수정하고 다시 빌드하고 배포하는 과정이 필요하다. 많은 불편함을 가지기 때문에 모든 마이크로 서비스의 포트를 통일하는 과정이 필요했고 이런 문제의 해결 방안이 Spring Cloud gateway이다.
단일 진입점을 두어 필터를 이용해 인증과 로그 등을 쉽게 다를 수 있음. 필자의 프로젝트의 경우 AuthorizationHeaderFilter 를 두어 헤더 토큰값 인증을 수행하는 filter를 적용함.
https://wonit.tistory.com/495
https://velog.io/@tedigom/MSA-제대로-이해하기-3API-Gateway-nvk2kf0zbj