반응형
분산된 서비스 환경에서 도메인에 특정한 작업을 수행하고, 그와 관련된 부수적인 문제를 처리하기 위해 둘 이상의 분산된 서비스를 하나의 WorkFlow(워크플로)로 조합하는 방법을 알아본다. WorkFlow관리 방법에는 크게 오케스트레이션(Orchestration) 패턴과 코레오그래피(Choreography) 패턴이 있다. MSA에서 보상트랜잭션 관리를 위한 Saga에서 얘기하는 오케스트레이션, 코레오그래피 패턴과 동일하다.
1. 오케스트레이션(Orchestration) 패턴
- 오케스트레이터(중재자)를 활용해서 중앙에서 워크플로 상태, 선택적 로직, 에러 처리, 알림 등 워크플로를 관리하는 방법
- MSA에서는 워크플로당 오케스트레이터를 하나씩 두는 것이 일반적 임
- 경계조건과 에러 조건 등이 복잡한 워크플로 모델링 시 적합
장점 | 단점 |
워크플로 중앙화 - 복잡도가 클수록 상태와 동작을 중앙에서 통합 관리하는 것이 좋음 | 응답성 - 오케스트레이터가 병목 지점이 될 수 있음 |
에러 처리 - 에러 처리를 위한 별도 통신 경로 불필요, 오케스트레이터에서 관리 함 | 내고장성 - 오케스트레이터가 단일 장애점이 될 수 있음 |
복원성 - 상태 모니터링, 재시도 로직 등 처리 가능 | 확장성 - 코레오그래피 방식보다 조정점이 많아서 확장성 떨어짐 |
상태관리 용이 - 상태 중앙 관리 | 서비스 커플링 - 오케스트레이터와 도메인 서비스간의 커플링 증가 |
2. 코레오그래피(Choreography) 패턴
- 중앙 중재자가 없는 통신 스타일
- 정상적인 수행에서는 단순한 워크프로를 가지지만 에러 처리, 조건 처리등으로 복잡도 급격히 증가할 수 있음
- 워크플로 상태 관장하는 오너가 없음
- 높은 응답성, 확장성이 필요하고, 에러 발생율이 낮고 에러 시나리오가 복잡하지 않은 경우 적합
장점 | 단점 |
응답성 - 한 곳에 부하가 몰리지 않고 병렬화 가능 | 분산 워크플로 - 에러 조건, 경계 조건 관리 어려움, 각 도메인 서비스가 워크플로를 더 많이 자세히 알고 있어야 함 |
확장성 - 중앙 중재자 없어 독립적 확장 가능 | 상태관리 어려움 - 중앙 상태관리가 없어 상태관리 어려움 |
내고장성 - 단일 중재자가 없어 내고장성 높음 | 에러 처리 복잡도 증가 - 에러 처리에 따른 조건 및 별도 통신 경로 필요 |
서비스 디커플링 가능 | 복원성 - 중재자가 없어 재시도 같은 복원 행위 불가 |
코레오그래피에서 WorkFlow(워크플로) 상태 관리하는 방법
1. 프론트 컨트롤러(Front Controller)
- 워크플로 책임 체인에서 가장 먼저 호출된 서비스가 상태를 관리하는 방법
장점 단점 코레오그래피 내부에서 의사(pseudo) 오케스트레이터 생성 - 가장 먼저 호출되는 서비스가 어쨌든 중재자를 역할을 함 도메인 서비스에 워크플로 상태가 추가 됨 - 도메인 서비스 복잡해짐 상태 조회 용이 - 중재자역할의 서비스를 통해서 조회 가능 통신 오버헤드 증가 서비스간 성능/확장성 나빠짐
2. 무상태 코레오그래피
- 각 서비스를 조회해서 실시간 스냅샷을 구축함으로써 워크플로 전이 상태를 유지하지 않는 방법
장점 단점 성능/확장성 좋음 - 스냅샷 방식으로 의존성 없음 워크플로 상태가 그때그때 조회되는 상황에 좌우 됨 완전한 디커플링 가능 워크플로가 복잡해지면 전체 복잡도 증가
3. 스탬프(Stamp) 커플링
- 서비스 간에 전송되는 메시지 계약에 워크플로 상태를 끼워 넣는 방법
- 각 서비스는 자신의 상태를 업데이트 후, 책임 체인의 다음 서비스 호출 시 상태정보 함께 전달
장점 단점 각 도메인 서비스가 상태 오너에 대한 별도 조회없이 워크플로 상태 전달 가능 워크플로 상태를 수용하는 만큼 계약이 더 커짐 프론트 컨트롤러 불필요 적시 상태 쿼리는 안됨
반응형
'개발 > MSA' 카테고리의 다른 글
[MSA] Saga 패턴 이해와 종류(8가지) (1) | 2024.09.12 |
---|---|
[MSA] 분산 데이터 액세스 패턴(분산된 데이터에 어떻게 접근할 것인가) (2) | 2024.09.01 |
[MSA] 서비스 분리 해야할 때와 통합 해야할 때(서비스 분해와 통합 요인) (0) | 2024.08.31 |
[MSA] 데이터베이스 종류와 데이터베이스 선택 평가 항목 (0) | 2024.08.25 |
[MSA] 모놀리식 데이터베이스 분해 과정 (0) | 2024.08.24 |
댓글