grep

Engineering

API Gateway 소개 (TOAST Service 들여다 보기)

NHN

2019년 9월 6일

원문에서 보기 ↗

API Gateway 란?

최근 서비스는 마이크로서비스 아키텍처 형태로 독립적인 기능을 수행하는 작은 단위의 서비스로 나누어 개발하고 있습니다. 작은 단위의 서비스로 분리함에 따라 서비스의 복잡도를 줄일 수 있으며, 변경에 따른 영향도를 최소화하면서 개발과 배포를 할 수 있다는 장점이 있습니다. 하지만, 여러 서비스의 엔드포인트를 관리해야 하는 어려움이 있으며 각 서비스의 API에서 공통적으로 필요한 기능을 중복으로 개발해야 하는 문제가 있습니다.

API Gateway를 이용하면 통합적으로 엔드포인트와 REST API를 관리 할 수 있습니다.

모든 클라이언트는 각 서비스의 엔드포인트 대신 API Gateway로 요청을 전달합니다.

API Gateway는 사용자가 설정한 라우팅 설정에 따라 각 엔드포인트로 클라이언트를 대리하여 요청하고 응답을 받으면 다시 클라이언트에게 전달하는 프록시 역할을 합니다.

그뿐만 아니라 API Gateway는 엔드포인트 서버에서 공통으로 필요한 인증/인가, 사용량 제어, 요청/응답 변조등의 기능을 플러그인 형태로 제공하고 있습니다. 플러그인을 사용하면 각 엔드포인트 API 서버가 구현하지 않아도 되기 때문에 개발자 입장에서는 개발 비용을 줄일 수 있습니다.

TOAST API Gateway 살펴보기

TOAST API Gateway는 크게 2가지 개념으로 엔드포인트를 관리하고 있습니다.

API Gateway 생성하기

예시: 블로그 서비스

다음과 같이 블로그 서비스는 3개의 엔드포인트로 서비스 구성되고 있다고 가정합니다. 1_main.png

blog-account 도메인 생성

API Gateway를 생성하기 위해서는 가장 먼저 도메인을 생성해야 합니다. 3개의 서비스 중 account 서비스의 도메인 생성 예제입니다.

2.png

blog-account 엔드포인트 생성

엔드포인트를 생성하여 API Gateway를 통해 제공할 REST API를 설정합니다. 3.png

blog-account 배포

4.png

플러그인

5.png

API Gateway가 클라이언트로 부터 요청을 전달받으면 설정된 플러그인의 속성 그룹 순서대로 플러그인이 동작합니다.

Access Control

IP ACL
사용량 제한(Usage Limit)
CORS(Cross-Origin Resource Sharing)

Authentication

사전 호출 API (Pre-call API)
HMAC, JWT

Custom Plugin

Modify Header
URL Rewrite
사용자 정의 응답 (User-defined Response)

통계

API Gateway 콘솔> Dashboard 에서 각 도메인별 API 통계를 확인할 수 있습니다.

6.png API 호출 성공 수(HTTP 400미만), 실패 수(HTTP 4XX, 5XX) 그리고 평균 응답시간(ms)과 아웃바운드 네트워크 트래픽를 확인할 수 있습니다. 통계를 통해 특정 엔드포인트의 REST API의 이상 동작이나 품질을 쉽게 확인할 수 있습니다.