호환성
호환성 (Compatibility)
Kafka 4.0부터 큰 변화가 도입되면서 여러 컴포넌트 간의 호환성에도 영향을 주는 부분이 생겼어요. 업그레이드를 계획하거나 여러 버전을 함께 쓰는 상황에서 문제없이 동작하는지 확인할 수 있도록, 호환성 행렬(compatibility matrix)이 정리되어 있어요.
출처: 문서
본문
Kafka 버전별 JDK 호환성
| 모듈 | Kafka 버전 | Java 11 | Java 17 | Java 23 |
|---|---|---|---|---|
| Clients | 4.0.0 | ✅ | ✅ | ✅ |
| Streams | 4.0.0 | ✅ | ✅ | ✅ |
| Connect | 4.0.0 | ❌ | ✅ | ✅ |
| Server | 4.0.0 | ❌ | ✅ | ✅ |
참고: Kafka 4.0부터 Java 8은 제거되어 더 이상 지원되지 않아요.
서버 호환성 (Server Compatibility)
| KRaft 클러스터 버전 | 호환 4.0 서버 (동적 voter) | 호환 4.0 서버 (정적 voter) |
|---|---|---|
| 3.2.x 이전 | ❌ | ❌ |
| 3.3.x | ❌ | ✅ |
| 3.4.x | ❌ | ✅ |
| 3.5.x | ❌ | ✅ |
| 3.6.x | ❌ | ✅ |
| 3.7.x | ❌ | ✅ |
| 3.8.x | ❌ | ✅ |
| 3.9.x | ✅ | ✅ |
| 4.0.x | ✅ | ✅ |
참고: 정적 voter에서 동적 voter로 서버를 업그레이드할 수는 없어요. 자세한 내용은 KAFKA-16538을 참고해요.
클라이언트/브로커 순방향 호환성 (Client/Broker Forward Compatibility)
| Kafka 버전 | 모듈 | Kafka 4.0 호환성 | 주요 차이점/제한 사항 |
|---|---|---|---|
| 0.x, 1.x, 2.0 | Client | ❌ 호환 안 됨 | 사전 0.10.x 프로토콜은 Kafka 4.0에서 완전히 제거됨 (KIP-896). |
| Streams | ❌ 호환 안 됨 | 사전 0.10.x 프로토콜은 Kafka 4.0에서 완전히 제거됨 (KIP-896). | |
| Connect | ❌ 호환 안 됨 | 사전 0.10.x 프로토콜은 Kafka 4.0에서 완전히 제거됨 (KIP-896). | |
| 2.1 ~ 2.8 | Client | ⚠️ 부분 호환 | 자세한 내용은 Consumer, Producer, Admin Client 섹션 참고. |
| Streams | ⚠️ 제한적 호환 | 자세한 내용은 Kafka Streams 섹션 참고. | |
| Connect | ⚠️ 제한적 호환 | 자세한 내용은 Connect 섹션 참고. | |
| 3.x | Client | ✅ 완전 호환 | — |
| Streams | ✅ 완전 호환 | — | |
| Connect | ✅ 완전 호환 | — |
참고: Kafka 4.0부터 AdminClient 명령의
--zookeeper옵션은 제거됐어요. Kafka 클러스터와 상호작용할 때는 반드시--bootstrap-server옵션을 사용해야 해요. 이는 KRaft 모드로의 전환과 맞물린 변화예요.
더 알아보기 (Learn more)
- 업그레이드를 앞두고 있다면 호환성 표를 먼저 확인하고, 다른 버전과의 조합이 안전한지 살펴보면 돼요.
- KRaft 모드로의 전환에 대한 자세한 내용은 Getting Started의 KRaft vs ZooKeeper 문서를 참고해요.