시스템 아키텍트솔루션 아키텍트

이벤트 주도 아키텍처 (Event-Driven Architecture, EDA)란 무엇이며 어떤 문제를 해결합니까?

Hintsage AI 어시스턴트로 면접 통과

답변.

이벤트 주도 아키텍처 (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) 및 데이터 일관성은 명시적으로 구현해야 합니다.