피드로 돌아가기
The Orchestrator: State Transitions and Kafka Routing
Dev.toDev.to
Backend

Stateless State Machine 기반 Kafka Routing을 통한 Saga 패턴 구현

The Orchestrator: State Transitions and Kafka Routing

Pedro Santos2026년 4월 20일6intermediate

Context

분산 트랜잭션의 복잡성을 해결하기 위해 Saga 패턴을 채택함. 서비스 간 의존성을 제거하고 상태 전이 로직을 중앙 집중화하여 관리 효율성을 높이려는 설계 의도임.

Technical Solution

  • State Transition Table 도입을 통한 하드코딩된 조건문 제거 및 정적 배열 기반의 Routing 구조 설계
  • Orchestrator 내 Business Logic을 완전히 배제하여 순수하게 메시지 경로만 결정하는 Stateless 아키텍처 구현
  • Event 객체 내에 전체 History를 누적하여 전달함으로써 별도의 상태 저장소 없이 컨텍스트를 유지하는 설계
  • Kafka Topic을 분리하여 각 서비스는 Orchestrator로만 발행하고, Orchestrator만 다중 Topic으로 발행하는 단방향 통신 구조 확립
  • Event-driven 기반의 보상 트랜잭션(Rollback) 흐름을 State Table에 정의하여 장애 복구 경로를 정형화함

- 복잡한 조건문 기반의 워크플로우를 정적 매핑 테이블(State Table)로 전환 가능한지 검토 - 상태 저장소의 병목을 줄이기 위해 Event 내에 상태를 포함시키는 Stateless Orchestrator 구조 고려 - 분산 환경의 디버깅 효율을 위해 Event 객체에 타임라인 형태의 History 로그를 포함하는 설계 적용

원문 읽기