korean IT student

Kafka - Kafka란? 본문

Infra/Kafka

Kafka - Kafka란?

현창이 2021. 7. 25. 16:54

1. 아파치 카프카(Apache Kafka)란?

- Apache software Foundation의 Scalar 언어로 된 오픈 소스 메시지 브로커 프로젝트

  - 메시지 브로커 : 특정한 자원에서 다른 자원으로 메시지를 보내는 서버, 일반적인 text 메시지도 가능하고 다양한 문서 포멧(json, xml, 자바 object) 형태의 데이터를 보내는 쪽 받는 쪽 두 개를 구분시켜 원하는 쪽으로 안전하게 메시지를 전달한다.

- 링크드인(Linked-in)에서 개발, 2011년 오픈 소스화

- 실시간 데이터 피드를 관리하기 위해 통일된 높은 처리량, 낮은 지연 시간을 지닌 플랫폼

  - Apple, Netflix, Kakao 등 사용

 

2. 아파치 카프카(Apache Kafka)를 사용하는 이유?

                                                      

Kafka가 사용되기 이전에 시스템

- End-to-End 연결 방식의 아키텍처

- 데이터 연동의 복잡성 증가

- 서로 다른 데이터 pipeline 연결 구조

- 확장이 어려운 구조

Kafka를 사용하는 시스템

- 모든 시스템으로 데이터를 실시간으로 전송하여 처리할 수 있는 시스템

- 데이터가 많아지더라도 확장이 용이한 시스템

- 보내는 쪽과 받는 쪽이 누군지 신경쓰지 않고 메시지를 주고받는게 가능해진다.

- 메시지를 보내는쪽 Producer, 메시지를 받는쪽 Consumer 분리

- 메시지를 여러 Consumer에게 허용

  - 예를 들어 mysql에서 보낸 데이터를 kafka를 통해 hadoop, search engine, monitoring, email 보낼 수 있다.

- kafka 자체가 클러스터링 구조로 여러 개의 서버를 구성하여 작동 가능

 

3. 아파치 카프카(Apache Kafka) 기본 용어

 

카프카(kafka)

아파치 프로젝트 애플리케이션 이름, 클러스터 구성이 가능하며 카프카 클러스터라고 부른다. 카프카 클러스터는 브로커, 주키퍼, 토픽, 파티션, 리더, 팔로워로 이루어져 있다. 

 

주키퍼(Zookeeper)

주키퍼는 분산 코디네이션 시스템이다. 카프카 브로커를 하나의 클러스터로 코티네이팅 하는 역할을 하며 나중에 이야기할 카프카 클러스터의리더(Leader)를 발탁하는 방식도 주키퍼가 제공하는 기능이다.

 

브로커(Broker)

카프카 애플리케이션이 설치되어 있는 서버 또는 노드

 

토픽(Topic)

프로듀서와 컨슈머들이 카프카로 보낸 자신들의 메시지를 구분하기 위한 네임으로 사용한다. 토픽은 카프카 클러스터에서 여러 개 만들 수 있으며 하나의 토픽은 1개 이상의 (Parition)으로 구성되어 있다. 많은 수의 프로듀서 컨슈머들이 동일한 카프카를 이용하게 된다면, 메시지들이 서로 뒤섞여 있을 때, 토픽으로 구분하여 원하는 메시지 얻을 수 있다.

 

파티션(Partition)

각 토픽 당 데이터를 분산 처리하는 단위이다. 병렬 처리가 가능하도록 토픽을 나눌 수 있고, 많은 양의 메세시 처리를 위해 파티션 수를 늘려줄 수 있다. 카프카 옵션에서 지정하 replica의 수만큼 파티션이 각 서버들에게 복제된다. 파티션들은 운영 도중 그 수를 늘릴 수 있지만 절대 줄일 수 없다. 

 

리더, 팔로워(Leader, Follower)

카프카에서는 각 파티션당 복제된 파티션 중에서 하나의 리더가 선출된다. 이 리더는 모든 읽기, 쓰기 연상르 담당하게 된다. 리더를 제외한 나머지는 팔로워가 되고 이 팔로워들은 단순히 리더의 데이터를 복사하는 역할만 하게된다.

 

프로듀서(Producer)

메시지를 생산하여 브로커의 토픽 이름으로 보내는 서버 또는 애플리케이션등을 말한다.

 

컨슈머(Consumer)

브로커의 토픽 이름으로 저장된 메시지를 가져가는 서버 또는 애플리케이션을 말한다. 컨슈머의 집합을 구성하는 단위는 컨슈머 그룹이라고 부르며, 카프카에서는 컨슈머 그룹으로서 데이터를 처리하며 컨슈머 그룹 안의 컨슈머 수만큼 파티션의 데이터를 분산 처리하게 된다. 

 

참고 사이트 : https://engkimbs.tistory.com/691

 

 

3. 아파치 카프카(Apache Kafka) 사용 사례 및 활용

- 링크드인 : 웹사이트에서 생성되는 로그를 처리하여 웹사이트 활동을 추적하는 것을 목적으로 개발

- LINE

https://engineering.linecorp.com/ko/blog/how-to-use-kafka-in-line-1/

 

LINE에서 Kafka를 사용하는 방법 - 1편 - LINE ENGINEERING

안녕하세요. LINE에서 소프트웨어 엔지니어로 일하고 있는 Kawamura Yuto입니다. 저는 LINE 서버 개발을 중심으로 HBase 운영 등의 업무를 하고 있으며, 현재 전사적으로 Kafka 플랫폼을 제공하는 팀의 리

engineering.linecorp.com

-netflix

https://www.confluent.io/blog/how-kafka-is-used-by-netflix/

 

How Netflix Uses Kafka for Distributed Streaming

Netflix uses Kafka to achieve modernized, scalable infrastructure for real-time, fault-tolerant distributed messaging and data streaming.

www.confluent.io

 

'Infra > Kafka' 카테고리의 다른 글

Kafka - Kafka 설치 및 topic 생성 및 Producer/Consumer 실행  (0) 2021.07.25
Comments