티스토리 뷰

Kafka

[Kafka] 카프카 기본 개념

snail voyager 2023. 10. 30. 00:10
728x90
반응형

Apache Kafka

Apache Kafka는 대규모 데이터 스트리밍 및 이벤트 처리 플랫폼

 

이벤트 스트림: Kafka는 이벤트 스트림을 관리하는 데 사용되며, 다양한 이벤트 및 메시지를 스트림으로 전달

이벤트는 실시간으로 생성되고, Kafka를 통해 여러 소비자가 구독하고 처리

Topic: Kafka의 이벤트 스트림은 주제를 기반으로 구성.

각 Topic은 특정 유형의 이벤트를 포함하며, Producer는 특정 Topic에 이벤트를 게시합니다.

Producer: Kafka에 이벤트를 전달하는 애플리케이션.

프로듀서는 이벤트를 하나 이상의 Topic에 게시하며, 메시지를 Kafka 브로커에 전송.

Broker: Kafka 브로커는 Kafka 클러스터의 핵심 구성 요소.

브로커는 이벤트 스트림을 저장하고 consumer에게 전달하는 역할

Consumer: Kafka에서 이벤트를 소비하고 처리하는 애플리케이션.

consumer는 특정 주제 또는 파티션에서 이벤트를 읽어오며, 데이터 처리 또는 분석에 활용

Partition: 각 Topic은 하나 이상의 파티션으로 구성.

파티션은 이벤트 스트림을 병렬로 처리하기 위한 단위이며, 여러 소비자가 동시에 처리할 수 있도록 합니다.

 

데이터 파이프라인으로 적합한 이유

대량의 이벤트 처리: Kafka는 대규모 이벤트 스트림을 처리할 수 있으며, 초당 수백만 이벤트를 처리하는 데 적합합니다. 이는 대량의 데이터를 효율적으로 수집하고 전달하는 데 중요한 역할을 합니다.

분산 아키텍처: Kafka는 분산 시스템으로 설계되어 있으며, 다수의 브로커로 구성된 클러스터를 지원합니다. 이는 확장성을 제공하며, 데이터 스트림을 병렬로 처리할 수 있도록 합니다.

내결함성: Kafka는 데이터의 복제 및 복구를 지원하여 내결함성을 확보합니다. 이는 데이터 손실을 방지하고 안정성을 제공하는 데 도움이 됩니다.

유지 기간: Kafka는 데이터를 일정 기간 또는 저장 공간에 따라 보존하므로 데이터의 역사를 기록하고 분석에 활용할 수 있습니다. 이는 데이터 파이프라인에서 데이터 보존과 분석에 중요합니다.

프로듀서와 컨슈머: Kafka는 다양한 언어로 작성된 프로듀서 및 컨슈머 라이브러리를 제공하며, 다른 시스템과 쉽게 통합할 수 있습니다.

분리된 역할: Kafka는 이벤트의 발행과 구독을 분리하여 처리할 수 있습니다. 이는 데이터 스트림을 다양한 소비자 및 처리 시스템에 전달하는 데 유용합니다.

스케일 아웃: Kafka는 쉽게 스케일 아웃할 수 있으며, 브로커와 소비자 간의 병렬 처리를 통해 대량의 데이터를 처리할 수 있습니다.

유연성: Kafka는 다양한 데이터 형식 및 프로토콜을 지원하며, 다른 시스템과 쉽게 통합할 수 있습니다. 이는 데이터 파이프라인에서 데이터 호환성 및 유연성을 강화합니다.

모니터링 및 운영 도구: Kafka는 모니터링 및 운영을 지원하는 도구 및 라이브러리를 제공하며, 시스템의 건강 상태를 추적하고 문제를 식별하는 데 도움을 줍니다.

다양한 사용 사례: Kafka는 다양한 사용 사례에 적합하며, 로그 수집, 데이터 스트리밍, 이벤트 처리, 로그 분석, 리얼타임 대시보드 및 알림, 분산 시스템 통합 등 다양한 분야에서 사용됩니다.

 

API vs. Kafka

API

  • 두 시스템 간의 직접 동기 통신이 필요한 시나리오에 적합합니다.
  • 일반적으로 애플리케이션 통합, 리소스 액세스 및 데이터 검색에 사용됩니다.
  • 단순하고 지점 간 통신에 적합합니다.

Kafka

  • 대용량 데이터를 확장 가능하고 내결함성 방식으로 여러 소비자에게 배포해야 하는 시나리오에 이상적입니다.
  • 이벤트 중심 아키텍처, 스트림 처리 및 실시간 데이터 분석에 일반적으로 사용됩니다.
  • 생산자와 소비자 간의 분리가 필요한 시나리오에 적합합니다.

Kafka 사용 사례

1. 로그 집계: 중앙 집중식 처리, 분석 및 모니터링을 위해 다양한 서비스 및 애플리케이션에서 로그 데이터를 수집하고 집계

2. 메시지 시스템: 마이크로서비스 또는 애플리케이션 내의 다양한 구성 요소 간 통신을 위한 처리량이 높은 분산 메시징 시스템 역할

3. 스트림 처리: 사기 탐지, 모니터링, 추천 등과 같이 데이터가 도착하면 처리해야 하는 애플리케이션을 위한 실시간 데이터 처리 및 분석

4. 이벤트 소싱: 애플리케이션 상태를 일련의 이벤트로 저장하여 언제든지 애플리케이션 상태를 재구성 가능

5. 변경 데이터 캡처(CDC): 데이터베이스에 대한 변경 사항을 실시간으로 캡처하고 분석, 동기화 또는 복제를 위해 다른 시스템으로 스트리밍

6. 측정항목 및 모니터링: 실시간 분석 및 대시보드를 용이하게 하기 위해 다양한 소스에서 지표를 수집 및 처리하고 데이터를 모니터링

7. IoT(사물인터넷): IoT 장치의 데이터 스트림을 처리하고 대용량 데이터를 관리하며 IoT 애플리케이션을 위해 실시간으로 처리

8. 실시간 분석: 기업이 데이터 스트림에 대한 실시간 분석을 수행하여 즉각적인 통찰력과 의사 결정을 내릴 수 있도록 지원

9. 데이터 파이프라인 및 ETL(추출, 변환, 로드): 다양한 소스의 데이터를 데이터 레이크, 데이터 웨어하우스 또는 기타 시스템으로 수집, 처리, 변환 및 로드하기 위한 데이터 파이프라인을 구축

10. Decoupling 시스템: 분산 아키텍처에서 다양한 구성요소 또는 시스템을 분리하기 위한 메시징 백본 역할을 하여 안정적인 통신을 보장

11. 커밋 로그: 분산 데이터베이스, 금융 시스템 등과 같은 애플리케이션의 커밋 로그에 이벤트나 트랜잭션을 저장하여 내구성과 신뢰성을 보장

12. 마이크로서비스 통신: 이벤트 기반 아키텍처를 통해 마이크로서비스 간의 통신을 촉진하여 확장성과 느슨한 결합을 지원

13. 하이브리드 클라우드 통합: 온프레미스와 클라우드 시스템 간의 데이터 흐름을 통합하여 하이브리드 클라우드 환경 전반에서 애플리케이션과 데이터를 연결

728x90
반응형
반응형
300x250