← 질문 목록
#402깊이 0
도메인 이벤트는 트랜잭션의 어느 시점에 발행해야 안전한가?
아키텍처 · 분산시스템
답변 연습
내 답변 적어보기접힘
이 브라우저에 자동 저장 · 0자
모범답안 확인하기내 답변 뒤에 열어보세요
- 1. 애플리케이션에서 DB로: 변경사항 저장 (트랜잭션 진행)
- 2. DB에서 애플리케이션으로: 커밋 완료 응답
- 3. 애플리케이션에서 메시지 브로커로: 도메인 이벤트 발행
트랜잭션 안에서 이벤트를 전송하면 DB 커밋 실패 시 문제가 생긴다. 데이터베이스는 롤백되지만 이미 나간 이벤트는 취소할 수 없다.
반대로 커밋 직후 전송하다가 서버가 꺼지면 이벤트가 유실된다. DB 변경과 이벤트 발행 사이의 일관성을 맞추는 작업이 따른다.
이벤트를 DB의 아웃박스 테이블에 같은 트랜잭션으로 저장한다. 이후 별도 프로세스가 이 테이블을 조회해 브로커로 발행한다.