bas121 - Fotolia
Les clés pour une automatisation DevOps réussie
Un pipeline CI efficace commence par l’automatisation des builds. Mais il y a d’autres étapes nécessaires pour obtenir de meilleurs résultats.
Avec un pipeline de développement et de déploiement continus (CI/CD) associé à une infrastructure programmable, les spécialistes de l’IT peuvent rapidement créer, développer des logiciels et les mettre à mises à jour. Pour automatiser la pratique DevOps, il convient de se concentrer sur la livraison du code et sur la procédure de déploiement.
Plus important encore, un pipeline CI/CD devrait être l’unique moyen pour les développeurs d’accéder au code et d’opérer les changements nécessaires.
Tracer le chemin pour l’automatisation des pratiques DevOps
Une build exécutable est une préversion du logiciel portant un numéro de compilation séquentiel. La création de builds fiables est essentielle lors du cycle de développement et de la livraison d’un produit fini. Mettre l’accent sur l’automatisation fait sens économiquement : en gérant des versions exécutables manuellement, la porte est ouverte aux erreurs humaines. Il est préférable de robotiser les étapes reproductibles qui peuvent et doivent être réalisées en n’utilisant rien d’autre que des informations qui résident déjà dans le repository du code source. Les développeurs peuvent ainsi se concentrer sur des tâches plus critiques, comme l’élimination des bugs.
Pour automatiser les builds, leur création doit être la première étape du pipeline. Un outil dédié à cet effet conçoit et package un logiciel dans un environnement sain. L’artefact est ensuite chargé dans le contrôleur de code source. À ce stade, la chaîne d’outil CI/CD peut alors faire descendre l’artefact au cours des étapes suivantes pour s’assurer que la build ne change pas à mesure qu’elle progresse vers la production.
Attention de ne pas confondre l’automatisation des builds avec l’intégration continue, qui consiste à compiler le code dans un exécutable le plus souvent possible. Par exemple, il convient de lancer cette procédure quand les développeurs vérifient le changement des lignes de code dans le repository correspondant. Ensuite, lancer des tests permet de vérifier l’exactitude des modifications opérées.
Jenkins est un serveur open source écrit en Java qui aide à automatiser certaines étapes du pipeline CI/CD, dont la conception de versions compilées. La solution est devenue un standard omniprésent dans l’industrie à bien des égards. De la documentation et des tutoriels peuvent aider à la configuration que ce soit sur AWS, Azure ou Google Cloud Platform.
Dans la même veine, Apache Maven est un logiciel ouvert de gestion de projet basé sur des modèles objet. Il sert de système centralisé pour gérer la construction du logiciel en développement, le reporting et la documentation. Encore une fois, Maven est largement documenté.
Travis CI est un service hébergé d’intégration continue relié à GitHub. Il est disponible gratuitement ou à l’abonnement. Il permet également de gérer et de tester les versions d’un software en préparation.
Améliorer la phase de tests
La phase de vérification demande d’accomplir des tests unitaires, d’intégration, et d’employer d’autres techniques pour détecter les défauts. Dans le cadre de ce processus, l’intervention humaine peut amener à des retards et est souvent synonyme d’équipes restreintes. De plus, dans beaucoup d’entreprises cette étape reste la plus négligée du développement.
Les solutions d’automatisations actuelles permettent de faciliter toutes les phases de tests de vérification, de performance et de sécurité. Cependant, ils n’éliminent pas le besoin de testeurs humains. Il ne faut pas trop automatiser trop vite et trop tôt. Cela va compliquer les flux de travail et la conception des builds.
Par ailleurs, ces outils demandent une documentation adaptée. Surtout, il ne faut pas oublier de documenter les tests ratés à l’aide de captures d’écran et de journaux d’activités.
Selenium est un produit open source qui permet d’automatiser les navigateurs. Vous pouvez l’utiliser pour robotiser des applications Web à des fins de test ou d’administration Web sur AWS, Azure Pipelines et Google Cloud Platform.
Appium, un autre outil flexible facilite les essais des fonctionnalités des applications web natives, hybrides et mobiles, donc sur tablette et smartphone, principalement. AWS a publié de la documentation sur la façon de tester les applications iOS en utilisant Appium et AWS Device Farm, sa plateforme de test qui émule des périphériques mobiles.
Cucumber est un soft open source qui supporte le développement basé sur le comportement. Il lit les spécifications exécutables écrites en texte clair et valide que le logiciel suit les spécifications indiquées.
Adapter les déploiements à des environnements multiples
Dans le monde des datacenters, le déploiement consiste à définir l’ensemble des éléments qui composent une application dans des environnements de développement ou de production. Les activités typiques lors de cette étape sont : la distribution, l’installation, l’activation, la désactivation, la mise et le suivi des versions.
En raison des évolutions apportées par les architectures hybrides et multicloud, l’automatisation devient nécessaire afin de faire fonctionner des d’applications depuis des machines physiques virtuelles, dans des containers ou dans le cloud. Pour supporter la diversité, le déploiement doit être fiable et reproductible. Son automatisation doit reposer sur des procédures unifiées appliquées tout au long du développement.
Pour réussir cette étape, il convient de surveiller des indicateurs de performances clés. Par exemple, le délai de modification mesure l’écart entre le moment où l’on ajoute une fonctionnalité et celui où elle est lancée en production. L’on peut aussi enregistrer le nombre de lignes de code poussées par déploiement. Il existe également d’autres mesures du rendement. Pour cela, nous recommandons de configurer vos rapports dès que l’outil d’automatisation DevOps est en place. Par ailleurs, ils remplacent les scripts et les processus manuels des plug-ins qui intègrent le pipeline nécessaire à la mise en production.
À cet effet, Bitbucket Cloud apporte une gestion CI/CD dans sa plateforme collaborative. Son éditeur Atlassian l’appelle Bitbucket Pipelines & Deployments. Celle-ci intègre Jira et d’autres systèmes appréciés des développeurs.
ElectricFlow est une plateforme dédiée à cette tâche qui facilite l’orchestration des versions et des indicateurs concernant la procédure de mise à disposition.
Enfin AWS CodeDeploy automatise les déploiements de code dans n’importe quelle instance AWS. Ce service fonctionne avec toutes les plateformes, les langages et les applications. Les fonctionnalités clés incluent un contrôle centralisé et des réplications de ces étapes.