Une chaîne d'outils DevOps bien conçue garantit un déploiement et une gestion de code efficaces et fiables tout au long du cycle de vie.

Les pipelines DevOps ou les pipelines CICD sont une série d'outils combinés pour assurer une livraison rapide et fiable des applications. Une chaîne d'outils est une combinaison d'outils utilisés pour construire le pipeline, où chaque outil remplit une tâche ou une fonction spécifique.

Une chaîne d'outils DevOps bien conçue garantit un déploiement et une gestion de code efficaces et fiables tout au long du cycle de vie. La création d'une chaîne d'outils suffisamment flexible pour répondre aux demandes changeantes nécessite des composants indépendants et modulaires.

En règle générale, les développeurs ne consomment pas directement une chaîne d'outils. Au lieu de cela, un outil de pipeline tel que Jenkins consomme les composants des chaînes d'outils. Un pipeline est une ou plusieurs étapes (ou étapes); à chaque étape exécute un ou plusieurs workflows pour effectuer une tâche spécifique. Les workflows de pipeline consomment un composant pertinent de la chaîne d'outils.

Un ou plusieurs pipelines doivent couvrir la couverture de bout en bout du cycle de vie du développement logiciel (SDLC). Le SDLC comprend sept étapes:

Plan

- Planification de projet (-- Project planning)

- Rassemblement des exigences (-- Requirement gathering)

- Ateliers d'affaires (-- Business workshops)

Créer 

-- Conception de logiciels (-- Software design)

- Développement de code (-- Code development)

- Tests unitaires (-- Unit testing)

Vérifier

- Test d'acceptation(-- Acceptance testing)

- Test d'intégration (-- Integration testing)

- Analyses de sécurité (-- Security scans)

Paquet

- Agréments (-- Approvals)

- Création de packages(-- Package creation)

Libération

- Provisioning (-- Provisioning)

-- Déploiement (-- Deployment)

Configurer

- Configuration du déploiement post-logiciel (-- Post software deployment configuration)

Moniteur

-- Suivi de la performance (-- Performance monitoring)

- Moniteur de fiabilité (-- Reliability monitor)

- Collecte de commentaires (-- Feedback gathering)

 

Certaines étapes du SDLC telles que les tests et le conditionnement feront partie d'un pipeline CICD automatisé, tandis que des étapes telles que la collecte de commentaires nécessitent une entrée manuelle.

Vous constaterez rapidement qu'il existe une multitude d'outils parmi lesquels choisir lors de la création d'une chaîne d'outils, ce qui rend difficile la sélection des outils à utiliser. Certains outils sont fantastiques pour un usage particulier, tandis que d'autres sont bons pour plusieurs usages.

Une chaîne d'outils composée de nombreux petits outils, chacun avec un spécifique peut être très modulaire et flexible, ce qui est génial. Cependant, les frais généraux de gestion augmentent avec le nombre d'outils utilisés. Il est essentiel de s'assurer que la chaîne d'outils contient juste assez d'outils pour une expédition de code fiable et efficace.

J'ai vu deux approches de gestion de chaîne d'outils communes: la chaîne d'outils partagée qui est gérée par une équipe d'automatisation et les chaînes d'outils gérées par les équipes d'application.

Les chaînes d'outils partagées sont courantes dans les entreprises qui utilisent l'automatisation pour l'infrastructure en tant que code (IaC) et qui ont soit de petites équipes de développement, soit aucun développement d'applications en interne. Plusieurs équipes utilisent la même chaîne d'outils qu'une plateforme partagée. Cette approche crée une chaîne d'outils standard pour tout le monde et a généralement une charge de gestion inférieure.

D'après mon expérience, les entreprises qui utilisent une chaîne d'outils partagée sont plus susceptibles d'acheter dans un écosystème SDLC auprès d'un seul fournisseur tel qu'Atlassian. Le choix de l'écosystème est généralement basé sur la réduction des frais généraux de gestion en tirant parti des intégrations natives entre les composants; par opposition à l'écriture des intégrations manuellement.

Les entreprises avec des équipes de développement d'applications plus importantes ont généralement un pipeline CICD et une solution de chaîne d'outils pour chaque équipe, qui est gérée par l'équipe. Cette approche de la gestion du SDLC permet aux équipes de développement d'applications de créer un processus qui convient le mieux à leurs besoins.

Les équipes d'application peuvent avoir une plate-forme définie qu'elles doivent utiliser en fonction de la relation entre l'entreprise et les fournisseurs, ou d'autres exigences de l'entreprise. Les équipes d'application intègrent des outils spécifiques supplémentaires pour combler les lacunes de l'étape SDLC dans la plateforme standard.

Assurer l'intégration entre les différents outils est une tâche longue et parfois difficile lors de l'adoption de DevOps car il existe de nombreuses inconnues à résoudre. Validez les niveaux d'intégration entre chaque outil et d'autres outils et les différents types de points de terminaison dans l'environnement.

Certains outils permettent d'étendre les niveaux d'intégration à l'aide de plugins pour simplifier le processus. L'intégration manuelle est requise lorsque les plugins ne sont pas une option, généralement sous la forme de l'utilisation d'un SDK ou d'une API REST.

Ne négligez pas l'impact sur la sécurité lors de l'intégration de différents outils; assurez-vous que vous avez une bonne compréhension des mécanismes en place pour sécuriser les informations d'identification stockées. De plus, validez la façon dont la sécurité du trafic en vol entre les outils; TLS est-il activé par défaut? L'authentification client est-elle prise en charge?

Les chaînes d'outils sont une partie essentielle de l'automatisation et des DevOps, mais doivent être gérées et doivent rester modulaires et agiles. Assurez-vous que vous comprenez les problèmes que la chaîne d'outils est nécessaire pour résoudre, puis examinez les outils qui peuvent le mieux résoudre ces problèmes.