Idées
Standardiser la collecte, pas l’outil
Avec OpenTelemetry, le standard porte sur ce qui touche chaque service, son instrumentation et son collecteur, et le backend devient un choix que chaque équipe peut changer
La plupart des démarches d’observabilité commencent par le choix du backend. Une plateforme, une licence pour tout le monde, et chaque équipe y migre. Puis la licence arrive à échéance, ou une équipe a besoin de ce que la plateforme ne fait pas, et la migration recommence, dans chaque application.
C’est la mauvaise couche à standardiser. Ce qui coûte en observabilité, ce n’est pas le tableau de bord, c’est l’instrumentation, parce qu’elle vit dans le code de chaque service. C’est là qu’un standard rapporte.
OpenTelemetry donne une forme à cette couche. Les applications produisent traces, métriques et logs avec ses SDK ou ses agents, et les envoient, idéalement par un seul protocole, OTLP, à un collecteur. Le collecteur reçoit, transforme et exporte: il peut filtrer, regrouper, retirer les attributs sensibles, et envoyer les mêmes données vers un ou plusieurs backends.
Le collecteur est la jointure. D’un côté le code, de l’autre les outils, et aucun ne connaît l’autre
Le standard que je fixe, c’est donc la collecte: une télémétrie qui sort de chaque service de la même façon, un collecteur par environnement, proche des applications et dimensionné par domaine métier, les données sensibles filtrées à ce niveau avant de partir, plusieurs collecteurs derrière une passerelle en production. Rien de cela ne se négocie, parce que toutes les équipes en dépendent.
Derrière le collecteur, le backend peut varier. Dans l’architecture de référence que j’ai dessinée cette année, la même couche de collecte exporte vers une pile OpenSearch ou vers une pile Grafana avec Loki, Tempo et Mimir, et laisse la place à d’autres outils. Rien n’oblige à avoir le même outil dans tous les environnements, et les suites commerciales coûtent cher: une équipe ou un environnement choisit ce dont il a besoin, ou en change, en modifiant un exportateur, pas son code.
Il ne s’agit pas de laisser chaque équipe tout choisir. Une couche est fixée pour que les autres puissent bouger.
La liberté sur le backend se gagne par la discipline sur la collecte