본문 바로가기
개발/MSA

[MSA] Saga 패턴 이해와 종류(8가지)

by 궁즉변 변즉통 통즉구 2024. 9. 12.
반응형

MSA 보상트랜잭션에서 많이 얘기가 나오는 Saga패턴에 대해서 알아본다.

 

Saga 패턴

- 서비스에서 각 업데이트가 이벤트를 발행해 다음 차례의 이벤트를 트리거하는 일련의 로컬 트랜잭션

- 만약 일련의 작업들 중 하나라도 실패하면 이전까지의 작업이 완료된 서비스들에게 보상이벤트를 소싱함으로써 분산 환경에서 일관성을 보장하는 패턴

- Saga패턴은 통신방식([Sync]동기/[Async]비동기), 일관성 처리([Atomic] 원자적 일관성/[Eventual] 최종 일관성), WorkFlow 조정 방식([Choreography]코레오그래피/[Orchestration]오케스트레이션)에 따라 8가지가 있음

 

1. Epic Saga(에픽 사가)

  • 동기 통신 + 원자적 일관성 + 오케스트레이션(SAO)
  • 많은 사람들에게 익숙하고 직관적인 패턴, 모놀리식과 비슷하고 특별한 기술적 제약 조건이 없음
  • 오케스트레이터(중재자)를 활용한 보상 트랜잭션을 사용하여 구현
  • 응답 시간이 김

2. Phone Tag Saga(폰 태그 사가)

  • 동기통신 + 원자적 일관성 + 코레오그래피(SAC)
  • 트랜잭션 원자성이 목표로 도메인 서비스 에러처리, 라우팅 등 자기가 참여한 워크플로에 대한 로직을 더 많이 갖게 됨
  • 높은 확장성을 요구하고, 단순한 워크플로에 적합
  • 코레오그래피를 선택했다는 것은 비동기를 택한 것이나 다름없으므로 흔치 않는 조합

3. Fairy Tale Saga(페어리 테일 사가)

  • 동기 통신 + 최종 일관성 + 오케스트레이션(SEO)
  • 오케스트레이터가 요청,응답,에러처리를 조정하지만 트랜잭션은 관리하지 않음
  • MSA에서 흔한 패턴
  • 오케스트레이터로 워크플로 관리 용이, 동기 통신의 직관적, 최종 일관성으로 에러 처리 과정 복잡도 낮음

4. Time Travel Saga(타임트래블 사가)

  • 동기 통신 + 최종 일관성 + 코레오그래피(SEC)
  • 코레오그래피 방식으로 도메인 설계 시 워크플로 에러조건 반영 필요, 워크플로 복잡도 증가
  • 단순한 워크플로에 적합, 고속 처리량, 단방향 통신 처리 등 특이한 용도에 적합

5. Fantasy Fiction  Saga(판타지 픽션 사가)

  • 비동기 통신 + 원자적 일관성 + 오케스트레이션(AAO)
  • 오케스트레이터에 비동기 통신을 적용하여 다양한 교착상태, 경합 조건 등의 난제들이 발생할 수 있음
  • 비효과적인 패턴, 에픽사가에 성능 개선을 위한 그릇된 믿음을 가진 아키텍트들이 의외로 많이 씀

6. Horror Story Saga(호러 스토리 사가)

  • 비동기 통신 + 원자적 일관성 + 코레오그래피(AAC)
  • 원자적 일관성이라는 커플링 + 가장 느슨한 비동기, 코레오그래피 조합으로 최악의 궁합(안티 패턴)

7. Parallel Saga(패러럴 사가)

  • 비동기 통신 + 최종 일관성 + 오케스트레이션(AEO)
  • 오케스트레이터로 복잡한 워크플로에 적합, 비동기로 응답성 좋음

8. Anthology Saga(앤솔로지 사가)

  • 비동기 통신 + 최종 일관성 + 코레오그래피(AEC)
  • 결합도가 가장 낮은 구조
  • 조정 기능이 없어 복잡도는 올라가지만, 처리량, 확장성 등 운영 아키텍처 특성을 좋아짐
  • 높은 처리량을 요구하고, 단순하면서 선형적으로 진행되는 워크플로에 적합

Summary

  • 결합도: 동기, 오케스트레이션일 경우 높음
  • 복잡도: 최종일관성 + 동기 or 오케스트레이션일 경우 낮음
  • 응답성/가용성: 비동기, 최종 일관성일 경우 높음
  • 확장성/탄력성: 결합도가 낮아지면 확장성/탄력성 높음

 

참고:

https://azderica.github.io/01-architecture-msa/

https://tjenwellens.eu/everblog/ec936db8-ba4c-430b-aeb4-15d9c50c0f8c/

 

반응형

댓글