EDA(Event Driven Architecture)가 MQ나 이벤트 리스너를 통해 동작한다는 것은 알고 있었습니다. 하지만 "어느 상황에서 사용해야 하는가?"에 대해서는 명확하게 정리되어 있지 않았습니다. 단순히 도메인 간 의존성을 줄이기 위한 구조 정도로만 이해하고 있었던 것 같습니다. 그러나 공부를 하다 보니, EDA는 단순한 비동기 처리 구조가 아니었습니다. 처리량 문제, 데이터 정합성 문제, 데이터 모델링 문제 등분산 환경에서 발생하는 다양한 문제를 해결하기 위한 설계 방식이었습니다. 특히 흥미로웠던 점은, 각각의 문제에 따라 적용되는 아키텍처 패턴이 달랐다는 점입니다. Competing Consumer, Saga, Transactional Outbox, Event Sourcing 등 단순히 ..