아파치 카프카(Apache Kafka)는 대용량 데이터 스트리밍을 처리하기 위한 오픈 소스 플랫폼으로, 분산형 메시지 큐 시스템이다. 2010년에 LinkedIn에서 개발된 후, 아파치 소프트웨어 재단에 기부되어 현재까지 널리 사용되고 있다. 카프카는 데이터 흐름을 관리하고 실시간 처리를 가능하게 하여, 다양한 데이터 소스와 애플리케이션 간의 연결을 효율적으로 지원한다.
카프카의 주요 구성요소
프로듀서(Producer): 데이터를 카프카 클러스터에 전송하는 역할을 한다.
컨슈머(Consumer): 카프카에서 데이터를 읽어오는 역할을 한다.
브로커(Broker): 카프카 클러스터를 구성하는 서버로, 데이터를 저장하고 프로듀서와 컨슈머 간의 메시지를 중개한다.
주제(Topic): 메시지가 저장되는 카테고리로, 각 주제는 여러 파티션으로 나눌 수 있다.
카프카 활용의 장점
높은 확장성: 카프카는 분산형 아키텍처로 설계되어 있어, 시스템의 수요가 증가할 때 손쉽게 서버를 추가할 수 있다.
내결함성: 데이터가 여러 브로커에 복제되어, 일부 서버가 다운되더라도 데이터 손실 없이 운영될 수 있다.
실시간 데이터 처리: 카프카는 고속의 데이터 스트리밍을 지원하므로, 실시간 데이터 분석과 처리가 가능하다.
다양한 언어 지원: 카프카는 다양한 프로그래밍 언어와 플랫폼에서 사용할 수 있어, 유연성이 높다.
카프카 활용의 단점
복잡성: 초기 설정과 운영이 복잡할 수 있으며, 특히 분산 시스템에 익숙하지 않은 개발자에게는 어려움이 있을 수 있다.
메시지 순서 보장 문제: 파티션 내에서는 메시지 순서를 보장하지만, 여러 파티션에 걸쳐서는 순서가 보장되지 않는다.
관리 부담: 카프카 클러스터의 유지 관리가 필요하며, 모니터링 및 조정 작업이 필요할 수 있다.
자원 소모: 대량의 데이터를 처리하는 만큼, 하드웨어 자원 소모가 클 수 있다.
카프카 활용 방안
1. 실시간 로그 수집
2. 이벤트 드리븐 아키텍처
3. IoT 데이터 수집 및 분석
4. 머신러닝 모델 운영
직접 따라하며 설치해보기
1. 카프카 다운로드
먼저 아래의 주소를 통해 카프카를 다운로드 한다. 테스트 해볼 버전은 스칼라 2.12 -카프카 2.5.0버전이다.
카프카가 실행되기 위해서는 주키퍼가 실행되어야 한다. 주키퍼는 분산 시스템에서 여러 노드 간에 데이터를 일관되게 관리하고, 노드 간의 동기화와 상태 관리를 쉽게 할 수 있도록 도와준다. 리더 선출, 구성 정보 관리, 상태 모니터링, 메타 데이터 저장 등의 작업을 효율적으로 수행할 수 있다.