Skip to content

Latest commit

 

History

History
19 lines (13 loc) · 1.54 KB

Chapter12.md

File metadata and controls

19 lines (13 loc) · 1.54 KB

질문

근우

  • 의존성 제어를 위해 하나의 스레드에서 이벤트를 사용하는 것은 장점이 더 많을까 단점이 더 많을까

이슬

  • 스프링 이벤트 실패건들을 처리하는 방법이 스케줄링 돌리는 것 말고 또 다른 방법이 있는지?

창현

  • 본인이 생각하기에 이벤트 처리 실패에 대한 대처 방안은 가장 옳다고 생각하는 것은?

실습문제

나개발은 MSA 기반의 여행 플랫폼을 개발 중이다. 현재 여행 플랫폼은 사용자가 숙소를 예약할 때 숙소 서비스에서는 HTTP API를 통해 숙소 예약을 다른 MSA 서비스들로 전파하고 있다. 나개발은 이 방식의 한계를 느껴 이벤트 드리븐 아키텍처(EDA)를 적극적으로 사용하기로 결정했다. 나개발은 어떻게 이벤트 발행을 보장할지 고민했다. 도메인 로직이 완료된 이후에 이벤트가 발행되지 않는다면, 해당 이벤트를 바라보는 컨슈머는 특정한 로직을 실행할 수 없게 되고, 이로 인해 전체 서비스의 데이터 정합성이 깨질 수 있기 때문이다. 고민하던 중에 나선배가 말했다.

“트랜잭셔널 아웃박스 패턴을 찾아봐”

나개발이 개발 중인 여행 플랫폼에 트랜잭셔널 아웃박스 패턴을 적용해보자.

  1. 아웃박스 패턴을 어떻게 구현할지 설계해보자.
  2. 설계를 바탕으로 코드로 구현해보자. (이벤트 발행을 위해 kafka를 사용한다고 가정하고 kafka 로직은 주석으로 대체한다)