kafka가 그래서 뭔데?

도람·2026년 3월 1일

직접 확인해보자

목록 보기
2/2
post-thumbnail

팀 프로젝트에서 kafka를 사용하기로 결정했고, 이에 대한 얕은 지식만 갖고 있었다. 그러다 멘토님께서 kafka가 뭔지 설명하라고 하셨고, 이를 사용하는 이유 등 기초적인 질문을 던지셨는데 제대로 답변하지 못하는 나의 모습을 보고
제대로 알고 써야겠다는 생각에 다시 공부하고자 이 글을 쓰게 되었다.


Kafka가 그래서 뭔데?

kafka에대한 글을 읽는데 메세징 큐 서비스, 비동기 서비스 등 대부분의 글들이 잘 와닿지 않게 적혀있었다.

그래서 아주 기초적인 개념부터 파고자 했다.

Google cloud : Apache Kafka란 무엇인가요?
에서는 카프카에 대해 다음과 같이 정의한다:

"Apache Kafka는 별도의 시작이나 끝이 없는 스트리밍 이벤트 데이터 또는 일반 데이터를 수집, 처리, 저장하는 데 널리 사용되는 이벤트 스트리밍 플랫폼입니다. Kafka는 차세대 분산 애플리케이션이 확장을 통해 스트리밍 이벤트를 분당 수십억 개까지 처리할 수 있도록 합니다."

라고.

이 말은 너무 어렵게 적혀있는 것 같아 챗지피티의 도움을 받기로 했다.


하지만 이 설명은 조금 어렵게 느껴졌다.

그래서 ChatGPT의 도움을 받아 정리해 보았다.


여기서 한 가지 감이 잡히기 시작했다.

Kafka는 이벤트가 발생하면 그 기록을 저장하고, 필요한 서비스에게 전달해주는 시스템이라는 것이다.

즉,

  • 어떤 일이 발생한다.
  • 그 기록을 Kafka가 보관한다.
  • 필요한 서비스들이 그 데이터를 가져가서 사용한다.

이렇게 이해할 수 있었다.

또한 여러 글을 읽어보니
내가 이해한 방향이 크게 틀리지 않았다는 것도 확인할 수 있었다.

Kafka는 데이터(이벤트 데이터, 일반 데이터, 사용자 행동 기록 등)를 저장하고 전달하는 역할을 한다.



그런 다음,
Amazon에서 적은 kafka에 대한 글을 읽어보았다.

AWS - Kafka란 무엇입니까?

기초적인 개념을 이해하고 나니
Kafka에 대한 설명이 훨씬 읽히기 시작했다.



kafka가 어디에 사용되는가

aws에서 써있는 말이 조금 어려운 말이 있어서
쉽게 풀어 써보았다.

  • "Kafka는 실시간 스트리밍 데이터 파이프라인을 구축하는 데 사용된다"
    -> 계속 발생하는 데이터를 여러 시스템으로 보내기 위해 Kafka를 사용한다.

  • " 스트리밍 애플리케이션은 데이터 스트림을 소비한다"
    -> 다른 서비스들이 Kafka에서 데이터를 가져가서 처리한다.

  • "Kafka는 메시지 브로커 역할을 한다"
    -> 서비스 사이에서 데이터를 대신 전달해주는 중간 서버이다.

따라서 이 글들을 보아 kafka는 계속 발생하는 데이터를 여러 시스템으로 보내기 위해, 중간 서버역할을 한다고 읽힐 수 있었다.



kafka와 비동기

Redhat - Apache Kafka란 무엇일까요?

다음으로 RedHat에서 작성한 Kafka 설명을 읽어보았다.

처음에는 긴 설명 때문에 조금 복잡하게 느껴졌다.
하지만 Kafka와 비동기의 관계를 이해하기 위해 하나씩 읽어보기로 했다.


먼저 동기 방식과 비동기 방식을 나눠서 생각해보았다.


일단 동기식 통신의 경우와 비동기 통신의 경우를 나눠 생각해보기로 한다.


동기식 통신 (API 호출)

이 방식은 우리가 평소에 알고 있는 방식이다.

  • 주문서비스
    -> 결제 서비스 API 호출
  • 주문 서비스
    -> 알림 서비스 API 호출

이런식으로 API를 호출하는 것을 동기식이라 한다.


특징

동기식 방식의 특징은
바로 응답을 기다리고, 상대 서비스가 죽으면 같이 문제가 발생한다는 것이다.

예를 들어,

  • 주문 -> 결제 서버 다운 -> 주문도 실패

이런 형식으로 진행된다. 따라서 대규모 서비스에서 문제가 될 수 있다.



비동기식 통신 (kafka 사용)

비동기식 통신에 나온 것이 kafka이다.
이때에는 직접 호출하지 않고, 중간에 kafka에 이벤트를 남기는 것이다.

  • 주문 서비스 -> kafka

이러면, 다른 서비스들이 알아서 kafka의 메세지를 가져가는 형식이다.

  • 결제 서비스 -> kafka 읽음
  • 알림 서비스 -> kafka 읽음
  • 통계 서비스 -> kafka 읽음

특징

비동기 방식의 특징은 다음과 같다.

  • 응답을 기다릴 필요가 없다.
  • 서비스가 서로 독립적으로 동작한다.
  • 확장이 쉽다.

Redhad 문장 다시 해석

그래서 다시 RedHat 문장을 해석해보면 다음과 같이 이해할 수 있다.


  • "분산형 애플리케이션이 데이터를 공유하려면 통합이 필요하다."
    -> 여러 서비스가 데이터를 주고 받을 방법이 필요하다.
  • "동기식 방법은 API를 활용한다."
    -> 서버가 다른 서버를 직접 호출하는 방식(동기식)
  • "비동기식 방법은 중간 저장소를 사용한다."
    -> Kafka 같은 시스템에 데이터를 먼저 남긴다.

따라서 동기/비동기 형식의 글을 읽고 문장을 쉽게 해석하니 kafka가 어느 상황에 쓰이는 것인지, 비동기라는 것이 어떤 의미인지 이해할 수 있게 되었다.



kafka 한 문장 정리

Kafka는 서비스에서 발생하는 이벤트 데이터를 모아 저장하고, 필요한 다른 서비스들에게 비동기적으로 전달해주는 분산 스트리밍 플랫폼이다.


profile
정도를 걷는 엔지니어

0개의 댓글