
아키텍처
Vizend 구독 기능 설계 구현
두줄요약
Showcase가 자기 자신을 배포 대상으로 삼는 구조에서 발생하는 정합성 문제를 상태 머신과 이벤트 분할로 해결했습니다. 재기동 후 버전 검증과 멱등 발행, GID 기반 식별로 분산 배포의 일관성을 확보했습니다.
문제 상황
- Showcase 자체가 구독 가능한 Kollex로 패키징되어, 구독 처리 주체와 교체 대상이 같은 자기 참조적 배포 구조
- 일반 구독과 달리 프로세스 재기동을 가로지르는 상태 정합성, 완료 판정, 이벤트 중복 발행 문제가 발생
- 멀티테넌트 환경에서 로컬 식별자 충돌과 External Drama 처리 분리도 함께 필요
구조와 흐름
- 일반 구독은 Preparing → SyncingMetro → Completed/Failed의 단순 경로
- Builtin 구독은 PreparingSelfDeploy, DeployingSelf, SelfDeployVerified, FinalizingMetro로 분리된 상태 머신으로 진행
- 상태와 최종 이벤트 페이로드를 영속화해 재기동 후에도 라이프사이클을 이어받는 구조
해결 방법
- Metro로의 1차 이벤트와 self-deploy 이벤트를 분리해, showcase Drama가 완전히 수렴되기 전의 거짓 완료를 방지
- ApplicationReadyEvent에서 기대 이미지 버전과 관측 버전을 비교해 자기 배포 성공 여부를 검증
- 최종 이벤트는 스케줄러로 비동기 발행하고 멱등 가드로 중복 발행을 억제
