개발
API Gateway
senyalog
2025. 1. 5. 15:36
1. API Gateway란?
- Netflinx Zuul / AWS API Gateway / Kong / Spring Cloud Gateway /... 여러 상품들이 존재
- 클라이언트의 요청을 적절한 서비스로 전달
- 인증, 보안, 모니터링 등 여러 서비스에서 공통적으로 처리되어야하는 문제를 한 곳에서 해결
- 클라이언트와 API를 제공하는 서버 사이에서 클라이언트 요청을 적절한 서비스로 라우팅하고 인증 보안 모니터링, 탄력성과 같은 횡단 관심사를 중앙에서 일관되게 처리
- 비즈니스와 무관하게 서버간의 횡단 관심사를 처리 (api gateway pattern과의 차이)
2. API Gateway가 왜 필요한가?
- 모놀리틱 -> MSA로 전환하면서 클라이언트가 여러 시스템과 직접 상호 작용을하게됨
- 클라이언트 의존성 증가로 인한 확장성이 저하됨
- 불필요한 정보가 클라이언트에 노출이 될 수 있음(특정 비즈니스에 의존하는 api를 제공하지 않으려함)
- 클라이언트에 비즈니스 정책이 노출 될 수 있음
2-1. API gateway pattern (!= API gateway) --> 프론트 서버
- 도메인 시스템과 클라이언트 간 의존 제거가능
- 필요한 정보만 전달가능
- 비즈니스 정책이 반영된 결과만 전달
- 클라이언트의 요구사항을 전담하는 서버 = 프론트 서버
3. 구조
- Host 기반으로 라우팅 서비스 결정
- Best matching pattern(어떤 필터를 적용할지 결정)
4. 기능
- 인증 (단일 실패 지점) 해결
- JWT의 도입 - 각 서비스에서도 인증에대한 키도 관리해야함. 키가 유출 및 변경 시, 타 서비스에도 영향
- API Gateway에서 인증을 일차 처리하고 passport를 통해 백엔드 서비스에 전달
- 인증 서비스에 문제가 있어도, 시그니쳐를 통해 최소한의 인증을 통해 해결할 수 있음
- 라우팅
- ip 대역을 활용하여 라우팅하여 Test 환경으로 연결가능
- 운영 테스트, 타켓팅 등 다양하게 사용가능
- 보안
- 흐름제어(탄력성)
- 장애 및 부하에서 서비스를 안정적으로 유지
- 요청을 제한
- circuit breaker
- retry , fallback, ...