작성일 최종 수정일시

본 문서는 Kafka 버전 흐름을 짚고, 4.03.x 의 주요 차이를 정리한다. 단정적 진술은 1차 출처(Apache Kafka 공식 release announcement, KIP 문서) 인용으로 갈음하고, 출처가 약한 내용은 (미확인) 표기.


1. 마일스톤 한눈에#

버전릴리즈핵심 의미출처
2.8.02021-04KRaft early access (KIP-500)(미확인 — 본 문서 작성 시 직접 검증 안 함)
3.0.02021-09KRaft 진행 / 메이저 정리(미확인)
3.3.02022-10-03KRaft production-ready (KIP-833, 신규 클러스터 한정)KIP-833, Confluent blog
3.4 ~ 3.82023~2024ZK→KRaft 마이그레이션 기능 추가, KIP-848 early access (3.7)Confluent — Kafka 3.9 (간접)
3.9.02024-11-06ZK 지원 마지막 메이저, Tiered Storage GAApache 공식 release announcement, Confluent blog
4.0.02025-03-18ZK 완전 제거, Java 17 (broker), KIP-848 GA, KIP-932 EAApache 4.0 release announcement

3.9 의 트위터 공식 계정 발표: “Hello Apache Kafka 3.9.0! - last release using ZooKeeper - tiered storage is production-ready”Apache Kafka X(Twitter)


2. 4.0 핵심 변경 (3.x 대비)#

출처: Apache Kafka 4.0.0 Release Announcement (2025-03-18) — 이하 본 절의 인용은 모두 이 페이지에서.

2.1. ZooKeeper 완전 제거 (KRaft only)#

“the first major release to operate entirely without Apache ZooKeeper.” “simplifies deployment and management, eliminating the complexity of maintaining a separate ZooKeeper ensemble.”

  • 4.0 부터는 ZK 모드로 기동 자체가 불가능 — 메타데이터/컨트롤러는 KRaft 가 전담
  • 3.9 가 ZK 지원 마지막 버전이므로, ZK 운영 클러스터는 3.9 → 4.0 전환 사이에 KRaft 마이그레이션 완료 필요

2.2. Java 버전 요구 상향#

컴포넌트4.0 최소 Java3.x 와 차이
Kafka Brokers / Connect / ToolsJava 173.x 는 Java 11 까지 지원 → 4.0 에서 17 로 상향
Kafka Clients / StreamsJava 11클라이언트는 11 유지 (broker 와 분리)

JDK 17 미만 운영 인프라는 4.0 전 업그레이드 필수.

2.3. KIP-848 — 새 Consumer Rebalance Protocol GA#

“increases the stability and the performance of consumer groups while simplifying clients.”

  • 3.7 에서 early access 였던 신규 rebalance 프로토콜이 4.0 에서 General Availability(GA)
  • opt-in 방식: 컨슈머가 group.protocol=consumer 명시 설정해야 사용. 미설정 시 기존 프로토콜 그대로 동작
  • 효과(공식 문구 인용): 컨슈머 그룹 안정성·성능 향상, 클라이언트 단순화

2.4. KIP-932 — Queues for Kafka (Early Access)#

“Early Access” / “cooperative consumption using Kafka topics” / “share groups … roughly equivalent to a durable shared subscription in existing systems.”

  • 기존: 파티션:컨슈머 = 1:1 → 공유 소비 불가
  • KIP-932: share group 도입 → 같은 토픽을 여러 컨슈머가 협력적으로 소비 (전통 MQ 의 durable shared subscription 과 유사)
  • Early Access — 본격 운영 채택은 GA 까지 보류 권고 (추론)

2.5. 제거된 API / 프로토콜#

KIP제거 항목영향
KIP-896구버전 client protocol API 제거브로커가 2.1 이상이어야 4.0 클라이언트 업그레이드 가능
KIP-724Message format v0, v1 제거v2 만 지원. 매우 오래된 클라이언트와 호환 끊김
KIP-970Connect 의 /connectors/{connector}/tasks-config endpoint 제거Connect 외부 도구 점검 필요

2.6. 기타 주목 KIP (4.0 포함)#

KIP내용
KIP-890Transactions server-side defense — producer 장애 시 “zombie transactions” 감소
KIP-966Eligible Leader Replicas (ELR) — preview 상태. 데이터 유실 위험 추가 감소
KIP-996KRaft Pre-Vote — 불필요한 leader election 감소
KIP-653Log4j → Log4j2 마이그레이션

3. 3.x 주요 마일스톤 (4.0 으로 가는 길)#

3.1. 3.3 — KRaft Production Ready (KIP-833)#

3.2. 3.4 ~ 3.8 — ZK→KRaft 마이그레이션 기능 진화#

  • 3.4 부터 ZK→KRaft 마이그레이션 기능 도입, 이후 버전에서 안정화 진행 (검색 결과 기반 — 각 버전별 정확한 KIP 매핑은 미확인)

3.3. 3.9 — ZK 지원 마지막 메이저 + Tiered Storage GA#


4. 본 조직 입장에서의 의미#

본 절은 §2.1 (ZK 제거) 가 §1 의 KRaft 전제와 일치함을 4.0 기준으로 재확인하는 성격.

4.1. 신규 구축이라면#

  • 처음부터 4.x + KRaft 로 시작. ZK 운영을 알 필요가 없어짐
  • JDK 17 인프라 전제 (broker), 11 (client/streams)
  • KIP-848 Consumer Protocol 사용 시 클라이언트에 group.protocol=consumer 명시 — 표준 가이드에 명문화

4.2. 기존 ZK 운영 클러스터가 있다면 (마이그레이션)#

  1. 3.9 로 우선 정렬 — 4.0 직행 불가. 3.9 가 ZK→KRaft 마이그레이션의 최종 안정 버전
  2. 3.9 에서 KRaft 모드로 마이그레이션 (별도 설계 필요 — (미정))
  3. 모든 클라이언트가 ≥2.1 인지 점검 (KIP-896)
  4. 메시지 포맷 v0/v1 사용 여부 점검 (KIP-724)
  5. JDK 업그레이드 (broker 17, client 11)
  6. 4.0 으로 업그레이드

4.3. 토픽/공통 라이브러리 영향#

  • kafka-platform 리포에서 사용하는 도구별 4.0 지원 시점 확인 필요:
    • Strimzi: 버전별 지원 Kafka 매트릭스 — strimzi-kafka-operator/kafka-versions.yaml
    • Confluent for Kubernetes (CfK): Confluent Platform 8.x 라인 (4.0 기반)이 정렬되는지 — (미확인)
    • JulieOps / kafka-gitops / Terraform Provider: 4.0 클러스터 대상 호환성 점검 — (미확인)

5. 정리#

3.x 마지막 (3.9)4.0
메타데이터 관리ZK / KRaft 양쪽KRaft only
Broker JDK11+17+
Client/Streams JDK8+ (3.x 대부분) → 1111+
Consumer Rebalanceclassic + KIP-848 EAKIP-848 GA (opt-in)
공유 소비 (Queue 의미론)미지원KIP-932 Early Access
Tiered StorageGA (3.9)유지
메시지 포맷v0/v1/v2v2 only
클라이언트 호환 하한broker ≥ 2.1 (KIP-896)
Log4jLog4j 1.xLog4j2

6. 참고 (출처 모음)#

1차 출처 (Apache 공식)#

KIP 1차 문서#

  • KIP-833: Mark KRaft as Production Ready
  • (이외 KIP-848, KIP-932, KIP-896, KIP-724, KIP-970, KIP-890, KIP-966, KIP-996, KIP-653 — 본문 표 참조. 각 KIP 페이지 직접 검증은 미완 — 추후 cwiki.apache.org 에서 KIP 번호로 조회)

2차 자료 (해설/요약)#

도구 호환성 참고#