Definicja #
Apache Kafka to rozproszony system kolejkowania wiadomości i streamingu danych, stworzony pierwotnie w LinkedIn, a następnie przekazany do Apache Software Foundation w 2011 roku. Dziś rozwijany jest przez społeczność Apache Software Foundation.
Kluczowe koncepty Kafka:
- Topic — logiczny kanał, do którego producenci wysyłają wiadomości, a konsumenci je odczytują
- Partition — topic dzielony na partycje dla równoległości i skalowalności
- Producer/Consumer — aplikacje zapisujące i odczytujące wiadomości
- Consumer Group — zbiór konsumentów współdzielących przetwarzanie partycji
- Broker — serwer Kafka przechowujący dane i obsługujący żądania
- Retention — wiadomości przechowywane przez konfigurowaly czas (np. 7 dni), nie są usuwane po odczytaniu
Kafka wyróżnia się wydajnością (miliony msg/s), trwałością (zapis na dysk) i możliwością odtwarzania historii wiadomości. Kafka Streams i ksqlDB umożliwiają stream processing bezpośrednio na Kafce.
Zastosowania #
- Event sourcing — Kafka jako log zdarzeń biznesowych (np. zamówienia, transakcje)
- Integracja mikroserwisów — asynchroniczna komunikacja między serwisami bez ścisłego powiązania
- Real-time analytics — streaming danych do systemów BI (np. Kafka -> Flink -> ClickHouse)
- Change Data Capture (CDC) — replikacja zmian z bazy danych do innych systemów przez Debezium
- Log aggregation — centralizacja logów z wielu serwisów do Elasticsearch lub data lake
Ścieżka nauki #
Przed Kafka warto rozumieć architekturę mikroserwisów, wzorzec producer-consumer i koncepty takie jak kolejki wiadomości (RabbitMQ), event sourcing i eventual consistency.
Na starcie uruchom Kafka z Docker Compose i napisz pierwszy producer/consumer w wybranym języku (Java, Python, .NET). Zrozum topics, partitions, offsets i consumer groups — to fundament.
Następnie poznaj Kafka Connect (integracje z bazami danych i innymi systemami), Kafka Streams do przetwarzania strumieni i Schema Registry dla zarządzania schematami Avro/Protobuf. Zaawansowani zgłębią Kafka MirrorMaker 2 (replikacja klastrów), tuning wydajności i monitoring (JMX, Prometheus). Certyfikat Confluent Certified Developer for Apache Kafka jest ceniony na rynku pracy.
FAQ #
- Czym różni się Kafka od RabbitMQ?
- Kafka to log zdarzeń z długoterminowym przechowywaniem i odtwarzaniem historii — świetna do event sourcing i dużych wolumenów. RabbitMQ to tradycyjny message broker z bogatym routingiem i potwierdzeniami — lepszy do task queues i RPC. Kafka skaluje się lepiej horyzontalnie przy dużych throughputach.
- Ile zarabia Kafka developer w Polsce?
- Znajomość Kafka jest najczęściej częścią zestawu umiejętności backend lub data engineera. Developer z doświadczeniem w Kafka zarabia zazwyczaj 18 000-30 000+ zł brutto, w zależności od szerszego stosu technologicznego.
- Czy Kafka nadaje się do małych projektów?
- Kafka wprowadza znaczny overhead operacyjny — wymaga ZooKeepera lub KRaft, monitoringu i tuningu. Dla małych projektów z niskim wolumenem wiadomości lepiej sprawdzi się RabbitMQ, Redis Pub/Sub lub SQS (AWS). Kafka opłaca się przy dużych wolumenach lub potrzebie odtwarzania historii.
- Co to jest Confluent?
- Confluent to firma założona przez twórców Kafka, oferująca Confluent Platform — komercyjną dystrybucję Kafka z dodatkowymi narzędziami (Schema Registry, ksqlDB, Control Center) oraz Confluent Cloud — w pełni zarządzaną Kafkę w chmurze.