Gateway

Gateway 란?


여러 개로 쪼개진 Microservices들은 아래 그림과 같이 자신들의 API을 가지게 됩니다. 
이로 인해 고객들에게 하나의 어플리케이션과 같이 행동하는 것처럼 보이기 위해 여러 개의 API들을 감싸줘야 하는(wrap) 필요성이 생기는 동시에 Open API의 특성상 보안 관련 issue에서도 자유로울 수 없습니다. 
이러한 문제점들을 해결해 주는 역할을 하는 것을 API Gateway라 합니다. 
API Gateway는 API 앞에 위치하게 되며 microservices 그룹을 위한 하나의 입구(single point of entry)와 같이 행동합니다.

API Gateway을 사용함으로써 발생하는 주요한 이익은 Gateway가 개발자들이 어플리케이션의 내부 구조를 캡슐화(구현 내용을 외부에 감추는 것으로, 정보 은폐의 장점을 가짐) 할 수 있게 해준다는 것입니다.

Gateway 도입시 이점


사용 전
Gateway을 사용하지 않은 방식으로, 3가지 측면에서 문제점이 발생했습니다.
고객/임직원 측면에서 보면, 보안/신뢰성을 명목으로 과도한 인증 수단을 요구하거나 선택권을 무시해 불편하고, 개발자 측면의 경우 새로 어플리케이션을 개발할 때마다 인증방식을 개발해야 합니다.
마지막으로 기업 측면에서는 비슷한 인증 수단을 개발하는데 중복 투자가 발생하게 됩니다.

사용 후
Gateway와 Portal을 이용하여 문제점을 개선한 것을 보여줍니다.
Portal은 API와 그에 관한 문서들이 교류되는 공간으로, 개발자들은 API와 그와 관련된 문서들을 업로드하고, 이 API을 필요로 하는 써드파티 업체들은 이들을 다운로드합니다.
개발자는 개발자 Portal에서 새로운 어플리케이션에 적합한 여러 인증 API을 선택하고 해당 인증 API을 호출하는 것만으로 인증 모듈 구현을 끝내고, 새로운 인증 솔루션이 도입되는 경우 해당 인증 솔루션을 인증 API Gateway와 연동/구축한 후 해당 인증 API을 개발자 포탈에 등록함으로써 이후 필요한 어플리케이션에서 활용 가능하도록 합니다.
이를 통해 고객들은 다양한 인증 수단 중 선택이 가능하게 되고, 개발자는 새로운 어플리케이션마다 인증방식을 개발할 필요가 없어지게 되고, 기업 입장에서도 중복 투자할 필요성이 없어지게 됩니다.