<aside>
📌 Gateway
</aside>
- 성벽으로 둘러쌓인 성에 들어갈 수 있는 유일한 관문
- 나가는 사람들과 들어가는 사람들 모두 관문을 거쳐야 한다.
- 외부에서는 성벽 내부의 구조물들을 볼 수가 없다.
<aside>
📌 API Gateway
</aside>
- 관문과 비슷한 역할을 하는 소프트웨어 디자인 패턴
- 인증 및 권한 부여, 요청과 응답 변경, 요청수 제한, 모니터링 및 로깅 등 공통 작업을 수행
- 클라이언트와 서비스 간의 통신을 단순화 한다.
- 외부에서는 마이크로서비스 내부의 구조를 자세하게 알 수가 없다.
<aside>
📌 클라이언트와 서비스들
</aside>
- 마이크로서비스 환경에서 여러 구성요소가 별도의 서버와 주소를 가질 수가 있다.
- 클라이언트에서 여러 구성요소의 주소를 직접 알아야 하고 직접 각각의 서버에 요청을 보낸다.
- 하나의 객체에서 여러 객체를 참조하는 형태와 비슷하다.
- 특정 서비스에 장애가 발생한 경우
- 서비스의 장애가 클라이언트로 전파되게 된다.
- 서비스가 복구되기 전까지 클라이언트가 동작하지 않고 재시도 로직으로 인해 복구되기 전에 큰 부하를 줄 수 있다.
- 특정 서비스들이 통합되거나 삭제된 경우
- 클라이언트에서 직접 컴포넌트를 추가하고 합치는 과정이 필요하다.
<aside>
📌 클라이언트와 API Gateway
</aside>