본문 바로가기
IT 지식

Choreography / Orchestration

by ballena 2023. 6. 10.

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

댓글