오늘은 딥다이브 시간입니다. 😁 이번에 선택한 주제는 API Gateway와 Load Balancer입니다.
1. API Gateway란?
단어 |
설명 |
API |
Application Programming Interface. 컴퓨터나 소프트웨어를 서로 연결하는 것. |
Gateway |
네트워크 접속 장치. |
API Gateway |
컴퓨터나 소프트웨어를 서로 연결하는 접속 장치로, 클라이언트와 서버 간의 요청을 중앙에서 관리하고 제어하는 역할을 함. |
관련 용어 정리
- Application: 시스템 프로그램에 기능을 덧붙여 주는 소프트웨어.
- Programming: 작업을 수행하기 위해 작성된 코드의 집합.
- Interface: 서로 다른 시스템 간 정보나 신호를 주고받는 접점
2. 왜 API Gateway가 필요한가?
- 복잡성 해결: 클라이언트가 여러 서비스에 직접 접근하면 관리 비용이 증가.
- 효율성 향상: 요청 라우팅, 데이터 변환, 인증 등을 중앙에서 관리.
3. API Gateway 활용 경험
세금 계산 작업 사례
- 미국 주문 건 처리 시, Vertex 솔루션에 직접 연결하여 배송지(state, city, street)에 따라 세금을 조회.
- 문제:
- 배송지가 변경될 때마다 요청을 반복적으로 보내야 해서 응답 속도가 느림.
- 해결:
- API Gateway(OuterAPIService)를 활용해 요청 처리 작업을 중앙화.
- 만약 API Gateway가 없었다면?
- 데이터/요구사항이 변경될 때마다 프론트엔드 서비스를 재배포해야 함.
- 특히 팀 배포의 경우 프로젝트 빌드와 커밋된 소스 관리가 복잡해 긴급 배포가 번거로움.
4. Load Balancer란?
단어 |
설명 |
Load |
부하, 작업량. |
Balancer |
균형을 맞추는 시스템. |
Load Balancer |
네트워크 트래픽을 여러 서버로 균등하게 분배하여 서버 과부하를 방지하고 성능과 안정성을 유지. |
5. API Gateway와 Load Balancer 비교
항목 |
API Gateway |
Load Balancer |
작동 계층 |
애플리케이션 계층(OSI 7계층). |
네트워크 계층(OSI 4계층) 또는 7계층. |
주요 목적 |
요청 관리, 인증, 데이터 변환, 캐싱. |
서버 간 부하 분산 및 장애 대응. |
요청 라우팅 |
백엔드 서비스(마이크로서비스)로 전달. |
요청을 여러 서버에 균등 분배. |
부하 분산 |
일부 제공 가능하지만 주 목적 아님. |
주요 역할: 트래픽 분산. |
인증 및 보안 |
JWT, OAuth 인증 제공. |
인증 직접 제공하지 않음. |
6. API Gateway 활용 사례
보안과 안정성
- 토스와 같은 서비스에서는 종단 간 암호화를 통해 안전하게 요청 데이터를 전송.
- Gateway에서 요청 데이터를 복호화한 후 인증 및 권한 로직을 처리해 백엔드 서비스에 전달.
- 결과적으로 서비스는 인증 및 보안 로직에 신경 쓰지 않고 비즈니스 로직에 집중 가능.
유저 정보 처리 (Netflix Passport 구조 참고)
- 기존에는 각 서비스가 유저 API를 호출해 유저 정보를 가져옴 → 불필요한 중복 요청 발생.
- 개선: Gateway에서 유저 정보를 통합적으로 관리하여 중복 요청 제거.
- 유저 정보가 필요한 서비스는 Gateway를 통해 데이터를 효율적으로 조회.
API Gateway와 Load Balancer 통합 활용
구조 |
로드 벨런서가 앞에 있는 경우 |
로드 밸런서가 뒤에 있는 경우 |
트래픽 분산 |
게이트웨이 간 부하 분산 |
백엔드 서비스 간 부하 분산 |
보안 |
게이트웨이에 의존 |
게이트웨이가 요청을 필터링해 백엔드 보호 |
확장성 |
API 게이트웨이 확장 용이 |
백엔드 서비스 확장 용이 |
응답 시간 |
추가 라우팅으로 약간의 지연 발생 |
추가 라우팅 단계가 없어 상대적으로 빠름 |
장애 처리 |
게이트웨이 장애 시 로드 밸런서가 분산 처리 가능 |
게이트웨이 장애 시 전체 서비스 중단 위험 |
8. 왜 로그를 남겨야 하나?
결제 서비스 로그 예시
- 외부 결제 서비스(네이버페이, 카카오페이 등) 사용 시 결제 오류가 발생하면, 보낸 데이터와 반환값을 확인해야 문제를 해결할 수 있음.
- 로그를 남기지 않으면 데이터 검증 및 문제 분석이 어려움.
- 로그를 통해 문제가 발생한 시점을 추적하고, 빠르게 원인을 분석 가능.
결론
API Gateway와 Load Balancer는 서로 다른 역할을 수행하며, 통합적으로 활용하면 시스템의 확장성, 보안성, 안정성을 극대화할 수 있습니다. 특히 API Gateway는 클라이언트와 백엔드 간 데이터 처리의 중심으로, 인증, 데이터 변환, 로깅과 같은 작업을 효과적으로 처리하는 핵심 컴포넌트입니다. 딥다이브 시간을 통해 공부할 수 있어서 좋았습니다. 😊