Kafka pour les analystes : trois concepts suffisent
Topic, partition, offset. Le reste peut attendre. Une introduction pensée pour ceux qui consomment un flux sans avoir à l'administrer.


Une partie de ce que je publie ici vient directement de ces projets.
Kafka a une réputation d'outil d'infrastructure réservé aux data engineers. C'est vrai pour l'administrer. Mais pour consommer un flux - le lire, le comprendre, brancher un rapport dessus - trois concepts suffisent. Le reste peut attendre que le besoin arrive.
Topic : le flux nommé
Un topic est un journal d'événements en écriture continue, identifié par un nom. On peut le voir comme une table qui ne fait que grandir : on y ajoute des lignes à la fin, on n'en modifie jamais. Un topic par type d'événement - commandes, scans_colis, connexions - et chaque message est un fait daté, immuable.
Pour un analyste, c'est le bon niveau mental : un topic, c'est « tout ce qui s'est passé pour tel sujet, dans l'ordre où c'est arrivé ».
Partition : le parallélisme
Un topic est découpé en partitions, et c'est le seul détail d'architecture qui compte vraiment côté lecture. Pourquoi ? Parce que l'ordre n'est garanti qu'à l'intérieur d'une partition, pas entre elles. Si l'ordre global des événements vous importe (par exemple tous les événements d'un même colis), il faut que la clé de partition les regroupe dans la même partition.
C'est la source d'erreur numéro un des débutants : croire qu'un topic est globalement ordonné. Il ne l'est pas. Il est ordonné par partition.
Offset : où j'en suis
Chaque message d'une partition porte un numéro croissant, l'offset. Un consommateur mémorise le dernier offset lu ; c'est ce qui lui permet de reprendre là où il s'était arrêté après une coupure, ou de relire depuis un point donné. C'est l'équivalent d'un curseur, mais persistant et rembobinable : on peut rejouer l'historique, ce qu'une requête SQL classique ne permet pas.
Ce que l'analyste n'a pas besoin de savoir (pour l'instant)
Réplication, ISR, stratégies de rétention fines, Kafka Connect, exactly-once : tout cela existe et compte pour ceux qui font tourner le cluster. Pour lire un flux et en tirer de l'analyse, ça peut attendre. Empiler ces notions dès le départ ne rend pas meilleur ; ça décourage.
Topic, partition, offset. Avec ces trois-là, on comprend ce qu'on lit, pourquoi on le lit dans cet ordre, et comment reprendre sans se tromper. Le reste s'apprend le jour où un problème précis l'exige.


