1. 이벤트 중심 아키텍처란?

현재, 실시간 시스템은 대부분 요청 중심(Request-driven)으로 운용되고 있다.

그렇지만 민첩한 조직이 되기 위해서는 이벤트 중심 아키텍처가 유리하다.

요청이 발생하기 이전에, 이벤트가 발생한 시점에 이미 분석과 배포가 진행되기 때문이다.

이러한 장점으로써, 이벤트 중심 아키텍처는 신속하고 비용 효율적인 인사이트 발굴과 이슈 대응의 단초가 된다.

즉, 이벤트 중심 아키텍처는 곧 실시간 데이터를 전제.

실시간 데이터는 마이크로 서비스를 전제한다.

조직의 필수 요소로 만드는 이유가 마이크로서비스의 등장.

실시간 데이터의 이점을 얻을 수 있는지 없는지의 여부는 개발 조직

애자일한 개발 방법을 채택하냐 안하냐에 따라서 리얼타임 이벤트 아키텍처를 할 수 있느냔 없느냐가 결정된다고 말할 수 있다. 


2. 이벤트의 속성

  • 원자성: 발생/취소의 기본 단위. 더 작은 단위로 쪼개질 수 없는 하나의 기본 단위
  • 관계성: 한개가 독립적이기 보다는, 연속된 이벤트 스트림의 일부임.
  • 행동성: 어떠한 행동을 포착할 수 있는 정보를 제공.

→ 이벤트 중심 아키텍처를 이용하면 어떤 결과가 발생할지 신속하게 예측할 수 있다.


3. 이벤트 중심 아키텍처의 특징

응용프로그램과 서비스가 상호 보완적으로 데이터를 발생시키고, 소비한다. 각 서비스는 이벤트를 기준으로 생산자와 소비자의 역할을 유동적으로 수행하며, 각종 이벤트는 균일하게 메세징 큐로 관리된다.

  • 생산자, 소비자 두 가지 참여 주체가 있다.
  • 생산자는 이벤트 발생시 실시간으로 이를 스트리밍한다.
  • 소비자는 자신의 상황에 맞추어 각자의 시점에 해당 이벤트를 소비한다.
  • Decoupling이 되어 있다
    - 이벤트 생산자와 소비자가 분리되어 있어, 그 사이 메세징 큐를 이용하면 새로운 서비스를 추가 및 확장 또는 축소, 삭제하는 등, 다양한 형태의 이벤트기발 워크로드를 설계하기 용이하다.
  • 마이크로 서비스 아키텍처에서 필수적이다
    - 마이크로 서비스는 각각이 이벤트 생산자와 소비자로 상황에 맞추어 역할이 변동되는, 복잡도 높은 이벤트 중심 아키텍처로 볼 수 있다. 서비스간의 일관된 통신을 위해서는 메세징 큐를 두어 각 이벤트에 대한 생산자와 소비자 리스트에 따라서 이벤트가 출판/구독된다.

4. 이벤트 중심 아키텍처의 효과

  • 즉각 대응이 용이하다.
  • 바로 분석 관련 시스템에 탑재시켜서 모델에 반영할 수 있다.
  • 신속해진 서비스로 사용자 경험이 제고된다.

5. 이벤트 중심 아키텍처에서 몽고DB의 특장점

RDB:

  • 스키마를 정의하고 또 동일한 스키마를 다른 서비스 DB에 대해서 구현해서 매핑해야하고 각각의 마이크로서비스마다 위 프로세스를 반복해야하는 번거로움이 있다 ,
  • 어플리케이션 업데이트되고 데이터 모델이 바뀔때마다 자꾸 이러한 변경이 발생하여 번거롭다.

MongoDB:

  • 사용자가 원하는 대로 각 서비스와 데이터마다 다른 스키마 유연하게 적용 가능하다.
  • 데이터에서 발생하는 변경사항을 실시간으로 앱으로 전달하기 용이하다.
  • 데이터 전달 시 특정 데이터만 전달되도록 필터링 기능이 있다.