Kafka est le bus de donnees de reference pour l architecture event-driven. En entretien, on evalue la capacite a concevoir des pipelines de streaming robustes.
1Topics, partitions et offsets
Question discriminante
Qu est-ce qu une partition Kafka ? Pourquoi le nombre de partitions est-il important ?
- Topic — canal de messages nomme. Analogue a une table de base de donnees
- Partition — subdivision d un topic. Unite de parallelisme et de scalabilite. Les messages d une partition sont ordonnes
- Offset — identifiant unique d un message dans une partition. Immutable
- Retention — les messages sont conserves pendant une duree configurable (par defaut 7 jours), independamment de leur consommation
- Nombre de partitions — determine le parallelisme max des consumers. Augmenter apres coup est possible mais complexe
2Guaranties de livraison des producers
Question discriminante
Quelle est la difference entre at-most-once, at-least-once et exactly-once ?
from kafka import KafkaProducer
import json
producer = KafkaProducer(
bootstrap_servers='kafka:9092',
value_serializer=lambda v: json.dumps(v).encode('utf-8'),
acks='all', # attendre confirmation de tous les replicas
retries=3, # reessayer en cas d erreur
enable_idempotence=True # exactly-once
)
producer.send('orders', {'order_id': 123, 'amount': 49.90})
producer.flush()
- at-most-once — 0 ou 1 livraison. Risque de perte
- at-least-once — au moins 1 livraison. Risque de doublons
- exactly-once — exactement 1 livraison. Necessite acks=all + enable_idempotence=True
3Consumer groups et repartitionnement
Question discriminante
Qu est-ce qu un consumer group ? Que se passe-t-il quand un consumer rejoint ou quitte le groupe ?
- Consumer group — groupe de consumers qui lisent cooperativement un topic. Chaque partition est assignee a un seul consumer du groupe
- Rebalancing — redistribution des partitions quand un consumer rejoint ou quitte. Pendant ce temps, la consommation est suspendue
- Lag — difference entre le dernier offset produit et le dernier offset consomme. Metrique cle pour le monitoring
- __consumer_offsets — topic interne Kafka qui stocke la position de chaque consumer group
4Kafka Streams vs ksqlDB
Question discriminante
Quand utilisez-vous Kafka Streams vs ksqlDB vs Flink pour le traitement de streams ?
| Outil | Paradigme | Cas d usage |
|---|
| Kafka Streams | Librairie Java/Scala | Transformations temps reel embarquees dans une application |
| ksqlDB | SQL sur Kafka | Aggregations et filtres sur streams sans code Java |
| Apache Flink | Framework distribue | Latence sub-seconde, state management complexe, grande echelle |
5Schema Registry
Question discriminante
Pourquoi avez-vous besoin d un Schema Registry avec Kafka ?
- Schema Registry — stocke les schemas Avro/Protobuf/JSON des messages. Les producers et consumers s y referent
- Probleme resolu — sans schema registry, un changement de format de message casse silencieusement les consumers
- Schema evolution — compatibilite backward (le nouveau schema lit les anciens messages) ou forward
6Patterns d architecture
Question discriminante
Qu est-ce que le pattern outbox ? Et l event sourcing ?
- Outbox pattern — ecrire dans une table outbox en meme temps que la transaction metier, puis publier dans Kafka depuis l outbox. Garantit la coherence sans 2PC
- Event Sourcing — stocker l historique des evenements plutot que l etat courant. Kafka comme source de verite
- CQRS — separer les commandes (ecriture) des requetes (lecture). Kafka comme bus entre les deux
7Grille par niveau
| Niveau | Maitrise | Signal GO | NO-GO |
|---|
| Junior | Topics, producers/consumers basiques, CLI Kafka | Sait creer un topic, envoyer et lire des messages | Ne sait pas ce qu est un consumer group |
| Confirme | Consumer groups, offsets, Kafka Streams basique, monitoring lag | Explique le rebalancing, surveille le consumer lag | Ne sait pas ce qu est un offset |
| Senior | Schema Registry, exactly-once, outbox pattern, Flink | A implemente le Schema Registry, connait les patterns outbox/event sourcing | Ne connait pas Schema Registry |