공부해봅시당

[Kafka] 카프카 시작하기 3 본문

STUDY/Kafka

[Kafka] 카프카 시작하기 3

tngus 2023. 6. 29. 15:44
현재 작성 중인 KAFKA 시리즈는 [카프카 핵심 가이드] 책을 보고 정리한 글임을 밝힙니다.

 

1.3 왜 카프카인가?

1.3.1 다중 프로듀서

  • 여러 프로듀서 처리 가능
  • 프로듀서 클라이언트가 사용하는 토픽의 개수와 무관
    • 따라서 프론트엔드 시스템으로부터 데이터를 수집하고 일관성을 유지하는 데 적격

 

1.3.2 다중 컨슈머

  • 큐 시스템과의 차이점
    • 큐 시스템
      • 하나의 메시지를 하나의 클라이언트에서만 소비할 수 있도록 되어 있음
    • 카프카
      • 많은 컨슈머가 상호 간섭 없이 어떠한 메시지 스트림도 읽을 수 있도록 설계됨
        • 다수의 카프카 컨슈머는 컨슈머 그룹의 일원으로 작동함
        • 따라서 하나의 스트림을 여럿이서 나눠서 읽을 수 있음
        • 이 경우 주어진 메시지는 전체 컨슈머 그룹에 대해 한 번만 처리됨

 

1.3.3 디스크 기반 보존

  • 지속성 있는 저장
    • 컨슈머들이 항상 실시간으로 데이터를 읽어올 필요는 없다는 의미
    • 메시지는 디스크에 쓰여진 뒤 설정된 보유 규칙과 함께 저장됨
      • 옵션들은 토픽별로 설정 가능
        • 서로 다른 메시지 스트림이 컨슈머의 필요에 따라 서로 다른 기간 동안 보존될 수 있음
        • 따라서 컨슈머가 느린 처리 속도/트래픽 폭주로 인해 뒤처질 경우에도 데이터 유실의 위험이 없음
          • 프로듀서 쪽에서 메시지를 백업해야 하거나 메시지가 유실될 걱정 없이 잠시 애플리케이션을 내리고 컨슈머를 유지보수 할 수 있음
          • 컨슈머를 정지하더라도 메시지는 카프카 안에 남아있음 -> 컨슈머 다시 시작되면 작업을 멈춘 지점에서부터 유실 없이 데이터 처리 가능

 

1.3.4 확장성

  • 유연한 확장성을 가지고 있음 -> 어떠한 크기의 데이터도 쉽게 처리 가능
  • 카프카 클러스터는 작동 중에도 시스템 전체의 가용성(availability)에 영향을 주지 않으면서 확장 가능
    • 여러 대의 브로커로 구성된 클러스터는 개별 브로커의 장애를 처리하면서 지속적으로 클라이언트의 요청을 받아서 처리할 수 있다는 의미
    • 동시다발적인 장애를 견뎌야 하는 클러스터의 경우 더 큰 복제 팩터(replication factor)를 설정해주는 것이 가능

 

1.3.5 고성능

고부하 아래에서도 높은 성능을 보여주는 pub/sub 메시지 전달 시스템이 됨

  • 발행된 메시지가 컨슈머에게 전달될 때까지 1초도 안 걸림
  • 동시에 프로듀서, 컨슈머, 브로커 모두가 매우 큰 메시지 스트림을 쉽게 다룰 수 있도록 수평적 확장 가능

 

1.3.6 플랫폼 기능

  • yarn처럼 구조화된 런타임 환경을 포함하는 완전한 플랫폼은 아님
  • API와 라이브러리 형태로 사용 가능
  • 카프카 커넥트
    • 소스 데이터 시스템으로부터 카프카로 데이터를 가져오거나 카프카의 데이터를 싱크 시스템으로 내보내는 작업을 도와줌
  • 카프카 스트림즈
    • 규모 가변성(scalability)과 내고장성(fault tolerance)을 갖춘 스트림 처리 애플리케이션을 쉽게 개발할 수 있게 해줌

'STUDY > Kafka' 카테고리의 다른 글

[Kafka] 카프카 시작하기 4  (0) 2023.06.29
[Kafka] 카프카 시작하기 2  (0) 2023.06.29
[Kafka] 카프카 시작하기 1  (1) 2023.06.29
[KAFKA] 들어가기 전  (0) 2023.06.29