Apache Kafka(Kafka)는 실시간 이벤트 기반 애플리케이션 개발을 지원하는 것을 비롯하여 많은 이점을 가진 오픈 소스 분산형 스트리밍 플랫폼입니다. 이것은 무엇을 의미할까요?
오늘날 수십억 개에 달하는 데이터 소스로부터 끊임없이 데이터 레코드의 스트림이 생성되고 있습니다. 여기에는 이벤트 스트림도 포함됩니다. 이벤트란 일어난 활동 및 그 시간에 관한 디지털 기록입니다. 일반적으로 이벤트는 어떤 프로세스의 일환으로 또 다른 활동을 촉발하는 활동입니다. 고객이 주문하고, 항공기 좌석을 선택하고, 등록 양식을 제출하는 것 모두 이벤트에 해당합니다. 이벤트에 사람이 꼭 개입할 필요는 없습니다. 예컨대 연결된 온도 조절 장치가 특정 시점에 온도를 알려주는 것도 이벤트입니다.
이러한 스트림 덕분에 애플리케이션이 데이터나 이벤트에 실시간으로 응답하는 것이 가능해집니다. 개발자는 스트리밍 플랫폼을 통해 매우 빠른 속도로, 그리고 올바른 발생 순서를 기준으로 탁월한 충실도와 정확성을 발휘하면서 이러한 스트림을 소비하고 처리하는 애플리케이션을 빌드할 수 있습니다.
LinkedIn에서 2011년, 자체적으로 사용할 처리 성능이 우수한 메시지 브로커로 Kafka를 개발했습니다. 그리고 Kafka의 소스를 공개하고 Apache Software Foundation(ibm.com 외부 링크)에 기증했습니다. 오늘날 Kafka는 가장 널리 쓰이는 스트리밍 플랫폼으로 발전했습니다. 매일 조 단위의 레코드를 입수하고 처리할 수 있으며, 볼륨이 늘더라도 인지할 만한 성능 저하는 발생하지 않습니다. Target, Microsoft, AirBnB, Netflix와 같은 Fortune 500대 기업에서 Kafka를 활용하여 고객에게 실시간 데이터 기반 경험을 제공합니다.
다음 동영상(9:10)에서 Kafka에 관해 더 자세히 알아볼 수 있습니다.
Kafka에는 3가지 주요 기능이 있습니다.
개발자는 4가지 API를 통해 이러한 Kafka 기능을 활용할 수 있습니다.
Kafka는 분산형 플랫폼입니다. 결함 허용 고가용성 클러스터의 형태로 실행되는데, 여러 서버나 심지어 여러 데이터 센터를 포괄하기도 합니다. Kafka 토픽은 성능 저하 없이 수많은 동시 소비자를 서비스할 만큼 확장 가능한 방식으로 분할되고 복제됩니다. 그 결과, Apache.org에 따르면, “Kafka는 서버에 50KB, 또는 50TB의 영구 스토리지가 있더라도 동일한 성능을 발휘"합니다.
Kafka는 주로 2가지 종류의 애플리케이션 개발에 쓰입니다.
RabbitMQ는 매우 널리 쓰이는 오픈 소스 메시지 브로커입니다. 메시지 브로커란 애플리케이션, 시스템, 서비스 간에 메시징 프로토콜을 변환해주면서 상호 통신을 가능하게 하는 미들웨어 유형입니다.
Kafka는 일종의 메시지 브로커로 시작했으므로 (따라서 이론상으로는 아직도 메시지 브로커의 기능을 할 수 있으므로), 또한 RabbitMQ에서 게시/구독 메시징 모델도 지원하므로, Kafka와 RabbitMQ는 상호 대안으로 자주 비교되곤 합니다. 하지만 이러한 비교가 현실적이지는 않으며, 둘 중 하나를 선택하는 것과는 거리가 있는 기술적 세부 사항에 관한 논의가 대부분입니다. 예를 들어 Kafka 토픽은 여러 개의 구독자를 가질 수 있으나, RabbitMQ 메시지 각각은 하나만 가질 수 있습니다. Kafka 토픽은 지속적이지만, RabbitMQ 메시지는 소비된 후에는 삭제됩니다.
결론:
Kafka는 더 큰 범위의 스트림 처리인 이벤트 기반 아키텍처, 또는 빅데이터 분석 솔루션에 포함되어 다른 Apache 기술과 함께 쓰일 때가 많습니다.
Apache Spark는 대규모 데이터 처리를 위한 분석 엔진입니다. Apache Kafka에서 제공하는 스트림을 대상으로 분석을 수행할 때, 그리고 앞서 언급한 클릭스트림 분석과 같이 실시간 스트림 처리 애플리케이션을 제작하기 위해 Spark를 사용할 수 있습니다.
Apache NiFi는 데이터 플로우 관리 시스템이며, 드래그 앤 드롭 방식의 비주얼 인터페이스를 갖추었습니다. NiFi는 Kafka 생산자 및 Kafka 소비자로 실행할 수 있으므로, Kafka에서 다루지 못하는 데이터 플로우 문제를 해결하는 데 효과적인 툴입니다.
Apache Flink는 이벤트 스트림을 대상으로 규모의 제약 없이, 계속 빠른 속도와 짧은 대기 시간으로 컴퓨팅을 수행하기 위한 엔진입니다. Flink는 Kafka 소비자의 역할로 스트림을 주입하고, 이 스트림을 기반으로 실시간 작업을 수행하고, 그 결과를 Kafka나 다른 애플리케이션에 게시할 수 있습니다.
Apache Hadoop은 분산형 소프트웨어 프레임워크입니다. 방대한 데이터를 컴퓨터 클러스터에 저장하여 빅데이터 분석, 머신러닝, 데이터 마이닝 등 정형 데이터와 비정형 데이터를 처리하는 각종 데이터 기반 애플리케이션에 사용할 수 있게 합니다. Kafka는 대개 Hadoop 클러스터에 실시간 스트리밍 데이터 파이프라인을 생성하는 데 쓰입니다.
어떤 클라우드에서도 안전하고 확실하게 애플리케이션을 빌드, 현대화, 관리합니다.
비즈니스 워크플로우부터 IT 운영까지 어떤 영역도 AI 기반 자동화로 지원합니다.
업계에서 가장 포괄적인 통합 플랫폼으로 인정받는 IBM Cloud Pak for Integration에서 각종 애플리케이션, 서비스, 데이터를 연결할 수 있습니다.