본문 바로가기
  • 노션에서 삽질한 내용을 정리하는 블로그
자기발전소/# Kafka_Confluent

[Kafka] Apache Kafka란

by iamlucia 2021. 5. 19.

📌 kafka 및 Confluent 를 공부하며 정리하는 글 

 

1. 카프카의 필요성 

기존의 데이터를 다루는 아키텍처는 너무 복잡했다.

아래 그림과 같이 비즈니스 구조에 필요한 데이터 source 시스템과 target 시스템이 점점 많아지면서 복잡해질 수 밖에..

https://engineering.linkedin.com/distributed-systems/log-what-every-software-engineer-should-know-about-real-time-datas-unifying

 

이렇게 꼬일대로 꼬인 데이터 스트림을 관리하기도 어려웠을 것이다.

그래서 이렇나 데이터 스트림과 시스템들을 decoupling 하는 작업이 필요해졌다.

이를 위해 바로 분산 메시지 처리 시스템인 Apache Kafka가 나왔다. 

 

아래와 같이 source 시스템은 각 target으로 모두 데이터를 보내는 대신에 하나의 Log에 데이터를 쌓는다. 

그리고 target 시스템에서는 Log에서 각각 자신이 필요한 데이터를 가져가게 되면서 훨씬 더 간결한 구조가 된다. 

https://engineering.linkedin.com/distributed-systems/log-what-every-software-engineer-should-know-about-real-time-datas-unifying

 

Apache Kafka는 LinkedIn에서 만들어졌는데, Kafka를 만든 사람이 LinkedIn을 나와 Confluent라는 회사를 설립했다.

그래서 지금 Apache Kafka는 Confluent사가 관리하는 오픈소스 프로젝트다.

 

Apache Kafka는 다음과 같은 특징을 가진다.

  • Distributed (분산형)
  • Resilient Architecture (탄력적 구조)
  • Fault Tolerant (장애내성)
  • Horizontal scalability (scale out 가능)
  • High Performance/real time (고성능 실시간 처리가능)

2. 카프카의 Use cases

그래서 아파치 카프카는 다음과 같은 용례를 가진다.

 

  • 메세지 시스템
  • 활동 추적
  • 다양한 metrics 정보 수집
  • 어플리케이션 로그 수집
  • 스트림 프로세싱 
  • 시스템 의존성의 분리
  • 다양한 Big Data 기술간의 통합

 

예를 들어,

넷플릭스는 카프카를 사용하여 시청자가 서비스를 이용하는 동안 실시간으로 추천 기능을 받아볼 수 있게 한다.

Uber 또한 카프카를 통해 서비스 사용자, 택시, 그리고 이동 데이터를 실시간으로 수집해서 수요를 예측하고 실시간으로 가격을 산정한다. 

 

3. Confluent 의 Kafka

Confluent사에서 이제 Kafka를 관리한다고 했다.

Confluent 는 Apache Kafka를 엔터프라이즈 환경에 맞게 만드는 것을 목표로 하고 있는데,

그러한 목표 하에 여러 컴포넌트들을 추가로 제공하고 있다.

 

 

Schema Registry

  • 표준 스키마를 사용하여 개발: 모든 표준 스키마의 버전 히스토리를 저장 및 공유하고, Client level 에서 데이터 적합성을 확인하여 개발의 효율성 향상
  • 운영의 복잡성 감소: 개발자 간 스키마를 표준화 및 조정하는데 드는 비용 감소

 

Control Center

: Apach Kafka로 하는 어플리케이션 운영 및 개발을 돕는 웹 GUI 기반 컨트롤 센터)

  • 운영자: 멀티 클러스터 환경과 보안을 중앙 관리 및 통제
  • 개발자: 메세지, 토픽, 스키마를 확인 및 커넥터 관리, ksqlDB 쿼리 작성 가능

 

Self Balancing

: 동적으로 브로커별 처리량 최적화

  • 토픽을 생성하거나 삭제하는 경우, 브로커별로 파티션 할당이 달라지는데 파티션 할당의 리밸런싱을 자동으로 제공
  • 셀프밸런싱은 백그라운드에서 진행되어 가용성에 영향을 미치지 않음

 

ksqlDB

: SQL문을 통해 데이터 스트림 쿼리 작업의 용이성 높임

 

 

Others..

  • Confluent HUB 를 통해 특정 어플리케이션과 Confluent 간의 연계 지원 여부 확인 가능
  • Operator Source를 통해 쿠버네티스 위에 Confluent 배포할 수 있게 지원
  • Production-ready Ansible Playbooks 지원

'자기발전소 > # Kafka_Confluent' 카테고리의 다른 글

[Kafka] Producer 관련 주요 옵션  (0) 2021.05.29
[Kafka] Broker & Zookeeper  (0) 2021.05.19
[Kafka] Consumer  (0) 2021.05.19
[Kafka] Producer  (0) 2021.05.19
[Kafka] Topic  (0) 2021.05.19