읽은 책 정리/실전 카프카 개발부터 운영까지

카프카의 특징과 장점

카프카의 특징

  • 높은 처리량
    • http 기반으로 이벤트를 ㄹ전달하지만 응답시간은 한 자리수 밀리초로 처리할 만큼 빠르다.
  • 순서 보장
    • 이벤트 처리 순서가 보장되므로 엔터티 간의 유효성 검사나 동시 수정 같은 무수한 복잡성들이 제거되어 구조가 간결하다.
  • 적어도 한 번 전송 방식
    • 카프카는 멱등성을 유지한다.
    • 이로인해 프토듀서가 같은 데이터를 재손하도 데이터의 변화가 일어나지 않다.
    • 전송방식중에 ‘적어도 한 번’이라는 방식이 존재한다. 따라서 이벤트가 중복 발생할 수 있으나 누락 없는 전송이 가능하다.
  • 강력한 파티셔닝
    • 논리적으로 토픽을 여러 개로 나눌 수 있다.
    • 다른 파티션들과의 의존성 없이 처리가 가능하므로 수평적인 확장이 가능하다.
  • 자연스러운 백 프레셔 핸들링
    • 카프카는 Pull 방식으로 동작한다.
    • Pull 방식의 장점은 자기 자신의 속도로 데이터를 처리할 수 있다.
    • 단점으로는 Push 방식은 브로커가 보내주는 속도에 의존해야 한다는 한계가 존재한다.

카프카의 장점

  • 높은 처리량과 낮은 지연시간
    • 응답성만을 기준으로 비교하면 RabitMq보다 성능이 떨어진다.
    • 그러나 처리량과 응답성 두 가지 기준으로 비교할 경우 압도적인 성능을 자랑한다.
    • 카프카는 처리량이 타 MQ보다 월등한 성능을 자랑한
  • 높은 확장성
  • 고가용성
  • 내구성
    • ack라는 옵션을 사용해서 메시지의 내구성을 강화할 수 있다.
    • 예시로 acks의 옵션을 acks=all 로 부여할 경우 Producer가 생산하는 모든 메시지 사용자가 지정한 안전한 저장소로 저장할 수 있다.
    • 결제 파라미터를 안정적으로 저장할 수 있는 새로운 수단이 될 수 있을 것으로 예상한다.
  • 개발 편의성
  • 운영 및 관리 편의성

람다 아키텍쳐와 카파 아키텍쳐

  • 람다 아키텍쳐란 배치 파이프라인실시간 파이프라인을 가지고 있는것을 의미한다.
  • 람다 아키텍쳐는 배치와 스트림 처리의 장점을 지닌다.
  • 람다 아키텍쳐는 일반적으로 아래와 같은 레이어로 구성되어 있다.
    • 배치 처리를 위한 배치 레이어
    • 실시간 처리를 위한 스피드 레이어
    • 배치와 스트림 처리의 아웃풋을 담당하는 서빙 레이어
  • 람다 아키텍쳐는 구조의 복잡성, 배치와 스트링이 서로 다르게 요구하는 코드 유지 등의 단점이 존재한다.
  • 람다 아키텍쳐의 불편함을 개선하고자 등장한것인 카프카 기반의 카파 아키텍쳐이다.