한꺼번에 짊어지던 배치를 내려놓고, 하나씩 흘려보내는 워크플로로
아키텍처
한꺼번에 짊어지던 배치를 내려놓고, 하나씩 흘려보내는 워크플로로
두줄요약
Temporal 도입 부담을 줄이기 위해 기존 인프라 위에 Flowkit이라는 자체 워크플로 라이브러리를 만들었습니다. 배치로 처리하던 접수지연 알림을 주문 단위 워크플로로 바꾸고, 재시도와 멱등성 정책도 선언적으로 다뤘습니다.
핵심 내용
- Temporal 도입 부담을 줄이기 위해, Kotlin coroutine·Spring WebFlux·Reactive MongoDB 위에 자체 durable workflow 라이브러리 Flowkit을 설계
- Workflow, Activity, Signal, Scheduler 네 개의 개념만으로 장기 실행 흐름과 상태 재개를 단순화
- 배치로 처리하던 접수지연 알림을 주문 1건 = 워크플로 1개 구조로 전환해 피크타임 부담과 타이머 오차를 완화
- Activity에 timeout, retry, idempotency, checkpoint 정책을 선언적으로 부여해 외부 호출 신뢰성을 보완
적용해볼 점
- 시간 경과 기반 후처리 로직을 배치 대신 개별 워크플로로 분해하는 구조 검토
- 재시도·멱등성·체크포인트를 활동 단위 정책으로 분리해 중복 실행 위험 완화

