기술 블로그
A레벨 - 기본
배민스토어의 이벤트 기반 아키텍처(EDA) 도입기
백엔드
이벤트 아키텍처
MSA
AWS SNSAWS SQSJavaSpring BootEvent Schema Registry
배경
배민스토어(B마트, 배민스토어)는 배달의민족 내 즉시배달 서비스로, 주문-결제-배달-정산에 이르는 복잡한 비즈니스 프로세스를 처리해야 한다.
도전 과제
서비스 간 동기 호출로 인한 강한 결합, 부분 장애의 전체 시스템 전파, 새로운 비즈니스 요구사항 반영 시 여러 서비스의 동시 변경 필요 등의 문제가 있었다.
해결 방안
SNS/SQS 기반의 이벤트 기반 아키텍처를 도입했다. 도메인 이벤트를 식별하고, 이벤트 발행/구독 패턴으로 서비스 간 통신을 비동기로 전환했다. 이벤트 스키마 레지스트리로 계약을 관리하고, Dead Letter Queue로 실패 이벤트를 처리했다.
결과
서비스 간 결합도가 크게 줄어 독립적인 배포와 확장이 가능해졌다. 새로운 비즈니스 기능 추가 시 기존 서비스 변경 없이 이벤트 구독만으로 확장 가능해졌다.
핵심 인사이트
- 1.EDA 도입 시 도메인 이벤트 식별이 가장 중요한 첫 단계이다
- 2.이벤트 스키마 레지스트리는 서비스 간 계약을 관리하는 필수 인프라이다
- 3.Dead Letter Queue와 재처리 메커니즘은 이벤트 기반 시스템의 안정성을 보장한다