1. API Gateway란?
- 모든 서버로의 요청을 단일 지점(Gateway)를 거쳐 처리
- 공통된 로직, 인증 및 인가, 라우팅 등을 처리 가능
- 클라이언트는 각 서비스의 엔드포인트(URL) 대신 API Gateway로 요청을 보내게 되며, 요청을 받은 API Gateway는 설정에 따라 각 엔드포인트로 클라이언트를 대신하여 요청하고, 응답을 받으면 다시 클라이언트에게 전달하는 프록시(proxy) 역할
2. API Gateway의 주요 기능
인증/인가 및 토큰 발급
- 각 서비스마다 공통으로 구현되어야하는 필수 기능
- 각 서비스마다 인증/인가를 구현하는 것은 매우 비효율적이므로 API Gateway에서 공통된 부분을 효율적으로 처리
Ex) 각각의 서비스마다 Spring security 의존성을 추가하여 인증/인가 기능을 구현 - API 사용을 위한 토큰 발급 기능도 마찬가지로 API Gateway에서 처리
공통 로직 처리
- 인증/인가 외에도 여러 서비스에서 공통적으로 처리되어야 하는 기능이 존재
- 공통되는 기능을 각각의 서비스마다 구현을 하게 되면 코드 수정이 필요할 때, 각각의 서비스를 다 수정해야 하는 등 유지보수 측면에서도 매우 번거로워짐
- 따라서 공통적으로 사용되는 로직의 경우 API Gateway에서 처리하게 되면 중복 코드가 제거되며 유지보수에 용이
로드 밸런싱(Load Balancing)
- 대용량 처리 서비스에 있어서 로드 밸런싱은 필수적인 요소
- 기본적으로는 여러 개의 API 서버로 부하를 분산하는 기능이 주기능이지만, API 서버에 장애가 발생했을 때 이를 감지해서 로드밸런싱 리스트에서 빼고, 복구되었을 때 다시 로드밸런싱 리스트에 넣는 기능들이 필요
→ health-check
메디에이션 기능(Mediation)
- API 요청과 응답을 처리하는 과정에서 데이터를 변환하거나 라우팅하는 역할을 의미
- 클라이언트와 백엔드 시스템 간의 상호작용을 중재하여 서로 다른 형식의 데이터나 프로토콜을 연결, 필요한 로직을 추가해 통신이 원활하게 이루어지도록 도와줌
- Mediation이 수행하는 역할
- 데이터 변환 (Transformation)
- 요청 또는 응답 데이터를 변환하여 서로 다른 형식의 데이터를 맞춤
- Ex) 클라이언트가 JSON 형식의 데이터를 전송 / 백엔드는 XML을 요구
→ JSON을 XML로 변환해 전달
- 라우팅 (Routing)
- 요청을 특정 백엔드 서비스로 라우팅하는 작업
- 클라이언트 요청에 따라 서로 다른 백엔드 서비스로 요청을 보내거나, 여러 백엔드 서비스를 조합해 응답 구성 가능
- 프로토콜 변환 (Protocol Translation)
- 서로 다른 통신 프로토콜을 사용하는 시스템 간의 중계 역할
- Ex) 클라이언트는 REST를 사용 / 백엔드는 SOAP을 사용
→ API Gateway에서 프로토콜 변환을 수행
- 비즈니스 로직 적용
- 요청이나 응답에 대해 추가적인 비즈니스 로직 적용 가능
- Ex) 특정 필드를 추가하거나 제거하고, 데이터 형식을 조정하는 등의 작업을 수행 가능
- 결합 및 분할 (Aggregation and Split)
- 여러 백엔드 시스템에서 데이터를 가져와 하나의 응답으로 결합
- 또는 반대로 클라이언트의 요청을 여러 백엔드 시스템으로 분할하여 전송 가능
- 데이터 변환 (Transformation)
3. 상용화된 API Gateway
- Amazon API Gateway
- Kong Gateway
- Tyk
- KrakenD
- Spring Cloud Gateway
'MicroService Architecture' 카테고리의 다른 글
[Spring Cloud] Netflix Eureka 개념, 용어 정리 및 사용 예제 (0) | 2024.08.20 |
---|---|
Service Discovery 개념, 종류, 특징 (0) | 2024.08.20 |
Spring Cloud란? (0) | 2024.08.20 |
마이크로 서비스 설계 시 주의 사항 (0) | 2024.08.08 |
모놀리식 아키텍처 vs 마이크로 서비스 아키텍처 (0) | 2024.08.08 |