Benefits and Drawbacks of an API Gateway
(API Gateway의 유익한 점과 문제점)

여러분이 기대한 대로, API Gateway를 사용하는 것은 유익한 점과 문제점이 있다. API Gateway를 사용함으로써 얻는 주요 장점은 어플리케이션의 내부 구조를 보호할 수 있다는 것이다. 클라이언트에서 특정 서비스를 호출해야 하는 것보다 더 간단하게 gateway와 통신할 수 있다. API Gateway는 클라이언트 종류에 따라 맞는 특화된 API를 제공한다. 이것은 클라이언트와 어플리케이션간의 round trip(왕복)을 줄여 준다. 그리고 클라이언트의 코드를 단순하게 한다.

API Gateway는 또한 문제점도 있다. API Gateway는 개발하고, 배포하고, 관리해야 하는 또다른 고가용성의 컴포넌트이다. 또한 API Gateway는 개발 병목지점이 되는 리스크도 안고 있다. 개발자들은 각각의 microservice의 endpoint를 노출시키기 위하여 API Gateway를 업데이트 해야 한다. 가능한한 가엽게 API Gateway를 업데이트할 수 있는 프로세스가 중요하다. 반면에 개발자들은 gateway를 업데이트하기 위해 줄서서 기다리기를 강요당할 것이다. 그러나, 이러한 문제점에도 불구하고 대다수 실제 상용 환경의 어플리케이션에서 API Gateway를 사용하는 것은 타당하다.

받은 트랙백이 없고, 댓글이 없습니다.

댓글+트랙백 RSS :: http://www.yongbi.net/rss/response/755

Using an API Gateway

일반적으로 API Gateway로 알려진 것을 사용하는 것이 훨씬 더 좋은 방법이다. API Gateway는 시스템으로 접속하는 단일 진입점 서버이다. Object-Oriented 디자인에서 Facade 패턴과 유사하다. API Gateway는 내부 시스템 아키텍처를 보호하고, 개별 클라이언트에 맞춰진 API를 제공한다. API Gateway는 Authentication(인증), monitoring, load balancing, caching, request shaping(요청 제어) and management(관리), static response handling(정적 응답 처리)를 책임지고 수행한다.

다음 그림은 아키텍처상에서 API Gateway가 어떻게 표현되는지를 보여준다.

사용자 삽입 이미지

API Gateway는 request routing, composition, protocol translation에 대해 완결적으로 수행한다. 클라이언트에서 하는 모든 요청들은 API Gateway를 통과하게 된다. 그리고 그 요청들은 적합한 micro service들에게 라우팅된다. API Gateway는 종종 하나의 요청에 대해 여러 개의 microservice들을 호출하고, 그 결과를 취합하여 응답을 제공할 것이다. API Gateway는 HTTP나 WebSocket과 같은 Web Protocol을 내부에서 사용하는 웹친화적이지 않은 프로토콜로 변환할 수 있다.

API Gateway는 개별 클라이언트에 Custom API를 제공할 수도 있다. 일반적으로 Mobile client에 대해서는 거친 API를 노출한다. 예를 들어, 상품 상세 정보 제공 시나리오를 생각해 보라. API Gateway는 모바일 클라이언트에서 한번의 요청으로 모든 상품의 상세 정보를 얻을 수 있는 하나의 endpoint(/productdetails?productid=xxx)를 제공할 수 있다. API Gateway는 그 요청을 처리하기 위해 다양한 서비스들(product info, recommendations, reviews, etc.)을 호출하고 그 결과를 조합한다.

API Gateway의 가장 좋은 예제는 Netflix API Gateway이다. Netflix streaming service는 televisions, set-top boxes, smartphones, gaming systems, tablets등등의 수백개의 서로 다른 종류의 다비이스에서 사용할 수 있다. 초기에 Netflix는 streaming service를 위해 임의의 크기(one-size-fits-all) API를 제공하려고 했다. 그러나 다양한 범위의 디바이스와 디바이스별 특정 요구사항 때문에 잘 동작하지 않는다는 것을 발견했다. 오늘날, Netflix는 device-specific adapter code를 실행하여 각각의 디바이스에 맞춰진 API르르 제공하는 API Gateway를 사용한다. Adapter는 일반적으로 평균 6~7개의 backend service를 호출하여 각 요청을 처리한다. Netflix API Gateway는 하루에 수십억건의 요청을 처리한다.

받은 트랙백이 없고, 댓글이 없습니다.

댓글+트랙백 RSS :: http://www.yongbi.net/rss/response/754