mardi, 23 avril 2024

L’observabilité changeante à gauche pour les applications cloud natives

La livraison d’applications logicielles a toujours été liée à la stabilisation de la vitesse et au contrôle de la qualité. En réalité, de nombreuses entreprises d’innovation fantastiques ont construit leurs empires en maîtrisant cette compétence.

Leurs concepts et leurs pratiques autour de cet équilibre ont produit de toutes nouvelles classes d’outils qui sont maintenant traditionnelles dans le monde du logiciel : l’application la conteneurisation, les pipelines CI/CD et le cloud computing sont rapidement adoptés par les organisations d’applications logicielles avant-gardistes du monde entier. La communauté des applications logicielles contemporaines progresse lentement vers un ensemble de systèmes entrelacés, bien huilés et presque entièrement automatisés qui produisent la dernière partie de l’application logicielle livrée à nos clients.

Cette « renaissance des infrastructures » n’est cependant pas sans défauts. Au milieu de toutes ces innovations, un vieux problème devient vraiment beaucoup plus difficile pour les concepteurs : découvrir exactement ce qui se passe à l’intérieur de ces artefacts brillants que nos utilisateurs aiment beaucoup. Plus important encore, il est également de plus en plus difficile de comprendre ce que les concepteurs qui développent ces logiciels peuvent faire pour les réparer lorsqu’ils interrompent la production.

  • Un monde de bugs vaste et inconnaissable
  • Le débogage en production est un contrôle qualité
  • Dépannage de la boîte noire
  • Les développeurs méritent une observabilité native des développeurs

Un monde de bogues vaste et inconnaissable

De nombreuses classes de bogues étaient utilisées pour être plus simples à prédire et identifier à l’époque où les applications étaient principalement conçues pour fonctionner sur une seule machine. Les environnements de développement et de test pourraient ressembler à l’environnement de production cible, il y avait moins de services tiers potentiels (donc moins d’ensembles potentiels de configurations tierces) et le nombre de dépendances était considérablement plus faible.

Les applications d’aujourd’hui sont , en gros, développé pour fonctionner sur des systèmes distribués. Plus particulièrement, de nombreuses organisations adoptent la pratique de la création d’applications cloud natives, des applications spécialement conçues pour fonctionner sur des installations cloud modernes et évolutives. Pensez à Kubernetes, aux maillages de services et aux microservices plutôt qu’à des monolithes bare-metal à locataire unique.

Les innovations natives du cloud rendent les environnements de production considérablement plus complexes. On pourrait dire que le problème ne vient pas des technologies elles-mêmes, cependant que l’augmentation des « pièces mobiles » conduit indirectement les concepteurs à avoir plus de mal à comprendre tous les défauts potentiels du système. Cette complexité offre également aux développeurs plus de chances et de cas extrêmes de faire des erreurs de raisonnement, ouvre des expulsions pour plus d’erreurs de configuration et minimise la possibilité de parler d’un système complet dans n’importe quelle conversation (sans obstruer une journée complète pour parler de toutes les parties).

Nous avons besoin d’une bien meilleure assurance qualité afin de combattre ce combat de front. En pratique, cela suggère que nous avons besoin d’une sorte de système pour nous alerter lorsque notre logiciel ne répond pas aux exigences que nous prévoyons.

Le débogage en production est un contrôle qualité

Les assurances qualité telles que les évaluations de code et le filtrage approprié ne vont pas disparaître. Ils ont leur juste place sur la planète.

Il y a trop de subtilités en production pour que nous puissions nous préparer à chaque problème à l’avance, c’est-à-dire pendant le développement ou pendant la composition de nos tests. L’avancement et le dépistage ne sont pas les bons endroits pour utiliser ces cycles mentaux. Le moyen le plus utile (et le plus rapide) d’accéder à l’origine d’un problème de production est le débogage en production. Où d’autre pouvez-vous voir de vrais utilisateurs, de vraies demandes, de vraies données, de vraies infrastructures, de vrais… tout ?

Tous les bogues ne se répliquent pas localement. Toutes les applications ne peuvent pas être facilement lancées dans un environnement qui duplique l’état du système de production au moment approprié. Toutes les informations ne sont pas facilement extractibles et facilement disponibles pour l’apport du concepteur de débogage. C’est simple en théorie, mais en pratique, il y a toujours une autre chose que nous oublions de simuler en cours de route : un ensemble de configurations, une charge spécifique sur la base de données, une interruption particulière d’un service tiers.

Tout revient à équilibrer la vitesse du logiciel d’expédition et le contrôle de la qualité. Chaque entreprise souhaite fournir de nouvelles fonctionnalités rapidement, répéter et répéter. Afin de faire fonctionner « le mouvement rapide », les équipes doivent pousser le code vers la production ainsi que voir comment ce code agit avec une utilisation réelle. Les développeurs ont besoin d’une méthode simple et sûre pour maîtriser leurs services de production, à partir des outils qu’ils utilisent actuellement.

Réparer la boîte noire

Lorsqu’un opérateur informatique ou un ingénieur devops obtient cette terrible page qu’un service est en panne, ils disposent d’une suite complète de mesures de santé et d’une variété de boutons à pousser et boutons à abaisser afin de rétablir la santé du service. Ils ont des mécanismes qui leur permettent d’avoir une vue à 360 degrés de la situation.

Les concepteurs … pas beaucoup. Nous sommes condamnés à parcourir un nombre illimité de journaux et à nous contenter de tableaux de bord des mesures des installations et de tous les détails dont nous nous sommes souvenus. Lorsqu’un concepteur reçoit cette terrible alerte qu’il y a un bogue, c’est comme les premières phases d’une enquête sur une scène de crime qui n’a pas de suspects et juste des traces d’idées.

Généralement, les premières étapes posent des problèmes comme :  » Cela a-t-il eu lieu pour cet utilisateur uniquement ou pour tous les utilisateurs ? » Ou, « était-ce lié à un récent déploiement de fonctionnalités ou à un changement de configuration ? » Commence donc une longue procédure de suppression, le développeur triant les journaux d’applications pour tenter d’établir des liens entre leurs théories de travail et ce qui s’est réellement passé. Régulièrement que nous ne souhaitons l’admettre, le problème rôde à l’intérieur d’une boîte noire – un élément ou un chemin pour lequel nous n’avons tout simplement pas enregistré depuis le début.

Ceci est fréquemment suivi d’une série de correctifs qui sont appliqués tout au long l’enquête, ce qui a entraîné de nombreuses minutes d’occurrence précieuses investies en attendant que le pipeline CI/CD se termine et que les versions soient lancées, le tout pour avoir un meilleur aperçu de ce qui se passe dans l’application de production en cours d’exécution. Il s’agit d’une procédure longue, coûteuse et nettement non agile qui éloigne également les développeurs des outils qu’ils comprennent et apprécient et les plonge dans le monde du suivi informatique, des tableaux de bord et des interfaces graphiques. Mauvais.

Les développeurs méritent une observabilité native des développeurs

En réfléchissant un instant à l’évolution significative actuellement en cours dans le monde du logiciel, il est étonnant de voir combien de systèmes modernes ont été construits uniquement pour le dans le but de permettre aux développeurs de recevoir du code vers une application en cours d’exécution en production beaucoup plus rapidement et avec moins de travail manuel.

La réparation du code de production doit être tout aussi rapide et simple, avec le même outil qui permet un , temps réel et processus natif du développeur. Les développeurs, et non les opérateurs, doivent posséder la fiabilité du raisonnement de l’application, ainsi que la découverte et la suppression des bogues en production. Les concepteurs ont besoin d’outils d’observabilité intégrés dans les workflows de développement, dans les IDE, dans le contrôle des sources.

Nous n’en sommes pas là. Nos outils pour séparer les problèmes au niveau du code en temps réel sont toujours problématiques. Il est facile d’envoyer votre code à un fabricant sur un autre continent, il est difficile de comprendre la structure d’un objet ou sa taille en mémoire si vous ne vous êtes pas explicitement connecté pour cela dès le départ.

En tant que concepteur et superviseur de longue date qui a eu l’avantage de diriger une équipe d’excellents concepteurs, je peux dire en toute vérité que nous méritons un meilleur outillage. Des outils qui fonctionnent là où nous travaillons. Des outils intégrés à notre flux de travail, non obtenus à partir d’autres rôles dans l’entreprise. Nous avons besoin d’outils qui nous permettent de « toucher » le système (sans impacter son état réel) et d’avoir une bien meilleure vision de la façon dont nos applications agissent lorsqu’elles ne se comportent pas comme elles le devraient.

Leonid Blouvshtein est cofondateur et CTO de Lightrun basé à Tel-Aviv.

— Nouveau

Le forum Tech Online offre un endroit pour découvrir et parler de l’innovation d’entreprise émergente avec une profondeur et une ampleur inégalées. Le choix est subjectif, basé sur notre choix des technologies que nous pensons être cruciales et du plus grand intérêt pour les lecteurs d’InfoWorld. InfoWorld décline les supports marketing pour la publication et se réserve le droit de modifier tout le contenu fourni. Envoyez toutes vos questions à newtechforum@infoworld.com.

.

Toute l’actualité en temps réel, est sur L’Entrepreneur

LAISSER UN COMMENTAIRE

S'il vous plaît entrez votre commentaire!
S'il vous plaît entrez votre nom ici