공부해봅시당
[Kafka] 카프카 시작하기 3 본문
현재 작성 중인 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 |