[웨비나] MongoDB를 사용한 이벤트 중심 아키텍처

8/13일 MongoDB 웨비나 (모든 이미지출처는 웨비나 MongoDB)

EDA (이벤트 드리븐 아키텍처)

  • 토픽기반(메시지 기반) 프로듀셔/컨슈머

  • 사용자 중심적

  • 실시간 데이터 처리

  • MSA 신속하게 애플리케이션을 순환하고 애자일 및 데브옵스 움직임에 맞게 아키텍처를 구현가능

  • MSA는 실시간

  • Atomic

    • 이벤트는 발생한 것을 나타내는 원자단위

  • Related

    • 이벤트가 독립적으로 발생하는 경우는 드뭄

    • 이벤트 스트림 또는 시퀀스의 일부

  • Behavioral

    • 이벤트 스트림/시퀀스는 행동을 포착하기 위한 사건의 축적

  • 이벤트 생산자 : 메시지 큐 또는 스트림에 배치하는 이벤트생성

  • 시스템은 이벤트를 이벤트 타입들 또는 토픽이라고 불리는 논리 스트림으로 전달

  • 이벤트 소비자 : 토픽에 추가된 이벤트를 수신하고 처리/응답

  • Decoupling : 변화하는 수요에 대응하여 시스템을 확장 및 축소 할 수 있으며 서비스가 독립적으로 발전할 수 있도록 함

  • MSA에서 서비스간 통신의 매개자에서 유기적인 흐름과 연결이 될 수 있는 채널(통로)를 제공하는데 목적을 둠

  • DB는 EDA에서 중심적인 역할

    • MSA에는 자체 디비가 있찌만 핵심 디비 중장 저장소를 제공하며 비즈니스에 대한 전체적인 관점을 제공함

  1. 비용증가

  2. 비용증가 -> Pricing(MSA 서비스) 수신

  3. 비용 가격/분석 등등 (뒷단 플랫폼 )

  4. 새로운 가격 산출 -> 저장(DB)

  5. 새로운 가격 -> 큐로 푸시(이벤트 생성)

  6. 큐에 쌓인 데이터(메시지)는 토픽에 쌓이고...

  7. 생산된 메시지를 수신자(MSA 서비스들)가 소비하며 처리

EDA를 MongoDB 에서 활용

  • RDB에서 구현 단점

    • 변경에 대해 유연하지 않음

    • 변경에 대해 복잡함, 불편함등이 존재 (모델링)

  • MongoDB

    • 변경에 유연한 대처

    • 이벤트 처리 배압조절(카프카)과의 연결

    • 버퍼역할

  • 활용

    • 몽고디비의 데이터, 파이프라인, 실시간 모니터링에 활용

    • 실시간 트리거 등

몽고디비 역할

  • 가격 분석 등

  • 몽고디비 -> 데이터 저장( 생산된 새로운 메시지, 가격 분석된 데이터 등)

  • 카프카 연결 하여 재 사용하도록 유기적인 연동

카프카

  • Producers / Consumers 개념

  • producer -> topic <- consumer

    • 1개 이상의 (다대다) 연결 가능

  • 이기종 DB 연동에 유연 (매개체를 카프카로 ...)

몽고 디비 토픽

  • 끊긴 데이터를 추적

    • 토큰 기반 (타임 스탬프) 마지막 토큰 기반으로 이후부터 다시 재처리되면 추적이 가능함

데모

  1. 커넥터로 연결

  2. 몽고디비 싱크 데이터 큐 -> 몽고

  3. 소스 -> 토픽에 넣고

  4. 카프카를 쓰지 않고 orders 데이터의 트리거 -> 실시간 세일즈 관리자에게 알림

  • confluent(kafka 솔루션) -> 토픽 (ex,ora-orders)

  • 커넥터 ->

    • jdbc 소스 커넥터

      • 큐(SOE-ORDERS 토픽)에 메시지 푸시 (JSON)

    • 몽고디비 싱크 커넥터

      • 큐에서 데이터를 수신 -> 몽고디비에 도큐먼트 저장 (JSON)

    • 몽고디비 소스커넥터

      • 몽고디비 연결

      • 데이터 추출 -> BIZ-BIGORDER 토픽(kafka)에 푸시

  • 트리거

    • 트리거를 통해 조건에 맞을 경우 매핑된 함수 실행

    • 데모에서는 대량 주문건에 대한 이메일 전송

개인적 의견 정리

  • MongoDB 위치에 이기종 DB가 위치해도 처리하는데 무관하다면 타 DB 사용도 가능해 보임. ex) ElasticSearch, Redis ...

  • 데이터량과 메시지 영속화 관점에서 DB 중앙집중화 설계는 항상 고려 해봐야할 것으로 생각됨. MSA 서비스중 활용도가 많은 곳?

  • EDA 기반의 구성과 메시지큐/NoSQL구성, 분산처리는 요청/응답의 대기 시간을 크게 줄일 수 있을것으로 판단됨

Last updated