architectureevent-driven
이벤트 기반 아키텍처 - 느슨한 결합과 확장성
조회 0
이벤트 기반 아키텍처는 이벤트를 통해 서비스 간 통신하는 패턴입니다.
이 글에서는 이벤트 버스, 메시지 큐, 이벤트 소싱 등을 정리합니다.
1. 이벤트 버스
class EventBus {
private handlers = new Map();
subscribe(eventType, handler) {
if (!this.handlers.has(eventType)) {
this.handlers.set(eventType, []);
}
this.handlers.get(eventType).push(handler);
}
publish(eventType, data) {
const handlers = this.handlers.get(eventType) || [];
handlers.forEach((handler) => handler(data));
}
}
2. 메시지 큐
// RabbitMQ, Kafka 등
await messageQueue.publish("user.created", {
userId: 1,
email: "user@example.com",
});
// 구독
messageQueue.subscribe("user.created", async (event) => {
await sendWelcomeEmail(event.email);
});