개발 여행/Kafka

Kafka가 뭐지?

찰나의꿈 2023. 1. 16. 11:47

이름만 많이 들어보고 막상 뭔지 찾아볼 기회가 없었는데 간단하게 개념을 정리하게 되었다.

나름대로 해석해서 풀어쓴 글.

 

 1. 카프카가 뭐임?

링크드인에서 개발했다는 문구와 함께 여러 블로그에서 비슷한 사례를 다루고 있는데,

마이크로서비스로 인해 한 기능에서 다른 기능으로 소통할 일이 많아지다 보니

n개의 기능이 있으면 nC2의 경우의 수로 소통을 하게 되면서 난개발, 관리 부재가 생겼다.

 

이를 해결하기 위해 메세지 전달 중앙화를 이루는 시스템. 

 

 

 - 일전에 일한 곳에서, 데이터 인터페이스를 진행하면서도 아무래도 시스템이 많다 보니

이 인터페이스를 중앙화화여 관리하는 시스템이 있었는데,

카프카도 비슷한 느낌으로 ‘관리 책임’을 가운데에 두고 더하여 성능적인 부분에서도 우위를 점하도록 하는 듯 하다.

 

 

 

 2. 다른 애보다 나은 특징?

  • 대용량처리에 능함
  • Scalability가 매우 좋음
  • 영속성이 존재(메세지를 읽어가더라도 일정 시간 보관)
  • 고가용성

 

 

 

 3. 용어 및 구조

 3-1. 용어

  • Producer: 메세지를 카프카에 넣는 존재
  • Consumer: 메세지를 읽는 존재
  • Kafka 클러스터: 메세지를 저장하며 브로커(서버)를 여러 개 띄움
  • 이벤트 = 메세지. 일어난 사실을 기반으로 발생한 불변 데이터
  • 토픽 = 카프카에서 이벤트 스트림을 부르는 이름 = 연관된 이벤트의 집합. 
  • 파티션 = 레코드를 저장하는 하나의 로그 파일. 저장소의 가장 작은 단위이며 Append-Only로 저장함

 

 3-2. 구조

  • 프로듀서는 브로커로 메세지를 전달함
  • 해당 메세지=레코드는 어떤 파티션에 저장될지 해시나 라운드로빈으로 결정
    • Definitive한 해시라면, 특정 사용자가 요청한 메세지를 한 파티션에만 저장할 수 있도록 하여
      파티션에 한 사용자의 요청이 흩어지지 않도록 조절할 수도 있다.
    • 위와 같이 진행 시 Imbalance 문제가 발생할 수 있으나, 시간 순서는 확실히 지킬 수 있다.
  • 해당 파티션을 맡고 있는 컨슈머가 그 메세지를 읽고 수행
    • 컨슈머는 카프카와 연관된 존재는 아니고, 다른 서버일 가능성이 높다.
    • 하지만 컨슈머 그룹으로 카프카에서 관리받는 존재이긴 하다.