API 게이트웨이 (크리스 리차드슨)

This a translation of an article API Gateway originally written and copyrighted by Chris Richardson.
이글은 Chris Richardson가 작성하였으며, 저작권을 가지고 있는 API Gateway 글의 번역본입니다.

배경 (맥락)

마이크로서비스 패턴을 사용해 상품 상세 페이지를 구현하는 온라인 상점을 구축한다고 생각해보자. 상품 상세 사용자 인터페이스의 여러 버전으로 구현해야 한다.

추가적으로 온라인 상점은 제 3자 애플리케이션이 사용하는 REST API로 상품 상세 정보를 노출해야만 한다.

상품 상세 페이지는 상품에 대한 많은 정보를 보여준다. 예를 들어, POJO in Action의 Amazon.com 상세 페이지는 다음 정보를 보여준다.

마이크로서비스 패턴을 사용한 온라인 상점이기 때문에 상품 상세 데이터는 여러 개의 서비스로 퍼져있다. 예를 들어 보자.

결론적으로 상품 상세를 보여주는 코드는 이러한 서비스 모두에서 정보를 가지고 와야 한다.

문제

마이크로서비스 기반 애플리케이션의 클라이언트가 각각의 서비스에 어떻게 접근해야 하는가?

영향도

해결방법

모든 클라이언트의 단일 진입점으로 API 게이트웨이(API Gateway)를 구현한다. API 게이트웨이는 둘 중 하나의 방법으로 요청을 처리한다. 일부 요청은 단순하게 적절한 서비스를 찾아 프록시나 라우터 역할을 한다. 다른 경우에는 여러 서비스로 흩어져서 요청을 처리한다.

그림

많은 경우에 사용할 수 있게 만든 스타일의 API 보다 API 게이트웨이는 각 클라이언트에 맞춰 다양한 API를 노출할 수 있다. 예를 들어, Netflix API 게이트웨이는 클라이언트의 요건에 가장 잘 맞는 API와 함께 각 클라이언트가 제공하는 클라리언트에 특화된 어뎁터 코드를 실행한다.

API 게이트웨이는 보안을 위해 구현할 경우도 있다. 예를 들어, 요청을 수행하기 위해 권한이 있는 클라이언트인지 확인할 수 있다.

예시

Netflix API 게이트웨이

적용 결과

API 게이트웨이를 사용하면 다음과 같은 혜택을 볼 수 있다.

API 게이트웨이 패턴은 몇 가지 단점이 있다.

이슈:

예제

Netflix API 게이트웨이

관련 패턴

알려진 사례