이벤트 주도 아키텍처 (EDA)는 시스템 구성 요소가 발생한 변경 사항 또는 작업에 대한 메시지인 이벤트를 통해 상호 작용하는 접근 방식입니다. 시스템은 이벤트 생성기(producers), 이벤트 소비자(consumers) 및 이벤트를 전달하는 메시지 버스(message bus, broker)로 구성됩니다.
EDA는 유연하게 확장 가능하고 느슨하게 연결된 시스템을 만들 수 있게 해줍니다. 한 구성 요소에서의 변화가 다른 구성 요소의 수정을 요구하지 않습니다: 오직 이벤트의 생성과 처리만 이루어집니다.
코드 예시 (Node.js에서 이벤트 생성 및 처리):
const EventEmitter = require('events'); class MyEmitter extends EventEmitter {} const emitter = new MyEmitter(); // 이벤트 핸들러 emitter.on('userCreated', (user) => { console.log('사용자 생성됨:', user); }); // 이벤트 생성 emitter.emit('userCreated', { id: 1, name: 'Ivan' });
주요 특징:
EDA가 마이크로서비스 아키텍처와 반대입니까?
아니요, 이는 반대가 아닙니다. 마이크로서비스는 종종 서비스 간의 통신을 위해 EDA를 사용합니다.
EDA를 메시지 브로커와만 사용할 수 있습니까?
필수는 아닙니다. 로컬 이벤트(예: 옵저버 패턴을 통해)도 EDA를 구현하지만, 브로커는 분산 시스템을 구축할 수 있게 해줍니다.
EDA가 데이터 불변성을 보장합니까?
아니요. EDA는 구성 요소 간의 상호 작용에 관한 것입니다; 복원력(idempotency) 및 데이터 일관성은 명시적으로 구현해야 합니다.