AI Store에서 AI코딩으로 만들어진 앱을 만나보세요!
지금 바로 방문하기

분산 시스템 설계: Saga와 트레이드오프

카테고리

프로그래밍/소프트웨어 개발

서브카테고리

DevOps

대상자

분산 시스템을 설계하거나 개선하는 개발자, 기술 리더, DevOps 엔지니어

난이도: 중간

핵심 요약

  • Communication은 동기와 비동기 방식으로 나뉘며, 시스템의 가용성과 결합도에 영향을 줌.
  • Coordination의 두 가지 주요 패턴은 OrchestrationChoreography로, 각각 단일 통제자와 이벤트 기반의 자율적 서비스에 해당함.
  • ConsistencyAtomicEventual로 나뉘며, 트랜잭션의 일관성과 시간적 지연을 고려해야 함.

섹션별 세부 요약

1. 서비스 상호작용의 세 가지 힘

  • 서비스 간 상호작용에 영향을 주는 세 가지 요소는 communication, coordination, consistency이다.
  • 이 요소들은 서로 다른 트레이드오프를 가지며, 시스템 설계에 큰 영향을 미친다.

2. Communication

  • 동기 통신은 REST 또는 gRPC와 같은 프로토콜에서 사용되며, 요청자는 응답을 기다린다.
  • 비동기 통신은 메시지 큐(Kafka, RabbitMQ)를 사용하며, 요청자는 즉시 응답을 받지 않고 작업을 계속한다.
  • 동기 통신은 즉각적인 피드백을 제공하지만, 가용성이 낮고 결합도가 높다.
  • 비동기 통신은 가용성이 높고 결합도가 낮지만, 즉각적인 피드백이 없고 일관성이 시간에 따라 이루어진다.

3. Coordination

  • Orchestration은 중앙 통제자(orchestrator)가 작업을 조정하며, 각 서비스에 명령을 내린다.
  • Choreography는 중앙 통제자가 없고, 각 서비스가 이벤트에 반응하며 작업을 수행한다.
  • Orchestration은 복잡한 흐름을 쉽게 관리할 수 있지만, 병렬성이 낮고 결합도가 높다.
  • Choreography는 결합도가 낮고 유연하지만, 상태 관리가 어려우며 복잡성이 높다.

4. Consistency

  • Atomic 트랜잭션은 모든 작업이 성공해야 하며, 전통적인 데이터베이스 트랜잭션에 해당한다.
  • Eventual 트랜잭션은 일관성이 시간에 따라 이루어지며, 분산 시스템에서 흔히 사용된다.
  • Atomic 트랜잭션은 동기 통신과 orchestration에 의존하지만, eventual 트랜잭션은 비동기 통신과 choreography에 적합하다.

5. Saga 패턴

  • Saga는 분산 트랜잭션을 관리하는 패턴으로, Epic Saga, Phone Tag Saga, Fairy Tale Saga 등 여러 유형이 있다.
  • 각 패턴은 특정한 트레이드오프와 설계 결정을 반영하며, 주문 처리 흐름과 같은 실제 시나리오에 적용된다.

6. 결론

  • 서비스 간의 통신, 조정, 일관성은 서로 트레이드오프가 있으며, 시스템 설계 시에 이러한 요소들을 고려해야 한다.
  • 동기 통신은 즉각적인 피드백이 필요할 때 적합하고, 비동기 통신은 가용성과 병렬성에 유리하다.
  • Orchestration은 단일 통제자가 흐름을 관리하므로 복잡한 작업에 적합하고, Choreography는 서비스 간 결합도가 낮은 유연한 시스템에 적합하다.
  • 분산 시스템 설계 시, 각 패턴의 장단점을 고려해 적절한 트레이드오프를 선택해야 한다.

결론

  • 분산 시스템 설계 시 Communication, Coordination, Consistency의 트레이드오프를 고려해야 하며, Saga 패턴을 활용해 복잡한 작업 흐름을 관리할 수 있다.
  • 동기 통신은 즉각적인 피드백이 필요한 상황에 적합하고, 비동기 통신은 가용성과 확장성에 유리하다.
  • Orchestration은 단일 통제자가 흐름을 관리하므로 복잡한 작업에 적합하고, Choreography는 서비스 간 결합도가 낮은 유연한 시스템에 적합하다.
  • 각 패턴의 장단점을 고려해 적절한 트레이드오프를 선택해야 한다.