본문 바로가기
BackEnd/Project

[BigData] Ch12. Kafka추가 활용 사례

by 개발 Blog 2024. 9. 19.

공부 내용을 정리하고 앞으로의 학습에 이해를 돕기 위해 작성합니다.

 

Kafka는 대규모 실시간 데이터 처리에 적합한 분산 스트리밍 플랫폼으로, 다양한 분야에서 활용되고 있다. 이번 장에서는 Kafka의 추가 활용 사례 중 하나인 동적 고객 채팅 시스템에 대해 알아본다.

 

Dynamic Customer Chatting

 

Kafka는 대규모 실시간 데이터 처리에 적합한 분산 스트리밍 플랫폼으로, 다양한 분야에서 활용되고 있다. 그중 하나가 동적 고객 채팅 시스템이다. 이 시스템은 사용자의 문의사항을 실시간으로 상담하는 데 사용되며, Kafka의 특성을 활용하여 구현할 수 있다.

동적 고객 채팅 시스템 구성요소

  • 채팅방
  • 회원
  • 상담사
  • 채팅 내용의 발신 및 수신

설계 시 고려사항

  • 채팅방의 수
  • 각 채팅방 참여자 수
  • 전달할 컨텐츠 특성
  • 채팅 히스토리 기록 방식

Kafka vs Redis

실제로는 Kafka보다 Redis의 Pub/Sub 모델을 더 많이 사용한다.

Redis의 장점

  • 실시간 정보의 일시적 저장에 용이
  • 동기식 통신으로 채팅에 적합
  • 사내 메신저, 다이나믹 챗에 주로 사용

Kafka의 특징

  • 데이터에 대한 높은 신뢰성
  • 대규모 데이터 처리에 적합

Redis CLI를 사용한 채팅 메시지 publish 예시

이 이미지는 Redis CLI를 사용하여 실제로 채팅 메시지를 publish 하는 과정을 보여준다.

동적 고객 채팅 시스템 구현 시, 요구사항과 특성에 따라 Redis나 Kafka 중 적절한 기술을 선택해야 합니다. 실시간성과 가벼운 통신이 중요하다면 Redis를, 데이터 신뢰성과 대규모 처리가 필요하다면 Kafka를 고려할 수 있습니다. 각 기술의 장단점을 정확히 이해하고 시스템의 요구사항에 맞게 선택하는 것이 중요합니다.

 

Big Data 적재

빅데이터 시스템에서 효율적인 데이터 허브 구축은 중요한 과제이다. 이를 위해 Kafka Connect를 활용하는 방법을 살펴본다.

먼저, 데이터 아키텍처의 두 가지 주요 모델을 비교한다.

  1. Point-to-Point 모델
  2. Hub and Spoke 모델

Hub and Spoke 모델의 특징

  1. 통제가 용이하다: 공통 규칙 적용과 영향도 파악이 쉽다.
  2. 적용이 간편하다: 일관된 템플릿을 사용할 수 있다.
  3. 의존성이 발생한다: 분리, 확장, 부하 등에 상호 영향을 미친다.
  4. 리스크가 비교적 크다: 장애 시 영향 범위가 넓을 수 있다.

Data Hub의 주요 구성요소

  1. RDB: Oracle, MySQL, MS SQL, PostgreSQL
  2. ColumnDB: SAP HANA, Oracle Exadata, AWS RedShift
  3. BigData: HDFS
  4. NoSQL: MongoDB, CouchDB, Elasticsearch
  5. Object Storage: S3
  6. IoT, Services, Files

이러한 다양한 데이터 소스와 목적지를 효율적으로 연결하기 위해 Kafka Connect를 사용한다.

 

Kafka Connect의 주요 특징

  • 다양한 소스와 목적지에 대한 연결이 용이하다.
  • 서비스 변경 및 추가가 빈번한 환경에 적합하다.
  • 손쉬운 추가/변경/삭제가 가능하다.
  • 별도 저장소를 통한 설정 관리를 권장한다.
  • 용도에 따라 별도 Kafka Cluster 구축을 고려한다.

Kafka Connect 설정 및 실행 단계

 

  • 설정 단계
    1. Properties를 통해 서버의 설정한다 (기본 포트: 8083).
    2. connect-distributed.sh를 실행하여 Connect를 구동한다.
    3. 필요한 JAR 파일을 libs 폴더에 다운로드한다.
    4. JSON 형식으로 connector 속성을 설정한다.
    5. 설정된 JSON 정보를 REST API로 호출한다 (Source, Sink 동일).
  • 추가 팁
    • Source와 Sink의 속성 설정 시 예제를 확인하고 작업을 진행한다.
    • Inbound/Outbound Port를 열어준다.
    • 특정 부분이 작동하지 않을 때는 다른 형태 (예: 파일)로 변경하여 작업을 시도해본다.
    • 전체적인 작업을 시작하기 전에 특정 Table, Object, 경로, 또는 Index만 먼저 시도해 본다.