본문 바로가기
개발/Framework || Lib

Apache Kafka

by 백아절현 2024. 10. 29.
 

Apache Kafka 개요 및 특징

Apache Kafka는 대규모 분산 메시징 시스템으로, LinkedIn이 개발하고 2011년 오픈 소스로 공개되었습니다. Kafka는 실시간 데이터 스트리밍 플랫폼으로서, 대용량 로그 데이터를 빠르게 수집, 전송, 저장 및 처리할 수 있는 기능을 제공합니다. 기존 메시징 시스템에 비해 높은 TPS(초당 전송량)를 지원하고 있으며, 실시간 로그 처리에 최적화된 아키텍처 덕분에 빠르게 성장하고 있습니다.

Kafka의 주요 구성 요소

  1. 브로커(Broker): 데이터를 수신하고 전달하는 서버로, 여러 브로커가 클러스터 형태로 결합하여 대규모 데이터를 안정적으로 처리합니다.
  2. 프로듀서(Producer): 데이터를 생성하여 브로커에 전송하는 역할을 합니다. 다양한 애플리케이션에서 프로듀서로 기능하여 Kafka에 데이터를 송신합니다.
  3. 컨슈머(Consumer): 브로커에 저장된 데이터를 읽어 사용하는 애플리케이션으로, 소비해야 하는 데이터의 주제(토픽)를 구독하여 데이터를 처리합니다.
  4. 토픽(Topic): 데이터가 저장되는 논리적 단위입니다. 각 토픽은 여러 파티션으로 구성되며, 데이터를 병렬로 처리하여 성능을 극대화합니다.
  5. 파티션(Partition): 토픽을 여러 파티션으로 나누어 데이터를 분산 저장하고, 병렬 처리가 가능하도록 합니다.

Kafka의 특징

  1. 확장성: Kafka는 여러 서버로 확장 가능하여 데이터 양과 시스템의 부하에 따라 유연하게 확장할 수 있습니다.
  2. 영속성: 데이터가 디스크에 저장되어 언제든지 데이터를 다시 읽을 수 있으며, 데이터를 복제하여 장애 발생 시 데이터를 보호합니다.
  3. 유연성: Kafka는 다양한 시스템 및 제품과의 연동이 용이하여 데이터 허브로서의 역할을 수행합니다.
  4. 신뢰성: 메시지 전달 보증을 통해 데이터 손실 없이 데이터를 안전하게 전송하며, 다양한 전달 보증 수준을 설정할 수 있습니다.

Kafka의 탄생 배경과 발전

Kafka는 LinkedIn의 대규모 로그 데이터 처리와 웹사이트 모니터링 목적을 위해 개발되었습니다. 이전의 메시지 큐나 로그 수집 시스템들은 대량의 데이터를 안정적으로 처리하는 데 한계가 있었기 때문에, 이를 해결하고자 Kafka가 등장하게 되었습니다. 이후 Kafka는 Apache의 오픈 소스 프로젝트로 성장하였고, 다양한 클라우드 서비스와의 연동이 지원되면서 더욱 확산되고 있습니다.

Kafka의 주요 사용 사례

  1. 로그 수집: 다양한 애플리케이션에서 생성되는 로그를 실시간으로 수집하여 BI 도구나 데이터 대시보드에 활용할 수 있습니다.
  2. 데이터 파이프라인: 데이터 소스와 타겟 시스템을 연결하여 실시간 데이터 흐름을 구축할 수 있습니다.
  3. 이벤트 소싱 및 CQRS: 데이터 상태 변경을 이벤트로 기록하고, CQRS 아키텍처를 적용해 효율적인 데이터 처리가 가능합니다.
  4. 웹 활동 분석: 웹사이트에서 발생하는 사용자 활동을 실시간으로 분석하고 모니터링하여 맞춤형 권장사항 제공과 이상 탐지에 활용할 수 있습니다.

Kafka의 도입을 고려해야 하는 이유

Kafka는 확장성, 영속성, 유연성, 신뢰성을 갖춘 고성능 데이터 스트리밍 플랫폼으로, 대규모 실시간 데이터 처리가 필요한 다양한 산업에서 활발히 사용되고 있습니다. 실시간 데이터 스트리밍이나 분산 메시징이 필요한 환경이라면 Kafka는 최고의 선택이 될 수 있습니다.

'개발 > Framework || Lib' 카테고리의 다른 글

블록체인 애플리케이션 개발의 새로운 패러다임  (4) 2024.10.29
POI 수식 재계산  (0) 2019.03.19
jackcess 사용하기 (JAVA)  (0) 2018.12.05
IBATIS RESUTL 에러  (0) 2010.07.07
Oracle cursor 접근 방법  (0) 2009.10.07

댓글