피드로 돌아가기
Dev.toBackend
원문 읽기
HTTP 동기 통신 기반 Cascade Failure 해결을 위한 Kafka 기반 Event-Driven Architecture 전환
Back to Code | Ep 13: Event-Driven Architecture — Kafka and the Async World
AI 요약
Context
AI가 생성한 Synchronous HTTP 기반 서비스 간 연결로 인한 강한 결합도 형성. Invoice 서비스의 Memory Leak 발생 시 Routing 및 Tracking 서비스까지 연쇄적으로 중단되는 Cascade Failure 현상 노출.
Technical Solution
- 서비스 간 통신 방식을 Request-Response 구조에서 Fire-and-forget 방식의 Async 메시징으로 전환
- Kafka를 도입하여 Producer(Routing)와 Consumer(Invoice) 간의 물리적·시간적 의존성 제거
- 도메인 상태 변화를 나타내는 Domain Events('RouteCalculated') 정의를 통한 Loose Coupling 구현
- 서비스 장애 시 메시지를 Kafka 내에 큐잉하여 시스템 가용성을 확보하고 복구 후 Backlog 처리 보장
- 처리 실패 메시지의 유실 방지 및 재처리를 위한 Dead Letter Queue 구조 설계
실천 포인트
- 서비스 간 호출 시 상호 의존성이 없는 작업은 Event-Driven 구조 검토 - 분산 시스템 내 연쇄 장애 방지를 위한 Timeout 설정 및 Circuit Breaker 도입 여부 확인 - 메시지 스키마 정의를 통한 서비스 간 인터페이스 계약 관리 체계 구축 - 비정상 메시지 처리를 위한 DLQ(Dead Letter Queue) 및 Replay 메커니즘 구현