Iyoungman Back-end Developer

카프카란 무엇인가


동작 방식과 원리

  • 메시징 서버로 동작.
  • Pub/Sub 모델.


Pub/Sub 모델이란?

  • 비동기 메세지 전송 방식.
  • 발신자의 메시지는 수신자가 정해져있지 않은 상태에서 발행.
  • 수신자는 발신자의 정보를 몰라도 원하는 메세지를 수신.


[1] 일반적인 네트워크 통신

  • 직접 연결되어 있기 때문에 확장성이 좋지 않다.


[2] 펍/섭 형태의 네트워크 통신

  • 수신측 중 하나가 장애가 나도 데이터가 유실되지 않는다.
  • 확장성이 좋다.
  • 다만 기존 메시징 시스템은 내부 교환기 부하, 각 컨슈머들의 큐 관리, 메시지 정합성 등
    내부 프로세스가 복잡했기 때문에 속도와 용량 등 성능 문제가 있었다.


[3] 카프카의 아키텍처

  • 기존 메시징 시스템의 성능 단점을 극복.
  • 메시지 교환 전달의 신뢰성 관리를 프로듀서와 컨슈머에 넘겼다.
  • 부하가 많이 걸리는 교환기 기능도 컨슈머가 만들 수 있게 하여 메시징 시스템 내의 작업을 줄였다.


카프카의 특징

[1] 프로듀서와 컨슈머의 분리

  • 프로듀서와 컨슈머 사이의 결합도가 높다.
  • 만약 서버가 1대 더 추가되면 연동해야 할 시스템이 많아진다.

IMG_1169 2


  • 프로듀서는 컨슈머를 신경 쓸 필요없이 카프카로 메시지를 보내기만 하면 된다.
  • 한쪽 시스템에 문제가 발생해도 연쇄작업이 발생할 확률이 낮아진다.
  • 서버를 쉽게 추가할 수 있다.

IMG_1168 2


[2] 멀티 프로듀서, 멀티 컨슈머

  • 하나의 데이터를 다양한 용도로 사용할 수 있다.

IMG_1170 2


[3] 디스크에 메시지 저장

  • 일반적인 메시징 시스템은 컨슈머가 메시지를 읽으면 큐에서 메시지를 삭제한다.
  • 카프카는 정한 보관 주기 동안 디스크에 메시지를 저장해둔다.
  • 컨슈머의 장애 혹은 처리가 늦어지더라도 메시지가 손실 되지 않는다.


[4] 확장성, 높은 성능

  • 카프카 클러스터는 3대의 브로커로 시작해 수십 대로 쉽게 확장 가능하다.
  • 고성능을 유지하기 위해 내부적으로 분산 처리, 배치 처리 등 다양한 기법을 사용한다.


카프카 용어 정리

브로커

  • 카프카 애플리케이션이 설치된 서버.


토픽

  • 프로듀서와 컨슈머들이 카프카로 보낸 메시지를 구분하기 위한 네임.


파티션

  • 병렬처리가 가능하도록 토픽을 나눌 수 있다.


프로듀서

  • 메시지를 생산하여 브로커의 토픽으로 보내는 서버.


컨슈머

  • 브로커의 토픽 이름으로 저장된 메세지를 가져가는 서버.

Comments

Content