Kafka(카프카)가 뭐길래(개념, 정의)

Kafka(카프카)가 뭐길래(개념, 정의)

저번주 회의에서 팀장님과 차장님이 kafka에 대해 짧게 이야기를 나누셨는데 나는 메시지 다루는 시스템인 줄만 알았는데 비동기등 다양한 이야기를 해주셨다. 놓칠수없기에 따로 공부를 해보았다.

Kafka 카프카

chatGPT에 문의하니 아래와 같이 답변을 얻었다.

Kafka is an open-source platform used for handling large amounts of data in real-time. It was originally developed by LinkedIn, but is now maintained by the Apache Software Foundation.
Think of Kafka as a messaging system that can receive, store, and distribute data streams. It allows you to publish data to a stream or subscribe to a stream to receive data. This makes it useful for applications where data needs to be processed and analyzed as it’s generated, such as in a real-time analytics system.
Here’s a super easy example to help illustrate Kafka’s functionality:
Let’s say you have a website where users can upload images. Whenever a new image is uploaded, you want to process it in some way (maybe resizing it or running some filters on it) and then store it on your servers. You also want to display a thumbnail of the image on the website so users can see it right away.
With Kafka, you could set up a “topic” (a stream of data) called “image-uploads”. Whenever a user uploads an image, your website would send a message to the “image-uploads” topic with the details of the image (e.g. the file name, user ID, etc.). You could have a separate “consumer” application (i.e. a program that subscribes to the “image-uploads” topic) that listens for new messages and processes them accordingly.
For example, the consumer application might download the image, resize it, and store it on your servers. It could also generate a thumbnail and send a message to a separate “thumbnails” topic with the details of the thumbnail. Another consumer application could listen for messages on the “thumbnails” topic and display the thumbnail on the website.
This is just one simple example, but hopefully it gives you an idea of how Kafka can be used to handle real-time data processing and distribution.
출처: chatGPT

카프카 정의 및 특징

  • 실시간으로 대용량 데이터를 처리하는 오픈소스
  • 링크드인에서 처음 개발
  • 데이터 스트림을 수신, 저장 및 배포하는 메시징 시스템
  • 특징: 데이터를 스트림에 게시하거나 스트림을 구독하여 데이터를 수신할 수 있도록 함
  • 활용: 실시간 분석 시스템과 같이 데이터가 생성됨과 동시에 처리 및 분석해야 하는 애플리케이션에 유용

가장 쉬운 예시와 함께 설명해달라고 했더니 chatGPT가 준 사용자 이미지 업로드 웹사이트 예시를 알려줬다.
사용자 이미지 업로드와 동시에 썸네일만들어서 올리기, 이미지사이즈 조정하기등 특별한 절차가 존재한다면, Kafka를 통해 사용자이미지업로드라는 토픽을 만든 뒤 토픽을 구독하고 있는 모든 애플리케이션에 실시간으로 상세데이터와 함께 토픽을 전달한다.




참고

  • chatGPT