Si les microservices et les applications natives en cloud deviennent chaque jour plus complexes, les équipes de développeurs doivent lutter pour tirer pleinement parti de leur infrastructure. Selon Jean-François Joly, Senior director of product management chez New Relic (plateforme d’observabilité), une bonne observabilité peut les aider à gérer des architectures mal organisées pour associer des décisions d’ingénierie clés à des métriques métier.
Dans l’obligation d’accomplir une triple mission — accélérer les performances, gagner en efficacité et améliorer les résultats métier —, les outils de développement doivent évoluer rapidement pour répondre à la pression croissante que subissent leurs utilisateurs. Mais si ces outils évoluent dans le bon sens, le rythme du changement limite trop souvent la vision des développeurs, de sorte que l’un des outils les plus largement déployés dans le secteur est également le moins bien compris.
L’essor des microservices et des applications natives en cloud a donné naissance à une infrastructure applicative de plus en plus complexe et difficile à maîtriser. À cet égard, l’environnement Kubernetes soulève un défi de taille : alors que ce système d’orchestration de conteneurs a été adopté à grande échelle par les développeurs (dont 91 % des personnes interrogées par la Cloud Native Computing Foundation pour son étude 2020), une majorité de développeurs ne dispose pas de la clarté et de la compréhension indispensables pour étayer le processus décisionnel d’ingénierie de fiabilité des sites (SRE — Site Reliability Engineering) à l’aide de données pertinentes.
L’analyse des données relatives à l’infrastructure applicative est un domaine émergent de l’ingénierie logicielle qui est encore sous-exploité — ainsi, des tâches telles que le dimensionnement des charges de travail CI/CD (intégration continue/déploiement continu), l’affectation des ressources ou l’équilibrage de la charge ont tendance à constituer des décisions ad hoc prises en l’absence de données contextuelles. Lorsqu’ils sont en mesure d’analyser leurs données télémétriques, les développeurs obtiennent des informations pertinentes significatives concernant le comportement de leurs applications, peuvent automatiser certaines charges de travail manuelles et ont la possibilité de relier les décisions d’ingénierie à des métriques métier telles que la latence des utilisateurs finaux.
Pour remettre de l’ordre dans une infrastructure de plus en plus désorganisée, les équipes d’ingénierie peuvent à présent s’appuyer sur l’observabilité de Kubernetes.
Qu’est-ce que l’observabilité de Kubernetes ?
La signification du terme « observabilité » varie d’un ingénieur à l’autre. Au lieu de l’aborder comme un produit ou une solution unique, ce concept doit être considéré comme une métrique globale : l’observabilité définit la capacité d’une équipe à identifier et comprendre un problème. Ainsi, une équipe qui dispose d’un niveau d’observabilité exceptionnel sera en mesure de reconnaître et gérer des erreurs et des anomalies en un clin d’œil à partir d’une interface conviviale. Dans le cas contraire, les ingénieurs risquent de travailler dans l’obscurité des heures durant pour tenter d’identifier l’origine des nombreuses alertes, erreurs et immobilisations qui perturbent leur système.
Les conteneurs et les microservices élargissent la surface de l’infrastructure d’une équipe et accélèrent la fréquence des modifications logicielles. En raison de cette complexité, les équipes peinent à disposer d’une bonne observabilité et à mesurer la performance de leurs applications natives en cloud. L’environnement Kubernetes s’est imposé auprès des équipes d’ingénieurs, car il constitue l’outil le plus efficace pour faire évoluer et simplifier des processus complexes. Or les avantages les plus précieux des clusters Kubernetes sont réservés aux ingénieurs qui disposent d’une observabilité optimale.
Des informations pertinentes sans instrumentation
Pour profiter à la fois de la fiabilité et de l’efficacité d’une grappe Kubernetes correctement organisée, les équipes de développeurs doivent être capables de réaliser à la fois que leurs outils sont insuffisamment performants et leurs ressources sous-utilisées. Pour commencer, il convient de définir une valeur de référence de l’état de santé et la capacité du cluster Kubernetes. Dans cet environnement, la surveillance de l’infrastructure joue un rôle essentiel, tandis que le suivi des métriques applicatifs constitue une première étape capitale pour faire le tri entre problèmes de performance et anomalies imprévues.
L’observabilité de Kubernetes exige des équipes qu’elles surveillent les événements pertinents : nouveaux déploiements, contrôles de santé et mises à l’échelle automatiques (autoscaling), par exemple. Le suivi des événements dynamiques est essentiel pour donner un sens aux performances enregistrées dans le monde réel. Des technologies comme le filtre eBPF (extended Berkeley Packet Filter) collectent automatiquement des métriques, des événements, des traces et des journaux, couvrant chaque couche de la pile technologique — des applications jusqu’au système d’exploitation en passant par l’infrastructure Kubernetes et les couches réseau. Outre les événements, une observabilité de Kubernetes de bonne qualité doit permettre de comprendre comment les microservices communiquent entre eux. Les métadonnées Kubernetes peuvent définir les performances et les traces distribuées des applications, fournissant ainsi de précieuses informations concernant le débit, la durée des transactions et les taux d’erreur.
La qualité de l’observabilité ne dépend pas simplement de la surveillance : elle modifie également la façon dont les développeurs interagissent avec leurs outils en corrélant les événements et en plaçant les erreurs dans le contexte de leur environnement élargi. Sans observabilité, les développeurs jonglent entre différents outils sans parvenir à donner un sens à la situation à laquelle ils sont confrontés. Avec une bonne observabilité de Kubernetes, ils pourront en revanche relier des données de journalisation à d’autres outils de surveillance et évaluer les anomalies selon une approche contextualisée.
Notre secteur a mesuré le potentiel de Kubernetes tout en rencontrant des difficultés pour le concrétiser. L’observabilité est une étape essentielle pour maximiser les ressources, minimiser les erreurs et résoudre rapidement les problèmes dès qu’ils se présentent. En améliorant l’observabilité de Kubernetes, les équipes de développeurs vivront une expérience utilisateur moins stressante avec de meilleurs résultats métier à la clé.