[10분 테코톡] 강산의 이벤트 기반 아키텍처
- EDA의 핵심 목표는 시스템 컴포넌트 간의 '느슨한 결합'을 달성하는 것으로, 이는 대규모 IT 기업 및 업계 권위자들이 공통으로 강조하는 이점입니다. 🔗
- 직접 호출 방식은 높은 결합도로 인해 한 지점의 지연이나 실패가 전체 시스템에 연쇄적으로 전파될 위험이 있습니다. 💥
- 이벤트 발행으로 전환하면 발행자가 특정 서비스 대신 브로커에게 메시지를 보내 '물리적 결합'이 줄어듭니다. 📡
- 이벤트 발행 시 구독자가 즉시 응답할 필요가 없어 발행자와 구독자 간의 '시간적 결합'이 감소합니다. ⏳
- 메시지가 특정 대상에게 '무엇을 하라'고 지시하는 '명령형 메시지'일 경우, 발행자가 구독자의 정책을 알아야 하므로 '개념적 결합'이 여전히 남습니다. 💬
- 진정한 이벤트는 '누가 무엇을 했다'는 사실만을 알리며, 구독자는 이 사실을 바탕으로 각자의 규칙에 따라 후속 작업을 수행하여 개념적 결합을 해소합니다. ✅
- 느슨한 결합은 컴포넌트 간의 안정적인 경계를 유지하고, 변경의 파급 범위를 줄이며, 응집도를 높여 단일 책임 원칙(SRP)과 개방 폐쇄 원칙(OCP) 준수를 용이하게 합니다. 🛡️
- EDA는 전체 시스템 흐름을 이해하기 어렵게 만들고, 명시적인 호출 관계가 없어 모니터링 및 문서화의 중요성이 커지는 단점도 있습니다. 🧩
- EDA는 모든 문제의 해결책인 '은탄환'이 아니며, 올바른 이해와 적용이 중요합니다. 💡