목적
API Gateway의 목적은 클라이언트와 백엔드 서비스 간의 중간 계층 역할을 하면서 다양한 기능들을 수행하여 시스템의 효율성과 보안성을 높이는 것
특징
1. 단일 진입점 제공 (Single Entry Point)
- 클라이언트는 여러 백엔드 서비스를 직접 호출하지 않고, API Gateway 하나만 호출하면 됨.
- 마이크로서비스 아키텍처에서 특히 유용.
2. 요청 라우팅 (Request Routing)
- 들어오는 요청을 적절한 백엔드 서비스로 라우팅
- 예: /user → 사용자 서비스, /order → 주문 서비스
3. 보안 관리
- 인증(Authentication), 인가(Authorization)를 중앙에서 처리
- JWT 토큰 검사, API 키 체크 등
4. 로깅 및 모니터링
- 요청 로그를 수집하거나, 트래픽 분석 등 관측 기능을 제공
- 성능 모니터링, 트래픽 제어 등도 가능
5. 요청/응답 변환
- 요청 또는 응답의 포맷을 변환 (예: XML ↔ JSON)
- 백엔드는 단순하게 유지하고, 클라이언트 맞춤 응답 제공 가능
6. 로드 밸런싱 및 장애 처리
- 여러 백엔드 인스턴스 사이에서 트래픽 분산
- 장애 발생 시 다른 인스턴스로 우회
7. 속도 제한 및 트래픽 제어 (Rate Limiting)
- 남용 방지를 위해 호출 빈도 제한
- 과도한 요청에 대한 보호
8. 캐싱
- 빈번한 요청 결과를 캐싱하여 응답 속도 개선 및 서버 부하 감소.
API Gateway는 다음과 같은 역할을 하며 시스템을 더 안전하고, 효율적이며, 확장 가능하게 도움을 준다.
API Gateway의 부하 분산
1. API Gateway가 부하 병목이 될 수 있는 이유
- 모든 요청을 한 곳(API Gateway)으로 집결시키므로, 트래픽 집중이 발생.
- 트래픽이 급증하면, API Gateway가 요청을 처리하는 데 시간이 오래 걸릴 수 있음.
2. 부하를 분산시키는 방법
2.1 수평 확장(Scaling Out)
- API Gateway 서버를 여러 대 운영하고, 그 앞단에 로드 밸런서(Load Balancer) 를 두어 부하를 분산
- 예: Nginx, AWS ALB, Google Cloud Load Balancing 등
2.2 캐싱(Caching) 활용
- 자주 요청되는 결과를 캐싱하면, Gateway가 각 요청마다 백엔드까지 직접 호출할 필요가 없어짐
- 응답 속도 향상 및 서버 부하 감소
2.3 비동기 처리(Async)와 메시지 큐(Message Queue)
- 어떤 요청은 즉시 처리가 필요하지 않을 수 있습니다(예: 이메일 전송, 비동기 트랜잭션 등)
- 메시지 큐(Kafka, RabbitMQ 등)를 통해 처리할 수 있도록 하여 Gateway가 동기 처리 부담을 완화
2.4 서버리스(Serverless) 사용
- AWS API Gateway + Lambda 조합 등으로 필요한 시점에만 자동 확장이 가능하도록 설계
- 초당 수백만 건의 요청도 일정 수준까지는 감당하도록 구성 가능
2.5 API Gateway 경량화
- Gateway 레이어에 지나치게 많은 기능(인증/인가, 변환, 로깅 등)을 몰아넣으면 부하가 커지기에 잘 고려해야함
- 꼭 필요한 기능만 Gateway에서 처리하고, 나머지는 별도 마이크로서비스 혹은 다른 계층에서 담당하게 하여 Gateway의 역할을 경량화
3. 단일 장애 지점을 피하는 고가용성(HA) 구성
- API Gateway가 멈추면 모든 서비스가 사실상 중단될 가능성이 있음
- 따라서, 멀티 AZ(가용 영역), 멀티 리전 또는 다중 Gateway 인스턴스 구성을 통해 장애 발생 시에도 서비스 중단이 최소화되도록 하는 구성이 필요
4. 결론
- API Gateway가 모든 트래픽의 단일 진입점으로 동작하므로, 제대로 설계하고 확장 전략을 마련하지 않으면 병목 및 장애 지점이 될 수 있다.
- 하지만 수평 확장, 캐싱, 비동기 처리, 고가용성 구성 등을 통해 충분히 분산 설계가 가능함
- 즉, 잘못 설계하면 병목이 되지만, 올바른 인프라/아키텍처 구성과 모니터링을 통해 API Gateway의 이점(중앙 집중 관리, 보안, 모니터링 등)을 극대화하면서도 부하 문제 완화가능
'공부 > CS' 카테고리의 다른 글
워터마크 기술 개념 (0) | 2025.03.03 |
---|---|
아키텍처 간략 정리 (0) | 2025.01.05 |
언어별 연산 속도 (0) | 2024.12.30 |
Context Switching(문맥 교환) (0) | 2024.09.19 |
해시 - 솔트치기 (0) | 2024.08.25 |