Guide du débutant: Construire un pipeline DevOps

Si vous êtes nouveau dans DevOps, jetez un œil à ce tutoriel sur la création de votre premier pipeline en cinq étapes.



image




DevOps est devenu la solution standard pour corriger les processus de développement logiciel lents, déconnectés ou interrompus. Le problème est que si vous êtes nouveau dans DevOps et que vous ne savez pas par où commencer, vous risquez de ne pas comprendre ces techniques. Cet article vous expliquera la définition d'un pipeline DevOps et vous expliquera comment le créer en cinq étapes. Bien que ce didacticiel ne soit pas complet, il devrait vous donner une base pour vous aider à démarrer et élargir vos connaissances à l'avenir. Mais commençons par l'histoire.



Mon parcours DevOps



J'ai travaillé dans l'équipe cloud du groupe Citi développant une application Web IaaS (Infrastructure-as-a-Service) pour gérer l'infrastructure cloud de Citi, mais je me suis toujours demandé comment rendre le processus de développement plus efficace et apporter un changement culturel positif à l'équipe de développement. J'ai trouvé la réponse dans un livre recommandé par Greg Lavender, CTO de Citi pour l'architecture et l'infrastructure cloud. Le livre s'intitulait The Phoenix Project et explique les principes du DevOps tout en lisant comme un roman.



Le tableau au dos du livre montre la fréquence à laquelle différentes entreprises déploient leurs systèmes dans un environnement de lancement:



Amazon: 23 000 par jour

Google: 5 500 par jour

Netflix: 500 par jour

Facebook: une fois par jour

Twitter: 3 fois par semaine

Entreprise typique: une fois tous les 9 mois



Comment les fréquences Amazon, Google et Netflix sont-elles même possibles? En effet, ces entreprises ont compris comment créer un pipeline DevOps presque parfait.



Nous en étions loin jusqu'à ce que nous implémentions DevOps chez Citi. Mon équipe avait des environnements différents à l'époque, mais le déploiement sur le serveur de développement était complètement manuel. Tous les développeurs n'avaient accès qu'à un seul serveur de développement basé sur IBM WebSphere Application Server Community Edition. Le problème était que le serveur s'arrêtait chaque fois que plusieurs utilisateurs essayaient de se déployer en même temps, de sorte que les développeurs devaient se communiquer leurs intentions, ce qui était assez douloureux. En outre, il y avait des problèmes avec la couverture du code de test de bas niveau, les processus de déploiement manuels fastidieux et l'incapacité de suivre le déploiement du code associé à une tâche ou à une user story spécifique.



J'ai réalisé que j'avais besoin de faire quelque chose et j'ai trouvé un collègue aux vues similaires. Nous avons décidé de collaborer sur le pipeline DevOps initial - il a mis en place une machine virtuelle et un serveur d'applications Tomcat pendant que je travaillais sur Jenkins, intégré Atlassian Jira et BitBucket, et travaillé sur la couverture du code de test. Ce projet parallèle a été très réussi: nous avons presque complètement automatisé de nombreux processus, atteint presque 100% de disponibilité de notre serveur de développement, fourni un suivi et amélioré la couverture du code de test, et également ajouté la possibilité de lier les branches dans Git avec des problèmes dans Jira ou des déploiements. La plupart des outils que nous avons utilisés pour construire notre pipeline DevOps étaient open source.



Maintenant, je comprends à quel point notre pipeline DevOps était simple: nous n'avons pas utilisé d'extensions comme les fichiers Jenkins ou Ansible. Cependant, ce pipeline simple a bien fonctionné, probablement en raison du principe de Pareto (également connu sous le nom de règle 80/20).



Une introduction rapide à DevOps et au pipeline CI / CD



Si vous demandez à plusieurs personnes: «Qu'est-ce que DevOps?», Vous obtiendrez probablement plusieurs réponses différentes. DevOps, comme Agile, a évolué pour englober de nombreuses disciplines différentes, mais la plupart des gens seront d'accord sur quelques points: DevOps est une pratique de développement logiciel ou cycle de vie du développement logiciel (SDLC) qui se concentre sur le changement de la culture dans laquelle les développeurs et les non-développeurs existent dans un environnement dans lequel: des



opérations automatisées qui étaient auparavant effectuées manuellement;

Chacun fait ce qu'il sait le mieux;

Le nombre d'implémentations pendant une certaine période de temps augmente; Le débit augmente;

La flexibilité de développement est augmentée.



Bien que disposer des bons outils logiciels ne soit pas la seule chose dont vous avez besoin pour créer un environnement DevOps, certains outils sont nécessaires. L'outil clé est l'intégration continue et le déploiement continu (CI / CD). Dans ce pipeline, les environnements comportent différentes étapes (par exemple, DEV, INT, TST, QA, UAT, STG, PROD), de nombreuses opérations sont automatisées et les développeurs peuvent écrire du code de haute qualité, obtenir une flexibilité de développement et une fréquence de déploiement élevée.



Cet article décrit une approche en cinq étapes pour créer un pipeline DevOps similaire à celui illustré dans le diagramme suivant à l'aide d'outils open source.



Étape 1: Méthodes CI / CD



La première chose dont vous avez besoin est un outil CI / CD. Jenkins, un outil open source basé sur Java publié sous la licence MIT, est l'outil qui a popularisé la direction DevOps et est devenu le standard de facto.



Alors qu'est-ce que Jenkins? Considérez-le comme une sorte de télécommande universelle magique qui peut parler et organiser divers services et outils. Un outil CI / CD comme Jenkins est inutile en soi, mais il devient plus puissant en se connectant à divers outils et services.



Jenkins n'est qu'un des nombreux outils CI / CD open source que vous pouvez utiliser pour créer votre pipeline DevOps.



Jenkins: Creative Commons et MIT

Travis CI: MIT

CruiseControl: BSD

Buildbot: GPL

Apache Gump: Apache 2.0

Cabie: GNU



Voici à quoi ressemblent les processus DevOps avec un outil CI / CD:



image




Vous avez un outil CI / CD en cours d'exécution sur votre hôte local, mais vous ne pouvez pas faire grand-chose à ce stade. Passons à la prochaine étape du voyage DevOps.



Étape 2: Gérer les systèmes de contrôle de source



La meilleure façon (et sans doute la plus simple) de tester que votre outil CI / CD peut faire la magie est de l'intégrer à un outil de contrôle de code source (SCM). Pourquoi avez-vous besoin d'un contrôle de code source? Disons que vous développez une application. Chaque fois que vous créez une application, vous programmez, peu importe si vous utilisez Java, Python, C ++, Go, Ruby, JavaScript ou l'un des millions de langages de programmation. Le code que vous écrivez est appelé code source. Au début, surtout lorsque vous travaillez seul, vous pouvez probablement tout mettre dans un répertoire local. Mais à mesure que le projet s'agrandit et que vous invitez d'autres personnes à collaborer, vous avez besoin d'un moyen d'éviter les conflits tout en partageant efficacement les modifications. Vous avez également besoin d'un moyen de restaurer les versions précédentes,car la création de sauvegardes et leur copie / collage est déjà obsolète. Vous (et vos coéquipiers) avez besoin de quelque chose de mieux.



C'est là que le contrôle de la source devient pratiquement une nécessité. Cet outil stocke votre code dans des référentiels, assure le suivi des versions et coordonne le travail des participants au projet.



Bien qu'il existe de nombreux outils de contrôle de source, Git est la norme et à juste titre. Je recommande fortement d'utiliser Git, bien qu'il existe d'autres options open source si vous le souhaitez.



Git: GPLv2 et LGPL v2.1

Subversion: Apache 2.0

Concurrent Versions System (CVS): GNU

Vesta: LGPL

Mercurial: GNU GPL v2 +



Voici à quoi ressemble un pipeline DevOps avec des contrôles de source ajoutés.



image




L'outil CI / CD peut automatiser les processus de vérification, de récupération du code source et de collaboration entre les membres. Pas mal? Mais comment en faire une application fonctionnelle pour que des milliards de personnes puissent l'utiliser et l'apprécier?



Étape 3: créer un outil d'automatisation de construction



Bien! Vous pouvez vérifier le code et apporter des modifications au système de contrôle de code source, ainsi qu'inviter vos amis à collaborer au développement. Mais vous n'avez pas encore créé l'application. Pour créer une application Web, elle doit être compilée et empaquetée dans un format de lot déployable, ou exécutée en tant que fichier exécutable. (Notez qu'un langage de programmation interprété comme JavaScript ou PHP n'a pas besoin d'être compilé.)



Utilisez un outil d'automatisation de construction. Quel que soit l'outil d'automatisation de construction que vous choisissez d'utiliser, ils ont tous le même objectif: créer du code source dans le format de votre choix et automatiser la tâche de nettoyage, de compilation, de test et de déploiement dans un environnement spécifique. Les outils de construction varient en fonction de votre langage de programmation, mais voici quelques options open source courantes.



Nom Licence Langage de programmation
Maven Apache 2.0 Java
Fourmi Apache 2.0 Java
Gradle Apache 2.0 Java
Bazel Apache 2.0 Java
Faire GNOU N / a
Grognement MIT JavaScript
Gorgée MIT JavaScript
Construire Apache Rubis
Râteau MIT Rubis
AAP GNOU Python
SCons MIT Python
BitBake GPLv2 Python
gâteau MIT C #
ASDF Expatrié (MIT) ZÉZAYER
Cabale BSD Haskell




Génial! Vous pouvez mettre les fichiers de configuration de l'outil d'automatisation de construction dans un système de contrôle de source et laisser votre outil CI / CD rassembler tout.



image




C'est bon, n'est-ce pas? Mais où déployer votre application?



Étape 4: Serveur pour les applications Web



Jusqu'à présent, vous disposez d'un fichier compressé qui peut être exécutable ou installable. Pour qu'une application soit vraiment utile, elle doit fournir une sorte de service ou d'interface, mais vous avez besoin d'un conteneur pour héberger votre application.



Le serveur d'applications Web est un tel conteneur. Le serveur fournit un environnement dans lequel la logique du package déployé peut être définie. Le serveur fournit également une interface et propose des services Web en ouvrant des sockets vers le monde extérieur. Vous avez besoin d'un serveur HTTP ainsi que d'un environnement (comme une machine virtuelle) pour l'installer. Pour l'instant, supposons que vous en appreniez plus à ce sujet (même si je parlerai des conteneurs ci-dessous).



Il existe plusieurs serveurs d'applications Web open source.



Nom Licence Langage de programmation
Matou Apache 2.0 Java
Jetée Apache 2.0 Java
WildFly GNU petit public Java
VerrePoisson CDDL et GNU moins publics Java
Django BSD à 3 clauses Python
Tornade Apache 2.0 Python
Gunicorn MIT Python
Python MIT Python
Rails MIT Rubis
Node.js MIT Javascript




Votre pipeline DevOps est presque prêt à être utilisé. Bon travail!



image




Bien que vous puissiez vous arrêter là et vous intégrer, la qualité du code est une chose importante pour un développeur d'applications.



Étape 5: couverture des tests de code



La mise en œuvre de tests peut être une autre exigence lourde, mais les développeurs doivent détecter rapidement tout bogue dans l'application et améliorer la qualité du code pour s'assurer que les utilisateurs finaux sont satisfaits. Heureusement, il existe de nombreux outils open source pour tester votre code et faire des recommandations pour améliorer sa qualité. Mieux encore, la plupart des outils CI / CD peuvent se connecter à ces outils et automatiser le processus.



Le test de code se compose de deux parties: des frameworks de test de code qui vous aident à écrire et exécuter des tests, et des outils de proposition qui aident à améliorer la qualité de votre code.



Systèmes de test de code



Nom Licence Langage de programmation
JUnit Licence publique Eclipse Java
EasyMock Apache Java
Mockito MIT Java
PowerMock Apache 2.0 Java
Pytest MIT Python
Hypothèse Mozilla Python
Tox MIT Python




Systèmes de recommandation d'amélioration du code



Nom Licence Langage de programmation
Cobertura GNOU Java
CodeCover Eclipse publique (EPL) Java
Coverage.py Apache 2.0 Python
Emma Licence publique commune Java
JaCoCo Licence publique Eclipse Java
Hypothèse Mozilla Python
Tox MIT Python
Jasmin MIT JavaScript
Karma MIT JavaScript
Moka MIT JavaScript
Plaisanter MIT JavaScript




Notez que la plupart des outils et frameworks mentionnés ci-dessus sont écrits pour Java, Python et JavaScript, puisque C ++ et C # sont des langages de programmation propriétaires (bien que GCC soit open source).



Maintenant que vous avez implémenté des outils de couverture de test, votre pipeline DevOps doit ressembler au diagramme présenté au début de ce didacticiel.



Etapes supplémentaires



Conteneurs



Comme je l'ai dit, vous pouvez héberger votre serveur dans une machine virtuelle ou un serveur, mais les conteneurs sont une solution populaire.



Que sont les conteneurs? La brève explication est qu'une machine virtuelle a besoin d'une énorme quantité de mémoire du système d'exploitation qui dépasse la taille de l'application, tandis que le conteneur n'a besoin que de quelques bibliothèques et configurations pour exécuter l'application. Évidemment, il existe encore des utilisations importantes pour une machine virtuelle, mais un conteneur est une solution légère pour héberger une application, y compris un serveur d'applications.



Bien que d'autres options de conteneur existent, les plus populaires sont Docker et Kubernetes.



Docker: Apache 2.0

Kubernetes: middleware Apache 2.0



Automation



Notre pipeline DevOps est principalement axé sur la co-création et le déploiement d'applications, mais il y a beaucoup d'autres choses qui peuvent être faites à l'aide des outils DevOps. L'un d'eux est l'utilisation d'outils d'infrastructure en tant que code (IaC), également connus sous le nom d'outils middleware. Ces outils aident à automatiser l'installation, la gestion et d'autres tâches pour le middleware. Par exemple, un outil d'automatisation peut récupérer des applications telles que le serveur d'applications Web, la base de données et l'outil de surveillance avec les configurations appropriées et les déployer sur le serveur d'applications.



Voici quelques outils middleware open source:



Ansible: GNU Public

SaltStack: Apache 2.0

Chef: Apache 2.0

Puppet: Apache ou GPL



image




Apprenez en détail comment obtenir un métier recherché à partir de zéro ou passer au niveau supérieur en compétences et en salaire en suivant les cours en ligne payés de SkillFactory:





plus de cours


Utile






All Articles