# API Gateway 란 ?
최근 서비스는 MSA 형태로 독립적인 기능을 수행하는 작은 단위의 서비스로 나누어 개발하고 있다. 작은 단위의 서비스로 분리함에 따라 서비스의 복잡도를 줄일 수 있으며, 변경에 따른 영향도를 최소화하면서 개발과 배포를 할 수 있다는 장점이 있다.
하지만, 여러 서비스의 엔드포인트를 관리해야 하는 어려움이 있으며 각 서비스의 API에서 공통적으로 필요한 기능을 중복으로 개발해야 하는 문제가 있다. API Gateway를 이용하면 통합적으로 엔드포인트와 REST API를 관리 할 수 있다. API 게이트웨이는 API서버 앞단에서 모든 API 서버들의 엔드포인트를 단일화하여 묶어주고 API에 대한 인증과 인가 기능에서 부터 메세지에 따라서 여러 서버로 라우팅 하는 고급기능 까지 많은 기능을 담당할 수 있다.
# API Gateway의 주요 기능
모든 클라이언트는 각 서비스의 엔드포인트 대신 API Gateway로 요청을 전달하고 API Gateway는 사용자가 설정한 라우팅 설정에 따라 각 엔드포인트로 클라이언트를 대리하여 요청하고 응답을 받으면 다시 클라이언트에게 전달하는 프록시 역할을 한다.
또한 API Gateway는 엔드포인트 서버에서 공통으로 필요한 인증/인가, 사용량 제어, 요청/응답 변조등의 기능을 플러그인 형태로 제공하고 있고 플러그인을 사용하면 각 엔드포인트 API 서버가 구현하지 않아도 되기 때문에 개발자 입장에서는 개발 비용을 줄일 수 있다.
1. 인증/인가에 관련된 기능
API 게이트웨이의 가장 기본적인 기능은 API 에 대한 인증과 인가 관련 기능이다. 인증은, API 를 호출하는 클라이언트에 대한 identity(신분)를 확인 해주는 기능이고, 인가는 클라이언트가 API를 호출할 수 있는 권한이 있는지를 확인해주는 기능이다.
쉽게 이야기 하면 내가 페이스북 계정을 가지고 있는 사용자가 맞는지 , API 호출시 어느 권한 (일반사용자, 관리자 권한)까지 호출할 수 있는지를 판단하여 API 호출을 허가하는 기능이라고 볼 수 있다.
2. API 라우팅
API 게이트웨이에서 다음으로 유용한 기능중의 하나가 API 호출을 라우팅 하는 기능이다. 같은 API라도 사용하는 서비스나 클라이언트에 따라서 다른 엔드포인트를 이용해서 서비스를 제공하거나, 데이터 센터가 여러개일때, 데이터 센터간의 라우팅등을 지원하는 기능이다.
# API Gateway 오픈소스 종류
- Kong Gateway
- Apache APISIX
- Tyk
- Ocelot
- Goku
- Express Gateway
- Gloo
- KrakenD
참고 :
'IT 용어정리' 카테고리의 다른 글
GitLab 깃랩 (0) | 2021.09.30 |
---|---|
Service Mesh (서비스 메시) (0) | 2021.09.29 |
API (Application Programming Interface) (0) | 2021.09.28 |
Telemetry (텔레메트리) (0) | 2021.09.28 |
Backing Service (백엔드 서비스) (0) | 2021.09.28 |