-
[실시간 채팅 서비스#4] API-Gateway개발 일지 2024. 10. 17. 13:27
API-Gateway
API-Gateway는 MSA가 떠오르며 그와 함께 필요성에 의해 탄생한 솔루션이다.
API서버 앞단에서 모든 API 서버들의 엔드포인트를 단일화하여 묶어주고, API에 대한 인증/인가 기능에서 부터 메세지에 따라서 여러 서버로 라우팅 하는 고급기능 까지 많은 기능을 담당할 수 있다.API-Gateway는 다양한 활용 방법이 존재한다.
이 글에서 모두 설명하지는 않고, 실제로 Potatalk 프로젝트에서 적용한 방식과 그 외의 기능을 간략히 소개한다.
API 서버들의 엔드포인트를 단일화
MSA 아키텍처는 각각의 마이크로서비스 마다 별도의 엔드포인트에서 실행된다.
API-Gateway를 적용하지 않을 경우, 클라이언트는 그러한 마이크로서비스의 정보를 확인해야 하는 번거로움이 있다.
API-Gateway를 사용하면 하나의 엔드포인트에서 요청을 수신하고, 요청 경로를 읽어 매치되는 마이크로서비스에 라우팅한다.예를들어 Client가 8000/MS1 경로로 요청을 보냈다면, API-Gateway는 그 요청을 수신하고 경로를 확인하여 매칭되는 MS1 서버로 라우팅한다.
추가적으로 외부로 노출시킬 마이크로서버의 API를 선택하여, 노출 시킬 필요가 없는 API를 감출수도 있다.
인증/인가 및 공통 로직 처리
모든 마이크로서비스가 API-Gateway를 거치기 때문에, 공통 로직을 처리하는 것에 매우 유리하다.
그 대표적인 예시가 바로 인증/인가이다.간단한 예시를 보자.
Client가 인증 요청을 보내면 API-Gateway는 OAuth 서버에 라우팅한다.
OAuth 서버는 인증 정보를 확인하고, 올바를 경우 token을 발급한다.Client는 발급 받은 토큰을 헤더에 담아 다음 요청에 전송한다.
API-Gateway는 인가 프로세스를 거쳐 전송 받은 토큰을 검증하고, 문제가 없을 경우 요청한 API에 대한 권한을 승인하여 라우팅이 이루어진다.
이 과정에서 token에 설정된 권한에 따라 API 사용 권한을 제한하는 사용법도 존재한다.
그 외에도 API-Gateway는 다양한 방식으로 활용될 수 있다.
- API 서버로의 로드 밸런싱
- 메세지 또는 헤더 기반 라우팅
- 메디에이션(Mediation)
- 클라이언트가 제공한 데이터와 API 서버가 원하는 형태가 다를 때, 이를 API 서버가 원하는 형태로 변환하는 기능이다.
- 어그레게이션(aggregation)
- 하나의 워크플로우를 위해 복수의 API가 동작할 때, 이 복수의 동작을 하나의 API로 묶는 작업을 말한다.
- 로깅 및 미터링
'개발 일지' 카테고리의 다른 글
[실시간 채팅 서비스#5] Kafka vs RabbitMQ 성능 비교 - 실시간 WebSocket 메시징 테스트 (0) 2025.04.17 [실시간 채팅 서비스#3] WebSocket + STOMP + Pub/Sub으로 실시간 채팅 구현 (0) 2024.10.07 [실시간 채팅 서비스#0] 타임라인 (0) 2024.09.20 [실시간 채팅 서비스#2] 설계 (1) 2024.09.01 [실시간 채팅 서비스#1] 개인 프로젝트 시작 (0) 2024.08.21