MSA 아키텍처에서 전체 서비스를 구성하는 마이크로서비스 제어 방식으로 제시되는 2가지 방법.
Choreography
중재자 없이 각 기능(마이크로서비스)이 알아서 소통하는 방식
각 마이크로서비스가 이벤트 브로커를 통해 소통한다.
-> 각자 자신에게 필요한 다른 기능의 이벤트를 구독한다.
-> 자신(서비스)이 동작/기능을 수행하면 그 결과를 이벤트로 Publish한다.
-> 구성 요소(새로운 서비스)를 추가할 때마다 개발자가 직접 이벤트의 구독/발행을 설정해줘야 한다.
-> 개발자 입장에서 이해하기 어려움
구성 예시
서비스를 구성하고 있는 기능 1과 기능 2가 있다고 가정
-> 기능 1의 출력값을 기능 2의 입력값으로 사용하는 구성
기능 2에서 기능 1을 구독하고, 기능 1에서 출력값이 발생하면 기능 1이 이벤트 발행
-> 기능 2는 발행된 이벤트를 인지하고 기능 1의 출력값을 받아 작업 수행
Orchestration
중재자 서비스를 두고 여러 기능을 조율하는 방식
-> 기능 제공 시 어떤 구성 요소(마이크로서비스)를 어떤 순서로 호출해야 하는지 중재자 서비스가 알고 있어야 한다.
-> 구성 요소가 증가하면 서비스 간 복잡도는 증가하지만, 개발자 입장에서는 이해하기 쉽다.
일반적으로는 Logic이 복잡할 경우는 Orchestration, 복잡하지 않을 경우에는 Choreography를 권장한다.
방법론이라고 해서 무조건 딱 하나를 정해야 하는 것은 아니고, 적당히 섞어서 쓴다.
구성 예시
서비스를 구성하고 있는 기능 1과 기능 2가 있다고 가정
-> 기능 1의 출력값을 기능 2의 입력값으로 사용하는 구성
기능 1에서 출력값이 발생하면 오케스트레이션 서비스가 해당 출력값을 기능 2로 라우팅
'IT 지식' 카테고리의 다른 글
GDPR (0) | 2023.06.10 |
---|---|
CAPEX / OPEX (0) | 2023.06.10 |
게임 아키텍처 : 비동기/지속/세션 (0) | 2022.11.28 |
Dead Reckoning (0) | 2022.11.28 |
Lag Compensation (0) | 2022.11.28 |
댓글