본문 바로가기

카테고리 없음

[Kafka] Kafka 아키텍쳐 정리와 공부 기록

반응형

최근엔 공부와 프로젝트에 집중하면서 개발자로서 성장해 나가고 있지만, 취업 준비 과정이 생각보다 쉽지 않아 솔직히 내가 정말 개발과 맞는 걸까? 하는 회의감도 들었습니다. 열심히 준비해도 원하는 결과가 바로 나오지 않으니 조금은 지치고 흔들리기도 했습니다 🥲

하지만 지금은 다시 마음을 다잡고 꾸준히 실력을 쌓고 경험을 늘리는게 언젠가 올 기회를 잡기 위한 연습이라고 생각합니다.

이번 Kafka 공부와 정리를 시작으로 계속해서 내 성장 기록을 남기며, 저와 같은 길을 걷는 분들에게 힘을주고 싶고

개발자로서 내가 가는 길에 대해 다시 한 번 자신감을 갖고 나아가 보겠습니다 🙇‍♂️


 

 

Kafka가 뭔데?

Apache Kafka는 이벤트 스트리밍 플랫폼으로 다양한 시스템에서 발생하는 이벤트 데이터를 실시간으로 수집, 저장 전달 처리할 수 있게 해주는 데이터 파이프라인 플랫폼 입니다.

https://kafka.apache.org

 

 

 

Kafka가 해결하려는 문제와 사용 이유

Kafaka를 공부하면서 "이게 대체 왜 필요한 거지?"라는 의문이 들었다. 이미 메세지 큐라는 것도 있고, 그저 메세지를 비동기로 전달하고 처리하는 방식이 익숙한데, 왜 카프카가 각광받는지 궁금했다.

 

전통적인 메세지 큐 서비스들은 일괄 처리가 기본으로 시스템 1에서 시스템 2로 메세지를 보내면, 컨슈머가 그것을 받아보고 큐에서는 큐에서는 해당 메세지는 사라진다. 하나의 데이터가 오직 한번만 소비될 수 있다. 서비스가 작을 때나 동시 접속이 적을 때는 큰 문제가 없어 보이지만 트래픽이 폭증하고, 여러 시스템에서 동일한 데이터를 다양한 목적으로 이용하려고 하면 곧 벽에 부딪힌다.
처리량이 높아질수록 큐가 병목이 되고, 장애가 발생하면서 데이터가 유실될 위험도 크다

 

Kafka의 장점

  • 기존 메세지 큐들의 한계
    - 한번 소비된 데이터도 재활용 가능
  • 실시간 데이터 처리와 이벤트 기반 이키텍처 구현 지원
  • 대용량 스트리밍 데이터의 안정적 저장과 분산 처리
    - 토픽은 여러개의 파티션으로 분리되어 각기 다른 브로커에 분산 저장 되는 구조로 수평 확장이 가능
    - 복제 기능을 통해 장애로 부터 데이터를 보호
  • 다양한 소비자에게 데이터를 동시에 전달할 수 있는 유연성 제공
    - 하나의 데이터 스트림을 여러 소비자가 독립적으로 구독할 수 있다

 

Kafka architecture

 

 

 

  • Kafka Cluster
    - 여러 개의 브로커가 모여 하나의 시스템처럼 동작하는 분산 환경입니다.
    - 클러스터는 데이터의 저장, 처리를 분산하여 처리량과 가용성을 높이고, 장애에 강한 구조를 만듭니다.
  • Producer
    - 데이터를 생성하고 Kafka 클러스터에 전달하는 역할
  • Consumer
    - Kafka 클러스터에 저장된 메세지를 읽고 처리하는 주체
  • Broker
    - Kafka 클러스터를 구성하는 서버 단위
    - 각 브로커는 여러 파티션 메세지를 저장, 관리하며, 메세지 저장과 전달, 복제 장애 복구 등의 역할 수행
  • Topic
    - 메세지들이 저장되는 논리적 단위
  • Partition
    - Topic 내의 물리적 저장 단위로 파티션은 메세지 순서를 보장하며 병렬 처리가 가능하게 해줌

 

 

📌 정리

Kafka는 무조건적으로 모든 시스템에 적합한 기술은 아닙니다. 강력하고 유연한 구조를 가지고 있지만, 동시에 복잡한 설정과 운영 부담도 따릅니다. 특히 대규모 트래픽 처리나 실시간 데이터 스트리밍이 핵심인 환경에서는 진가를 발휘하지만 오히려 소규모 서비스나 단순한 메세지 전달 수준의 시스템에서는 오히려 과도한 선택이 될 수 있습니다.

이번 글에서는 Kafka의 개념과 아키텍처를 간략하게 다뤄봤지만, 실제로 Kafka의 흥미로운 부분은 그 동작 방식과 내부 구조에 있는거 같습니다. 다음에는 Kafka가 데이터를 실제로 어떻게 주고 받으며, 어떤 방식으로 실시간성을 보장 하는지에 대해 정리해볼 생각입니다.

 

아직 시작이지만 Kafka를 이해하는 건, 단순히 메세징 시스템을 배우는 것이 아니라 데이터가 끊임 없이 흐르는 세상을 설계하는 것처럼 느껴집니다.

앞으로 공부를 계속 이어나가며 하나씩 정리해보겠습니다.

반응형