사용 사례 및 실시간 예제가 포함된 Kafka
Apache Kafka는 대량의 데이터를 실시간으로 처리하도록 설계된 오픈 소스 분산 스트리밍 플랫폼으로, 실시간 데이터 파이프라인, 스트리밍 애플리케이션 및 이벤트 기반 아키텍처를 구축하기 위한 이상적인 플랫폼입니다.
사용 사례:
실시간 데이터 파이프라인
Kafka 의 가장 일반적인 사용 사례 중 하나는 실시간 데이터 파이프라인을 구축하는 것입니다. 예를 들어 Kafka는 센서, 로그 파일, 소셜 미디어 플랫폼 및 기타 소스에서 데이터를 수집하고 데이터 웨어하우스, 기계 학습 플랫폼 및 기타 대상으로 스트리밍하는 데 사용할 수 있습니다.
메시징 시스템
Kafka는 애플리케이션과 서비스 간에 빠르고 효율적인 메시지 전달을 허용하는 메시징 시스템으로도 사용할 수 있습니다. 예를 들어 Kafka는 채팅 애플리케이션, 이메일 시스템 및 기타 실시간 통신 시스템을 강화하는 데 사용할 수 있습니다.
스트림 처리
Apache Flink 및 Apache Spark Streaming 과 같은 스트림 처리 프레임워크에 대한 Kafka의 지원을 통해 실시간 데이터 처리 및 분석이 가능합니다. 예를 들어 Kafka는 실시간 사기 탐지 시스템, 실시간 추천 엔진 및 실시간 감정 분석 시스템을 구축하는 데 사용할 수 있습니다.
이벤트 기반 아키텍처
Kafka는 이벤트 기반 아키텍처를 지원하므로 복잡한 이벤트 기반 애플리케이션을 구축하는 데 이상적인 선택입니다. Kafka를 사용하면 이벤트를 실시간으로 생성, 소비 및 처리할 수 있습니다. 예를 들어 Kafka는 이벤트 기반 마이크로 서비스 아키텍처, IoT 플랫폼 및 기타 이벤트 기반 시스템을 구축하는 데 사용할 수 있습니다.
로그 집계
Kafka는 로그 집계에도 사용할 수 있으므로 여러 소스의 로그를 수집, 저장 및 분석할 수 있습니다. 예를 들어 Kafka는 웹 서버, 데이터베이스 및 기타 시스템에서 로그를 수집하고 분석하는 데 사용할 수 있습니다.
카프카의 핵심 구성 요소

카프카 주제:
- 주제는 생산자가 메시지를 게시하고 소비자가 메시지를 소비하는 데이터 스트림의 논리적 이름입니다.
- Kafka 주제는 Kafka 클러스터 전체에 저장되는 하나 이상의 파티션으로 나뉩니다.
브로커는 하나 이상의 Kafka 파티션을 저장하고 관리하는 Kafka 서버의 단일 인스턴스입니다. Kafka 클러스터는 Kafka 주제의 저장 및 처리를 관리하기 위해 함께 작동하는 하나 이상의 브로커로 구성됩니다.
생산자 및 소비자:
생산자는 kafka 주제에 데이터를 생성합니다. 생산자는 주제에 병렬로 데이터를 쓸 수 있으며 Kafka는 데이터가 파티션 전체에 고르게 분산되도록 합니다.
소비자는 하나 이상의 Kafka 주제에서 데이터를 사용합니다. 소비자는 주제를 구독하고 파티션에서 데이터를 읽습니다. Kafka는 그룹의 한 소비자만 지정된 시간에 파티션에서 데이터를 수신하도록 합니다.
파티션:
- Kafka 주제는 변경 불가능한 순서(immutable)의 메시지를 포함하는 여러 파티션으로 나뉩니다.
- 파티션의 각 메시지는 고유한 오프셋으로 할당되고 식별됩니다.
- 토픽에는 여러 파티션 로그가 있을 수도 있습니다. 이를 통해 여러 소비자가 토픽에서 병렬로 읽을 수 있습니다.
파티션의 메시지에는 오프셋이라는 고유한(파티션당) 순차 ID가 각각 할당됩니다.
소비자 그룹:
소비자 그룹은 Kafka 주제의 데이터를 소비하기 위해 함께 작동하는 하나 이상의 소비자 집합입니다.
복제:
복제는 데이터의 여러 복사본을 만드는 프로세스입니다. 복제는 브로커(노드)가 실패하거나 사용할 수 없게 되는 경우 해당 브로커에 저장된 데이터를 동일한 데이터의 복사본이 있는 다른 브로커에서 복구할 수 있도록 합니다.
Kafka API
Kafka에는 4개의 핵심 API가 있습니다.
생산자 API를 사용하면 애플리케이션이 하나 이상의 Kafka 주제에 레코드 스트림을 게시할 수 있습니다.
소비자 API를 사용하면 애플리케이션이 하나 이상의 주제를 구독하고 레코드 스트림을 처리할 수 있습니다.
Streams API를 사용하면 애플리케이션이 하나 이상의 항목에서 입력 스트림을 소비하고 하나 이상의 출력 항목에 대한 출력 스트림을 생성하여 입력 스트림을 출력 스트림으로 효과적으로 변환하는 스트림 프로세서 역할을 할 수 있습니다.
커넥터 API를 사용하면 Kafka 주제를 기존 애플리케이션 또는 데이터 시스템에 연결하는 재사용 가능한 생산자 또는 소비자를 구축하고 실행할 수 있습니다. 예를 들어 관계형 데이터베이스에 대한 커넥터는 테이블에 대한 모든 변경 사항을 캡처할 수 있습니다.
실제 사례
- LinkedIn: LinkedIn은 Kafka를 사용하여 실시간 사용자 활동 데이터를 처리하고 스트리밍합니다. 이 플랫폼은 하루에 2조 개 이상의 메시지를 생성하며 Kafka는 실시간 처리 및 분석을 허용하여 이 방대한 양의 데이터를 관리하는 데 도움을 줍니다.
- Uber: Uber는 Kafka를 사용하여 실시간 데이터 스트림을 관리합니다. Kafka는 Uber가 실시간 위치 데이터, 여행 데이터 및 지불 데이터를 포함하여 회사의 드라이버 및 탑승자 애플리케이션에서 생성된 데이터 흐름을 관리하는 데 도움이 됩니다.
- Netflix: Netflix는 Kafka를 사용하여 데이터 파이프라인을 관리하고 마이크로서비스 간에 데이터를 스트리밍합니다. Kafka는 Netflix가 서로 다른 서비스 간의 데이터 흐름을 관리하도록 지원하여 각 서비스가 사용자에게 원활한 스트리밍 경험을 제공하는 데 필요한 데이터에 액세스할 수 있도록 합니다.
- Airbnb: Airbnb는 Kafka를 사용하여 이벤트 기반 아키텍처를 강화합니다. Kafka는 Airbnb가 사용자 및 서비스에서 생성된 이벤트 흐름을 관리하여 개인화된 추천 및 원활한 사용자 경험을 제공할 수 있도록 지원합니다.
- Twitter: Twitter는 Kafka를 사용하여 실시간 소셜 미디어 데이터를 관리합니다. Kafka는 Twitter가 사용자가 생성한 방대한 양의 데이터를 관리하여 광고주와 파트너에게 실시간 통찰력과 분석을 제공할 수 있도록 지원합니다.
Spring Boot를 사용한 Spring Security 역할 기반 액세스
스프링 AOP 튜토리얼
javinpaul Domenico Nicoli Trey Huffine Mehmet Arsl Mehmet Ozkaya 교육 팀