Moleculer API Gateway는 아래 원칙을 기반으로 고안되었습니다.
분산 시스템안에서 유동적으로 작동합니다.
Persistence Layer를 갖지 않습니다.
"분산 서비스 -> API" 종속성을 최소화합니다.
서비스 API 스키마는 JSON 텍스트입니다.
분산 서비스 호출시 인증 등의 컨텍스트를 파라미터로 맵핑하도록 유도합니다.
확장 가능한 컴포넌트 패턴을 지향합니다.
프로토콜 플러그인은 서버, 미들웨어, 스키마, 핸들러의 모든 부분을 확장합니다.
접근 제어 정책은 프로토콜별 엔드포인트가 아닌 액션, 이벤트에 적용됩니다.
네트워킹 및 복원 패턴에 관여하지 않습니다.
분산 서비스와 API Gateway는 어댑터(Broker)로 연결됩니다.
분산 트랜잭션을 유도하거나 관여하지 않습니다.
아울러 분산 서비스 및 서비스 브로커에서 기대되는 패턴은 다음과 같습니다.
분산 서비스의 프로시저는 무상태를 지향합니다.
프로시저는 인증 컨텍스트를 고려하지 않습니다.
프로시저는 접근 제어를 고려하지 않습니다.
프로시저는 가능한 멱등성을 갖도록 고려됩니다.
서비스 브로커는 분산 시스템을 위한 복원 패턴을 구성합니다.
회로차단기
격벽
재시도
요청 큐
이하에서 서비스 API 스키마는 분산 환경의 부분적인 API 스키마를 의미합니다. Gateway API 스키마는 Gateway에서 통합된 API 스키마를 의미합니다.
서비스 API 스키마는 JSON 텍스트로 Gateway에 전달됩니다. 스키마 데이터의 직렬화 및 비직렬화는 MSA 라이브러리에 달렸습니다. 아래 예시에서는 Node.js 환경을 기준으로 서비스 API 스키마를 JavaScript 객체로 표기합니다.