How to design your messages: Patterns and tradeoffs in Event Driven Architectures Workshop
- 이벤트 기반 아키텍처(EDA)는 생산자가 메시지를 보내고 소비자가 이를 처리하는 방식으로, 시스템 간 통신을 분리하고 워크로드를 분산하는 데 중점을 둡니다. 🔄
- EDA는 확장성, 복원력, 느슨한 결합, 최종 일관성 등의 이점을 제공하여 분산 시스템의 효율성을 높입니다. 🚀
- 느슨한 결합은 생산자가 소비자를 알 필요 없이 비동기적으로 작동하게 하며, 최종 일관성은 최신 상태가 항상 즉시 필요하지 않은 워크로드에 적합합니다. 🤝
- EDA는 디버깅의 복잡성, 메시지 순서 보장 문제, 모든 워크로드에 적용하기 어려운 최종 일관성 등의 도전 과제를 안고 있습니다. 🧩
- 비즈니스 규칙을 통해 일시적인 불일치(예: 이중 예약)를 보상할 수 있으므로, 모든 것을 완벽하게 동기화하려는 엔지니어링적 강박에서 벗어날 수 있습니다. ⚖️
- 메시지는 시스템 간에 비동기적으로 전달되는 구조화된 정보 패키지이며, 주로 명령(Command)과 이벤트(Event) 두 가지 유형으로 나뉩니다. ✉️
- 명령(Command)은 특정 작업을 수행하도록 요청하는 메시지로, 단일 발신자와 단일 수신자 간의 지점 간 통신에 사용됩니다. 🎯
- 이벤트(Event)는 이미 발생한 사실을 알리는 메시지로, 관심 있는 모든 시스템에 브로드캐스트되어 해당 사실에 반응하도록 합니다. 📢
- 메시지에 포함될 정보는 시스템의 도메인, 아키텍처, 그리고 외부 시스템과의 통신 필요성에 따라 달라지며, 이는 메시지 설계의 핵심 고려사항입니다. 💡
- 사회 미디어 시스템 예시를 통해 사용자, 게시물, 댓글, 반응, 관계 등 다양한 엔티티를 다루는 서브도메인 간의 메시지 교환 필요성을 설명합니다. 🌐
데브허브 | DEVHUB | How to design your messages: Patterns and tradeoffs in Event Driven Architectures Workshop