이벤트 드리븐

Event가 생겼을 때 이를 감지하고 소비하는 방향으로 프로그래밍하는 방식임. 기본적으로 Event Hander(Consumer)가 Event Emitter에 의존성을 가지지 않아도 되기에 MSA에서 자주 사용하는 방식임. 단 Broker에 의존성을 강하게 가지게 되어 서버가 터지면 말짱 꽝임.

자연스럽게 클라이언트와 서버는 서로를 몰라도 되기에 추상화된 형태로 브로커에 접근할 수 있고 비동기 처리나 확장성이 생김.

종류는 크게 2가지로 이벤트 리스너 방식과 이벤트 큐 방식이 있음.

참고 : https://velog.io/@limprove89/이벤트-기반-프로그래밍-쓰레드#이벤트-드리븐-아키텍쳐

http://okminseok.blogspot.com/2019/04/event-driven-architecture.html

비동기 메세징 큐

https://medium.com/dtevangelist/event-driven-microservice-란-54b4eaf7cc4a

대용량 트래픽에서 메시지 큐가 필요한 이유

보통 대용량 트래픽을 처리할 때 메시지 큐를 이용한다.

  1. 장애에 견고함

메세지 큐가 중간에 Broker 역할을 해줘서 요청을 저장하고 있기에 만약 서버가 장애가 발생하여 Failover 처리만 되면 기존의 요청들을 처리할 수 있다.

2. 서버 부하를 예측가능하게 줄일 수 있음

클라이언트가 자원을 많이 필요로 하는 요청들을 한 번에 많이 남길 경우 메시지 큐가 없다면 한 번에 많은 요청을 처리하다가 장애가 생길 수 있음. 메시지 큐를 사용하면 순차적으로 요청들을 처리할 수 있어 부하를 줄일 수 있다.

3. 쉽게 확장할 수 있음