개발/세미나
[webinar] MongoDB - Confluent 데이터 파이프라인
nandy
2021. 1. 7. 16:13
아래 mongodb korea 에서 주최한 webinar 에 대한 요약 내용입니다.
Kafka
- 데이터 스트림을 위한 Modern Distributed Event Streaming Platform
- Use Cases
- Messaging(RabbitMQ or ActiveMQ)
- Eventing (Logging 솔루션 부하 경감)
- 주로 로그 분석에만 포커스 되어 있고, 대용량 로그 저장에는 어려움이 존재.
- 로그 저장할 때, 앞단에 kafka 두고 정제한 다음 뒷단에서 로그 분석하는 형태로 많이 사용.
- ETL (Extract, Transform, Load)
- Stream Processing
사용 용도
- 이벤트 전송(Publish & Subscribe) - 주로 이 목적으로 많이 사용
- 이벤트 저장 - Apache Kafka 의 큰 특징.
- 이벤트 처리 및 분석
Kafka 의 특징
- 기존 메시징 관련 middleware 기능 모두 제공
- Producer 가 여러 Topic에 비동기 방식으로 메시지를 보낸다
- Consumer 는 메시지를 가져가서 필요할 때마다 메시지를 가져가고, Topic Offset 을 관리
- Event Stream Processing
- 실시간 이벤트 스트림 및 데이터를 분석해서, 해당 이벤트에 실시간 대응하기 위한 기술.
- 아래 ETL 과 Messaging 의 장점들만 모아놓음.
ETL (Pros)
- High scalable
- Durable
- Persistent
- Ordered
ETL (Cons)
- Batch
- Time Consuming
Messaging (Pros)
- Real-Time
Messaging (Cons)
- Difficult to scale
- No Replay
위에는 Kafka 를 언급했는데, 왜 Confluent 를 사용해야 되는가?
-
Confluent - 요약하자면 Kafka를 더 완벽하게 만들고 있는 업체
-
Confluent 개발자들은 Kafka 오픈소스 커밋 내역을 다수 가지고 있고, 이를 통해 이미 Apache Kafka 기본, High Level 에 대한 기술력을 가지고 있음
| Customer Goal | Enterprise Challenges | Mission Critical Features |
|---|---|---|
| 인기 있는 Data Sources 와 Sinks 를 연결 | 반복 가능한 방식으로 기존 데이터 시스템을 Kafka 에 연결 | Kafka Connect, Java Client |
| 인기 있는 Data Sources 와 Sinks 를 연결 | 기존 데이터 시스템을 Kafka 에 연결에 드는 비용 최소화 | Confluent Club |
| Application 개발 호환성 활성화 | 메시지 보내고 가져가는 부분에서 Data Scheme 를 맞추는 것에 대한 이슈가 발생할 수 있는데. Risk 를 줄이고자 하는 목적 | Schema Registry |
Confluent Platform
각 사용자 역할에 맞게 아래와 같은 기능이 필요하고, 이에 대한 기능을 제공한다고 합니다.
Developer - 개발자 생산성 극대화 필요
- 다양한 언어를 통한 개발 - Non-Java Clients | REST Proxy | Admin REST API
- 풍부한 Pre-built Connectors - Connectors, Connector Hub
- 이벤트 스트리밍 데이터베이스 - ksqlDB(캐시콜 DB 라고 부릅니다)
Operator - 대규모 운영 시 효율적인 운영 기능 필요
- GUI 기반 관리 및 모니터링 - Control Center
- DevOps 자동화 - Confluent Operator | Ansible
- 동적 성능 및 유연성 - Self-Balancing Cluster | Tiered Storage
Architect - 운영 환경 관련 필수 기능 필요
- Enterprise 급 보안 - RBAC, Secrets Protection, Audit Logs
- 데이터 호환성 - Schema Registry, Schema Validation
- 글로벌 탄력성 - Multi-region Clusters, Replicators, Cluster Linking
How to use
- 설치된 Software 로, Self-Managed 환경 활용 (Confluent Platform)
- 이미 구축된 Cloud Service 활용 (Confluent Cloud)
기존 복잡했던 스트림 프로세싱 아키텍처를 단순화
- ksqlDB 로 이벤트 캡처, 스트림 처리, Push & Pull 쿼리 제공 종합 솔루션 제공
- ksqlDB : Database 가 아닌, Event Streaming Processing Engine (SQL 연산을 사용해서 DB가 붙는다고합니다)
- Push Queries - 실시간 쿼리 결과 변경 전송(ex. 드라이버 어디 있고 요금은 얼마?)
- Pull Queries - 특정 시점 정보 조회(ex. 차량 비용, 운전 기사 이름 뭐였지?)
기존 Kafka API 와의 다른점
- 기존 이벤트 스트리밍 처리를 위해서는 kakfa 에서 제공하는 코드 를 사용해야 되고 coding 길이가 꽤 됨 (코드 길이가 길어지는 문제 발생)
- version up 되면서 kafka streams API 가 제공되었고, 훨씬 짧은 코딩으로 해결 가능
- ksqlDB - SQL 1 문장으로 이벤트 스트리밍 처리 가능
Confluent Platform 배포 옵션
- 컨테이너 환경
- k8s 환경에서 배포할 수 있도록 Confluent Operator 를 사용할 수 있다고 합니다.
- 컨테이너 환경이 아닌 경우
- Ansible Playbook 을 통해 이벤트 스트리밍 플랫폼을 대규모로 배포할 수 있다고 합니다.
Kafka 를 통한 스트리밍 서비스 개발 과정에서 MongoDB 를 어떻게 사용하는지?
Kafka Connector
- 다양한 플랫폼 데이터를 kafka 로 쉽게 가져오기 위한 목적으로 사용됨.
- https://hub.confluent.io
Kafka 메시지
-
Offset Timestamp key value (byte[]) 형태로 저장됨
-
MongoDB(Source) -> Converter -> Kafka -> Converter -> MongoDB(Sink)
Kafka Connector Types
- Source Connector
- Source 가 MongoDB 이고, MongoDB 에 있는 데이터들을 Kafka Cluster 내 Topic 로 전송하는 용도
- Change Streams(실시간 변경되는 데이터 목록)을 Document 형태로 MongoDB Connect 로 전달하고, Connector 는 Kafka Cluster 내 Topic 에 저장
- Sink Connector
- Kafka Cluster 내 Topic 에 저장되는 데이터, 이벤트들을 MongoDB 에 저장할 때 사용하는 용도
Kafka Connector v1.3 특징
- Auto-Generated Schema
- Dealing with infrequently updated sources
- write data to specific partitions
- copy existing enhancements
Confluent - MongoDB 사용 사례
- Centene
- MSA 방식으로 개발하여, 의료 데이터를 Kafka 로 가져오고 정제하고 MongoDB 로 전달하는 역할
- JP Morgan
- Challenges
- 중앙 집중 사고 및 이벤트 관리 솔루션 필요
- 레거시 어플리케이션 현대화
- Dashboard 필요
- 은행 전체 결제 처리, 고객 활동 추적 관련 실시간 데이터 통합 간소화 필요
- Solution
- Kafka & MongoDB 로 보안 로깅 플랫폼
- 80개 이상 Confluent Platform Cluster, 대용량 데이터를 처리
- Challenges
- and so on
QnA
RabbitMQ vs Apache Kafka, Confluent Platform
- RabbitMQ - 전통적인 messaging queue, 단. 메시지를 저장하는 기능은 없음.
- Apache Kafka, Confluent Platform - 기존 MQ 기능은 물론 Event Stream 기능까지 추가됨.
참고할 만한 링크