1. 개요 및 문제 정의

문제 상황 슬랙 클론 프로젝트는 MSA(Microservice Architecture)로 구성되어 있습니다. workspace-service에서 워크스페이스를 생성하면, Kafka를 통해 이벤트를 발행하여 interaction-service가 기본 채널을 생성하는 구조입니다. 이때, interaction-service의 채널 생성 로직이 실패할 경우, 워크스페이스는 생성되었지만 채널은 없는 데이터 불일치(Inconsistency) 상태에 빠지게 됩니다.

  1. 최종 목표

구현 목표

  1. 여러 서비스에 걸친 비즈니스 로직의 최종적 데이터 일관성을 보장합니다.
  2. 단순히 실패 처리에서 끝나는 것이 아니라, 일시적인 장애에 대응할 수 있는 자동 재시도 메커니즘을 구현하여 시스템의 회복탄력성(Resilience)을 높입니다.
  3. 실패한 데이터가 사용자에게 노출되지 않도록 하여 안정적인 사용자 경험을 제공합니다.
  1. 구현 과정

1단계: 상태 기반 트랜잭션 관리 도입

가장 먼저, 워크스페이스의 생성 과정을 추적하기 위해 status 필드를 도입합다.

image.png

image.png

2단계: 보상 트랜잭션 처리를 위한 Kafka 컨슈머 구현

interaction-service의 처리 결과를 수신하여 Workspace의 상태를 업데이트합니다.

3단계: 자동 재시도 메커니즘 구현 (Spring Scheduler)

일시적인 장애에 대응하기 위해, 실패한 트랜잭션을 자동으로 재시도하는 스케줄러를 구현합니다.

image.png