3.1. API 게이트웨이 구성
3.1.1. 시스템 구성
API 게이트웨이는 시티 데이터허브의 앞단에 위치하여 개별 데이터허브 서비스
의 API 접근을 제어/감독합니다. 또한 서비스 레지스트리(Service Registry)를 통해 데이터허브 서비스
를 검색하고 해당 모듈의 API를 호출할 수 있습니다. 서비스 레지스트리에 등록된 데이터허브 서비스
는 주기적으로 자신의 상태를 보고하여 API 호출 여부를 결정할 수 있습니다.
API 게이트웨이는 Spring Cloud Gateway (링크) 기반으로 동작하며, 데이터허브 모듈을 동적으로 관리하는 서비스 레지스트리는 Spring Cloud Netflix Eureka (링크) 기반으로 동작합니다. API 게이트웨이는 서비스 레지스트리를 통해 Eureka와 연동하여 손쉽게 데이터허브 서비스와 연결하고 개별 데이터허브 서비스
로 API 요청 전달 시 부하 분산이 가능합니다.
Note: 본 문서에서 설명하는
서비스
는 마이크로 서비스를 의미하며 데이터 허브를 구성하는 모듈입니다. 마이크로 서비스 단위로 서비스 레지스트리에 등록하며, API 게이트웨이에서 API 요청을 라우팅합니다.
Note: 쿠버네티스 및 Service Mesh 등의 기술 도입도 고려하였으나, 온프레미스(on-premise)로 서버에 직접 소프트웨어를 구성하는 지자체의 환경을 고려하여 마이크로서비스 개념을 도입했습니다.
3.1.2. 네트워크 구성
API 게이트웨이 모듈이 제공하는 기능을 기준으로 API 게이트웨이와 서비스 레지스트리로 구성됩니다. 부하 분산 및 서비스 가용성을 위해 API 게이트웨이를 다중 클러스터로 구성하고, API 게이트웨이로의 단일 접근을 위하여 API 게이트웨이 앞단에 로드밸런서(예: HA Proxy, L4 등)을 구성을 권장합니다. 아래 그림은 권장 구성을 하드웨어에 배포하는 예시입니다.
API 게이트웨이에 접속하는 관리자 포털, 마켓플레이스 포털 등 데이터허브 기반 어플리케이션은 아래 그림과 같이 네트워크를 구성할 수 있습니다.
3.1.3. 소프트웨어 스택
API 게이트웨이의 소프트웨어 스택은 아래와 같으며 Spring Boot 및 Spring Cloud Gateway를 기반으로 동작합니다.