DevOps – aller fort avec GoCD
Automatiser le processus d’intégration continue et de livraison
De nombreuses organisations récoltent les avantages d’une agilité accrue et d’une vitesse itérative d’adoption des outils et techniques DevOps à la fois dans leurs pratiques d’ingénierie logicielle et dans les domaines de développement non logiciel, tels que la gestion de l’infrastructure. Voyons pourquoi le processus DevOps est si important pour les organisations, en explorant notre propre parcours d’intégration continue et de livraison/déploiement continu (CI/CD) depuis 2012.
Explorez les études de cas des clients Catalyst
Utiliser DevOps pour le développement de logiciels et l’infrastructure
DevOps est considéré comme la nouvelle façon dont les services informatiques sont déployés, ce qui rend les anciens processus de style Waterfall pour la conception, les tests et le déploiement quelque peu redondants.
DevOps permet aux entreprises d’adopter une livraison basée sur un pipeline de leurs services ou produits, appliquée qu’il s’agisse d’une livraison d’infrastructure ou d’une livraison de produits axée sur l’ingénierie logicielle. L’intégration continue et la livraison continue (CI/CD) font maintenant des vagues dans l’industrie informatique, avec des impacts majeurs sur la productivité et l’agilité de déploiement dans l’espace de l’infrastructure, un domaine qui a toujours, historiquement, utilisé une approche différente pour gérer les itérations et les versions. Maintenant, nous voyons les équipes d’infrastructure adopter l’automatisation, l’intégration et les configurations définies par logiciel pour la mise en réseau, les systèmes d’exploitation et le déploiement d’applications, de sorte que la pile de services de bout en bout relève complètement du nouveau paradigme DevOps.
Cette vague d’intérêt pour DevOps a abouti à une multitude d’outils logiciels pour prendre en charge les pipelines CI/CD, également applicables à la gestion de l’infrastructure qu’au développement, aux tests et au déploiement de logiciels.
Catalyst a commencé à concevoir notre processus d’IC en 2012. Depuis lors, nous n’avons pas regardé en arrière. À l’aide de notre plate-forme actuelle, GoCD, nous avons déclenché 132 497 pipelines sur 414 082 étapes de pipeline uniques et exécuté 50 239 déploiements dans plusieurs environnements : mise en scène, tests d’acceptation des utilisateurs (UAT) et production.
Mise à l’échelle rentable lorsque vous en avez besoin
Une grande caractéristique de nos pipelines d’automatisation est que nous adaptons automatiquement les agents de construction. Cela nous permet de modifier automatiquement l’agent de génération en fonction des besoins du déploiement, en fonction des informations fournies lors de l’étape de génération.
Ce niveau de flexibilité rend les déploiements rapides et incroyablement rentables. Au total, Catalyst a intégré 14 736 agents de build différents dans nos déploiements, chacun de ces pipelines aidant à rationaliser notre prestation de services et à améliorer et stabiliser l’état de build pour rendre la sécurité de nos services de production finale plus résistante aux erreurs au niveau de la build ; quelque chose auquel les déploiements manuels sont particulièrement sujets.
Rendre les pipelines plus cohérents
Les projets de développement de logiciels ont deux considérations majeures qui ont un impact sur leur succès ou leur échec. Le premier concerne les facteurs externes qui se situent en dehors du processus de développement lui-même et comprend des éléments tels que la portée changeante du développement et son impact sur les coûts. Le second concerne les éléments internes du processus de développement/du pipeline lui-même.
Lors de la gestion manuelle des éléments de construction, de test et de déploiement du logiciel d’un projet de développement, cela peut introduire des bogues et des erreurs tout au long du cycle de développement. Pourquoi? Parce que les gens sont humains.
Les étapes manuelles peuvent rendre l’identification des erreurs incroyablement difficile, en particulier lorsque les problèmes se manifestent par des problèmes de produit (même s’il s’agit de simples erreurs de construction). Des bogues comme ceux-ci peuvent prendre des jours à corriger, ce qui peut avoir un impact sérieux sur le nombre de nouvelles fonctionnalités ou d’améliorations que vous pouvez déployer lors de votre prochaine itération.
Processus systématiques
En introduisant l’automatisation dans votre processus, vous introduisez la répétabilité, un processus systématique qui exécute les mêmes étapes de la même manière, à chaque fois.
L’utilisation de DevOps permet aux équipes de raccourcir le processus d’itération, afin que les problèmes puissent être résolus et les mises à jour publiées rapidement. Cela laisse aux équipes le temps de se concentrer sur des activités plus intéressantes comme le développement de user story et l’analyse des performances.
Automatisation avec GoCD
Forte d’une vaste expérience en DevOps et en processus CI/CD, l’équipe de Catalyst utilise GoCD dans tous nos pipelines.
Un processus de déploiement éprouvé
Notre processus de déploiement de bout en bout comprend :
Fusionner
◦ Merge from upstream for security;
◦ Fusionnez les sous-modules en amont pour les mises à jour des plugins.
Construire
◦ Construire un artefact de version, généralement un conteneur, peut également être un paquet tarball ou Debian ;
◦ Poussez l’artefact dans un registre Docker ou un référentiel Debian.
Test
◦ Exécuter des tests unitaires ;
◦ Exécutez les tests Behat ;
◦ Signalez tout échec de test dans le canal de discussion interne concerné.
Déployer en préproduction
◦ Temps d’arrêt programmé ;
◦ Testez si une mise à niveau est requise. Sinon, ignorez le mode maintenance et autorisez la mise à jour de l’application en ligne sans interruption ;
◦ Mode de maintenance planifiée ;
◦ Exécutez les scripts de mise à niveau de l’application pour toute modification de schéma ;
◦ AB bascule les serveurs Web et les tâches planifiées en cours d’exécution vers le nouveau code ;
◦ Purger toute mise en cache externe comme Varnish ou CloudFront ;
◦ Fin du mode maintenance ;
◦ Fin des temps d’arrêt.
Tests de fumée post-déploiement
◦ Active vérifie l’application pour s’assurer qu’elle s’exécute correctement.
Production – avant-première
◦ Confirmez que l’artefact de version est disponible ;
◦ Préchauffez l’infrastructure de production avec la nouvelle image pour accélérer les déploiements et réduire les temps d’arrêt.
Déploiement en production
◦ Même processus que la mise en scène avec le même artefact de version ;
◦ Étapes supplémentaires pour créer un clone de base de données pour une restauration rapide si nécessaire.
Tests de fumée de déploiement post-production
◦ Des contrôles plus actifs pour s’assurer que la production est stable.
Nettoyage de déploiement post-production
◦ Clean-u du clone de la base de données a confirmé une fois que la restauration n’est pas requise.
Notre équipe a intégré GoCD dans chaque aspect de notre cycle de vie de déploiement. En fait, les 4 681 déploiements où nous avons fait déployer GoCD dans le cadre du processus, nous avons appris à quel point cette étape d’automatisation est importante pour accélérer la livraison de nouvelles fonctionnalités CI/CD.
Mises à jour de l’environnement
Pour les projets d’infrastructure, GoCD nous a aidés à entreprendre des mises à jour rapides de l’environnement, avec une actualisation automatisée des capacités. Les processus complexes, tels que la maintenance des bases de données, peuvent tous être automatisés. Par exemple:
• Sauvegarder la base de données de production avec pg_dump ou mysqldump
• Restaurer la décharge dans un endroit isolé
• Exécutez des scripts de désinfection des données pour réduire la taille des journaux et anonymisez les données pour supprimer les informations personnellement identifiables (réduction des problèmes de confidentialité).
• Reconfigurez les paramètres des données stockées dans la base de données, telles que les points de terminaison SSO et les points de terminaison d’intégration
• Restaurer la base de données sur un UAT ou un site intermédiaire
• Exécutez une variété de tests automatisés et examinez les résultats
• UAT ou environnements de transfert reconfigurés pour pointer vers la nouvelle base de données
• Enfin, nettoyez l’ancienne base de données et fermez le pipeline
Services CI/CD éprouvés et fiables
Nous adorons utiliser GoCD, car il transforme la fourniture à nos clients de solutions de création et de déploiement. Il a créé tellement d’options pour notre façon de travailler ; nous avons affiné nos méthodes au fil des ans, au point où nous avons des modèles pour presque tous les cas d’utilisation imaginables.
Explorez l’étude de cas sur la mise à niveau et la migration vers le cloud de Moodle
Explore the Moodle upgrade and cloud migration case study
Des services cloud experts qui s’adaptent au changement
Pour l’avenir, nous approfondirons les mises à jour de l’environnement de l’infrastructure informatique, en examinant comment nous continuons à étendre la portée de nos pipelines aux quelques applications qui doivent encore être automatisées. Nous mettrons à jour nos agents pour inclure Ubuntu 20.04 et les conteneuriser, ainsi que pour héberger les agents de construction directement dans le compte AWS de l’application afin de minimiser davantage les autorisations requises pour terminer les déploiements.
Nous explorons comment nous hébergeons des agents de construction dans les régions les moins chères (au niveau mondial) pour tirer parti des prix au comptant du jour au lendemain et améliorons notre collection de mesures pour des rapports de business intelligence plus complets sur la couverture des tests unitaires et les taux de réussite. Enfin, notre équipe développe les moyens d’intégrer l’infrastructure en tant que code pour des mises à jour complètes de l’infrastructure dans le processus d’automatisation de bout en bout.
GoCD, merci pour les 7 dernières années. Nous sommes impatients de développer davantage notre relation, en continuant à automatiser et à introduire de nouvelles étapes de construction dans le processus de déploiement dans le pipeline.
Accélérez vos projets de développement et de déploiement de logiciels
Avez-vous besoin de l’assurance que votre fournisseur de services ne vous laissera pas tomber ? Profitez de notre vaste expérience au niveau de l’entreprise avec GoCD.