[웨비나] MongoDB를 사용한 이벤트 중심 아키텍처
8/13일 MongoDB 웨비나 (모든 이미지출처는 웨비나 MongoDB)
Last updated
Was this helpful?
8/13일 MongoDB 웨비나 (모든 이미지출처는 웨비나 MongoDB)
Last updated
Was this helpful?
토픽기반(메시지 기반) 프로듀셔/컨슈머
사용자 중심적
실시간 데이터 처리
MSA 신속하게 애플리케이션을 순환하고 애자일 및 데브옵스 움직임에 맞게 아키텍처를 구현가능
MSA는 실시간
Atomic
이벤트는 발생한 것을 나타내는 원자단위
Related
이벤트가 독립적으로 발생하는 경우는 드뭄
이벤트 스트림 또는 시퀀스의 일부
Behavioral
이벤트 스트림/시퀀스는 행동을 포착하기 위한 사건의 축적
이벤트 생산자 : 메시지 큐 또는 스트림에 배치하는 이벤트생성
시스템은 이벤트를 이벤트 타입들 또는 토픽이라고 불리는 논리 스트림으로 전달
이벤트 소비자 : 토픽에 추가된 이벤트를 수신하고 처리/응답
Decoupling : 변화하는 수요에 대응하여 시스템을 확장 및 축소 할 수 있으며 서비스가 독립적으로 발전할 수 있도록 함
MSA에서 서비스간 통신의 매개자에서 유기적인 흐름과 연결이 될 수 있는 채널(통로)를 제공하는데 목적을 둠
DB는 EDA에서 중심적인 역할
MSA에는 자체 디비가 있찌만 핵심 디비 중장 저장소를 제공하며 비즈니스에 대한 전체적인 관점을 제공함
비용증가
비용증가 -> Pricing(MSA 서비스) 수신
비용 가격/분석 등등 (뒷단 플랫폼 )
새로운 가격 산출 -> 저장(DB)
새로운 가격 -> 큐로 푸시(이벤트 생성)
큐에 쌓인 데이터(메시지)는 토픽에 쌓이고...
생산된 메시지를 수신자(MSA 서비스들)가 소비하며 처리
RDB에서 구현 단점
변경에 대해 유연하지 않음
변경에 대해 복잡함, 불편함등이 존재 (모델링)
MongoDB
변경에 유연한 대처
이벤트 처리 배압조절(카프카)과의 연결
버퍼역할
활용
몽고디비의 데이터, 파이프라인, 실시간 모니터링에 활용
실시간 트리거 등
가격 분석 등
몽고디비 -> 데이터 저장( 생산된 새로운 메시지, 가격 분석된 데이터 등)
카프카 연결 하여 재 사용하도록 유기적인 연동
Producers / Consumers 개념
producer -> topic <- consumer
1개 이상의 (다대다) 연결 가능
이기종 DB 연동에 유연 (매개체를 카프카로 ...)
끊긴 데이터를 추적
토큰 기반 (타임 스탬프) 마지막 토큰 기반으로 이후부터 다시 재처리되면 추적이 가능함
커넥터로 연결
몽고디비 싱크 데이터 큐 -> 몽고
소스 -> 토픽에 넣고
카프카를 쓰지 않고 orders 데이터의 트리거 -> 실시간 세일즈 관리자에게 알림
confluent(kafka 솔루션) -> 토픽 (ex,ora-orders)
커넥터 ->
jdbc 소스 커넥터
큐(SOE-ORDERS 토픽)에 메시지 푸시 (JSON)
몽고디비 싱크 커넥터
큐에서 데이터를 수신 -> 몽고디비에 도큐먼트 저장 (JSON)
몽고디비 소스커넥터
몽고디비 연결
데이터 추출 -> BIZ-BIGORDER 토픽(kafka)에 푸시
트리거
트리거를 통해 조건에 맞을 경우 매핑된 함수 실행
데모에서는 대량 주문건에 대한 이메일 전송
MongoDB 위치에 이기종 DB가 위치해도 처리하는데 무관하다면 타 DB 사용도 가능해 보임. ex) ElasticSearch, Redis ...
데이터량과 메시지 영속화 관점에서 DB 중앙집중화 설계는 항상 고려 해봐야할 것으로 생각됨. MSA 서비스중 활용도가 많은 곳?
EDA 기반의 구성과 메시지큐/NoSQL구성, 분산처리는 요청/응답의 대기 시간을 크게 줄일 수 있을것으로 판단됨