Apache Kafka
- 고성능 데이터 파이프라인, 스트리밍 분석, 데이터 통합 및 핵심 애플리케이션에 사용하는 오픈 소스 분산 이벤트 스트리밍 플랫폼.
- 대기열과 게시-구독이라는 두 가지 메시징 모델을 결합하여 각 모델의 주요 이점을 제공함.
대기열
-> 데이터 처리를 여러 소비자 인스턴스에 분산할 수 있어 뛰어난 확장성을 가졌으나 다중 구독자 방식이 아니라는 단점이 있음.
게시-구독
-> 다중 구독자로 모든 구독자에게 메시지가 전송된다는 장점이 있으나 여러 작업자 프로세스에 작업 분산 불가능.
= 대기열의 데이터 분산 방식 + 게시-구독의 다중 구독자 방식 결합
Kafka 사용 시 장점
Apache Kafka CDC
CDC(Change Data Capture, 변경 데이터 캡처)란?
데이터가 변경되는 시점과 해당 항목을 추적해 이러한 변경에 대응해야 하는 다른 시스템 및 서비스에 알림을 전송하는 검증된 데이터 통합 패턴
Kafka CDC
- CDC는 데이터베이스의 변경 사항을 캡처하지만 시스템에 변경 알림을 전달하기 위해 메시징 서비스 필요
→ Kafka를 이용해 CDC기법으로 데이터 변경 사항을 안정적으로 제공.
→ Kafka의 비동기 통신 제공 기능을 통해 비동기식 메시징 서비스로 변경 사항을 안정적으로 제공
→ 소스 시스템 변경이 발생할 때마다 타깃 시스템에 알려주는 CDC Push 방식에 Kafka를 통해 이벤트 누락의 단점을 해결
ZooKeeper란?
분산 시스템에서 시스템 간의 정보 공유, 상태 체크, 서버들 간의 동기화를 위한 락 등을 처리해주는 코디네이션 서비스를 제공하는 오픈소스 프로젝트.
ZooKeeper의 기능 및 특징
- 안정성을 확보하기 위해 클러스터로 구축됨
- 부분 실패(Partial Failure)를 안전하게 처리하기 위한 분산 처리 도구를 제공
- 분산 애플리케이션들이 각각 클라이언트가 되어 ZooKeeper 서버들과 커넥션을 맺은 후 상태 정보를 주고 받음
- 상태 정보들은 ZooKeeper znode(지노드)라고 불리는 곳에 KEY-VALUE형태로 저장되며 znode에 저장된 것을 이용해 데이터를 주고 받음