API Gateway 정리

이글은 개인적인 블로그 글이며 기초적인 글은 생략되고 진행될수 있음을 말씀드립니다.


API Gateway란

API 게이트웨이는 API 클라이언트와 서비스 사이에 프록시 처럼 위치하여 클라이언트로 부터 온 API 요청을 받아서, 서비스로 라우팅 하는 역할을 한다. 각각 서비스에서 구현해야 하는 기능을 API 게이트웨이 단에서 통합함으로써, 서비스 개발을 간편한게 할수 있고, 메세지 포멧 변경이나 플로우 컨트롤 같은 고급 기능을 사용하여 기존 API 호출에 추가적인 기능을 더 할수 있는 유연성을 가질수 있게 된다.

API Gateway의 대표적 기능 5가지

인증

API 호출할때, API 호출에 대한 인증을 수행한다.

  • 서버간 API 통신일 경우에는 API Key 발급
  • 다수의 클라이언트간의 통신일 경우에는 사용자 게정 인증(Oauth) 이후 JWT 토큰 발급

모니터링, 로깅

API 호출에 대한 모니터링을 통해서 API 별 모니터링을 할수 있다.

  • API별 응답시간, 장애율, 호출 횟수를 모니터링
  • API별 호출 로깅
  • Metering & Charging API를 대외로 서비스 하는 경우 API의 호출량에 따라 과금이 붙는 경우에는 호출 횟수를 통제할때 필요하다.

메시지 플로우 컨트롤

메시지 플로우 컨트롤은 클라이언트로 부터 들어온 메시지의 흐름을 바꾸는 방법, 같은 API라도

  • 카날리 배포 : 버전에 따라서 구버전과 새버전으로 트래픡을 9:1로 라우팅 하는 방법
  • 리전 변경 : 들어온 API의 클라이언트의 위치에 따라 미국이나 한국에 있는 서비스로 라우팅하는 로직

메시지 변경

헤더에 있는 내용을 바디로 붙이거나, 다른 API를 호출해서 응답메시지를 두 API를 합해서 응답을 해주는 기능등을 구현할수 있다.

  • 프르토콜 변환 : SOAP/XML 기반의 메세지를 REST로 변환하는 기능
  • 호출 패턴 변환 : API 서버가 큐를 기반으로한 비동기 메시지 처리 패터일때, API 게이트웨이에서 이를 동기화 처리 패턴으로 변경해서 클라이언트 입장에서 동기로 호출을 하면 API서버에서는 비동기로 호출하느 형태와 같이 호출 패턴을 변경할수 있다.

오케스트레이션 (매쉬업)

API 클라이언트가 한번 호출할때 동시에 여러개의 API를 호출하도록 API 게이트웨이에서 호출 해주는 방식

  • 클라이언트에서 상품 API를 호출하면 API 게이트웨이가 상품구매,상품 추천 API를 호출해서 상품 구매완료 메시지와 함께 추천 상품 리스트를 한번에 리턴하는 방식이다.
© 2020 comwls, Built with Gatsby