SW/면접

Kafka란? 쉽게 이해하는 실시간 데이터 처리 시스템

얇은생각 2025. 4. 6. 07:30
반응형

Kafka가 뭐길래 이렇게 핫할까?

Kafka라는 단어, IT 업계에서 많이 들어봤을 텐데요. 근데 이게 도대체 뭐고, 왜 이렇게 핫한 걸까요? 사실 처음 보면 꽤 복잡해 보이지만, 알고 보면 엄청 유용한 녀석입니다. 오늘은 진짜 쉽게 풀어볼게요.

 

Kafka란? 쉽게 이해하는 실시간 데이터 처리 시스템

 

Kafka가 필요한 순간

이야기를 쉽게 풀어볼게요. 만약 여러분이 **온라인 쇼핑몰 '스트림 스토어'**를 운영한다고 가정해 봅시다. 이 쇼핑몰에서는 결제, 주문, 재고 관리 등 여러 서비스가 돌아갑니다. 고객이 주문을 하면, 일이 줄줄이 발생하죠:

  • 재고를 업데이트해야 하고
  • 고객에게 주문 확인 이메일을 보내야 하고
  • 세금 포함된 청구서도 만들어야 하고
  • 매출 데이터도 업데이트해야 합니다.

 

처음에는 서비스끼리 직접 데이터를 주고받으며 잘 작동할 거예요. 하지만, 블랙프라이데이 같은 폭풍 할인 시즌이 오면? 주문이 폭주하면서 갑자기 시스템이 휘청거리기 시작합니다.

  • 서비스 간 강한 연결성: 하나가 문제 생기면, 다 같이 멈춰버림.
  • 속도 저하: 한 서비스가 느려지면 다 같이 줄줄이 대기 상태.
  • 단일 장애 지점: 특정 서비스가 죽으면 주문 자체가 안 됨.
  • 데이터 손실: 분석 서비스가 멈추면 중요한 매출 데이터가 날아감.

 

자, 여기서 Kafka가 등장합니다. Kafka는 이런 문제를 해결하는 강력한 도구입니다!

 

Kafka를 쉽게 이해하는 방법

Kafka를 가장 쉽게 이해하는 방법? 바로 우체국 시스템을 떠올려 보세요. 모든 서비스가 서로 직접 연락하지 않고 Kafka라는 중앙 중개소를 통해 데이터를 주고받는 방식입니다. 이렇게 하면:

  • 서비스끼리 강하게 묶이지 않아서 더 유연해짐.
  • Kafka가 데이터를 안전하게 보관해 필요할 때 꺼내 쓸 수 있음.
  • 데이터가 원활하게 흐르면서 컨베이어 벨트처럼 깔끔하게 처리됨.

 

Kafka의 기본 개념

예를 들어, 고객이 주문하면 **주문 서비스(Order Service)**가 Kafka에 메시지를 보냅니다. 그리고 이걸 **특정 주제(Topic)**에 저장해 두죠. 이후 재고, 결제, 알림 서비스가 이 메시지를 받아서 각각 해야 할 일을 합니다.

 

Kafka의 핵심 요소:

  1. 생산자(Producer): 데이터를 생성하고 Kafka로 보내는 역할.
  2. 주제(Topic): 관련 데이터를 모아두는 메시지 큐.
  3. 소비자(Consumer): 주제를 구독해서 데이터를 받아가는 서비스.
  4. 브로커(Broker): Kafka 서버로 데이터를 저장하고 관리하는 친구.

 

Kafka와 기존 데이터베이스의 차이

"Kafka가 데이터베이스를 대체하는 건가요?" Nope! Kafka는 이벤트 기반 실시간 데이터 처리 플랫폼입니다. 즉, 빠르게 데이터를 흘려보내는 역할을 하는 거죠. 반면, 데이터베이스는 오래 보관하는 역할을 합니다.

 

예를 들면:

  • 재고가 변경될 때 Kafka에 이벤트를 보냄.
  • 이걸 감지한 서비스가 재고 부족 경고를 보냄.
  • 자동으로 재고 보충 주문을 넣음.

 

이런 식으로 데이터 흐름을 자동으로 처리할 수 있어요!

 

실시간 데이터 처리의 힘

Kafka는 단순한 메시지 큐가 아니라 실시간 스트리밍 분석도 가능합니다.

  • 이커머스: 실시간으로 매출 데이터 업데이트.
  • 배달 앱: 배달 기사 위치 실시간 추적.
  • 주식 거래: 초당 수천 개의 거래 데이터 처리.

 

Kafka의 확장성: 파티션과 소비자 그룹

수백만 개의 데이터를 효율적으로 처리하려면 **파티셔닝(Partitioning)**이 필요합니다. 쉽게 말해, Kafka는 하나의 큐에 데이터를 몰아넣는 게 아니라 여러 개의 작은 큐(파티션)로 나눠서 성능을 높입니다.

  • 다수의 서비스가 동시에 데이터를 병렬 처리 가능.
  • 읽기/쓰기 속도가 빨라짐.
  • 트래픽이 많아져도 유연하게 확장 가능.

 

예를 들어, **주문 주제(Order Topic)**를 지역별로 나눠서 처리할 수도 있습니다.

  • 유럽 주문 파티션
  • 미국 주문 파티션
  • 아시아 주문 파티션

 

소비자 그룹: 부하 분산

Kafka는 **소비자 그룹(Consumer Groups)**을 활용해서 데이터를 분산 처리합니다. 예를 들어, 트래픽이 폭증하면 추가 소비자를 배포해서 부하를 나누면 되죠. 효율적이지 않나요?

 

Kafka 브로커: 데이터 저장과 관리

Kafka는 데이터를 여러 개의 **브로커(Broker)**에 나누어 저장합니다. 이러면:

  • **데이터 중복 저장(Replication)**으로 백업 가능.
  • **부하 분산(Load Balancing)**으로 성능 최적화.
  • 만약 브로커 하나가 죽어도, 다른 브로커가 데이터를 유지!

 

Kafka vs 기존 메시지 브로커

기존의 메시지 큐 시스템(RabbitMQ, ActiveMQ 등)은 소비자가 메시지를 가져가면 바로 삭제됩니다. 하지만 Kafka는 일정 기간 저장할 수 있어서:

  • 과거 데이터를 다시 처리 가능.
  • 원하는 시간에 데이터를 조회할 수 있음.
  • 이벤트 재생 기능 덕분에 디버깅과 분석이 쉬움.

 

Kafka의 새로운 변화: Zookeeper vs KRaft

기존 Kafka는 Zookeeper라는 외부 도구를 사용해 클러스터를 관리했지만, 최신 Kafka 3.0 버전부터는 **KRaft(Kafka Raft)**를 도입해 Zookeeper 없이 운영이 가능하게 되었습니다.

 

결론: Kafka가 왜 이렇게 인기일까?

Kafka는 확장성, 안정성, 실시간 데이터 처리를 모두 갖춘 강력한 이벤트 스트리밍 플랫폼입니다.

 

요약!

  • Kafka는 마이크로서비스 간 비동기 통신을 지원하여 더 안정적임.
  • 실시간 이벤트 스트리밍 덕분에 데이터 처리가 빠름.
  • 파티션과 소비자 그룹을 이용하면 대량 데이터도 문제없이 처리 가능.
  • Kafka는 데이터베이스가 아니라 이벤트 기반 메시징 시스템.
  • 최신 Kafka는 Zookeeper 없이도 운영 가능(KRaft 도입).

 

이제 Kafka가 왜 이렇게 인기인지 감이 오셨나요? 앞으로 점점 더 많은 IT 시스템에서 Kafka가 필수 요소가 될 거예요!

반응형