Guide factice: Création de chaînes DevOps à l'aide d'outils Open Source


Créez la première chaîne DevOps en cinq étapes pour les débutants.


DevOps est devenu une panacée pour des processus de développement trop lents, fragmentés et problématiques. Mais vous avez besoin de connaissances minimales dans DevOps. Il couvrira des concepts tels que la chaîne DevOps et comment la créer en cinq étapes. Ce n'est pas un guide complet, mais seulement un «poisson» qui peut être développé. Commençons par l'histoire.


Ma connaissance de DevOps


Avant, je travaillais avec les nuages ​​chez Citi Group et j'ai développé l'application Web IaaS pour gérer l'infrastructure cloud de Citi, mais j'ai toujours été intéressé par la façon d'optimiser la chaîne de développement et d'améliorer la culture parmi les développeurs. Greg Lavender, notre directeur technique pour l'architecture et l'infrastructure cloud, m'a conseillé sur le livre Phoenix Project . Elle explique parfaitement les principes de DevOps, tout en lisant comme un roman.


Le tableau au dos montre à quelle fréquence les entreprises déploient de nouvelles versions:



Comment Amazon, Google et Netflix parviennent-ils à se déployer autant? C'est simple: ils ont compris comment créer une chaîne DevOps presque parfaite.


Chez Citi, tout était complètement faux jusqu'à ce que nous passions à DevOps. Ensuite, mon équipe avait des environnements différents, mais nous avons effectué la livraison au serveur de développement manuellement. Tous les développeurs n'avaient accès qu'à un seul serveur de développement basé sur IBM WebSphere Application Server Community Edition. Avec une tentative simultanée de livraison, le serveur s'est "écrasé", et chaque fois nous avons dû "douloureusement" nous mettre d'accord. Nous avions également une couverture de code insuffisante avec des tests, un processus de livraison manuelle laborieux et aucun moyen de suivre la livraison du code selon une tâche ou une exigence du client.


Il était clair que quelque chose devait être fait de toute urgence, et j'ai trouvé un collègue aux vues similaires. Nous avons décidé de créer la première chaîne DevOps ensemble - il a installé la machine virtuelle et le serveur d'applications Tomcat, et j'ai repris Jenkins, l'intégration avec Atlassian Jira et BitBucket, et couvrant également le code avec des tests. Le projet a été un succès: nous avons complètement automatisé la chaîne de développement, atteint près de 100% de disponibilité du serveur de développement, avons pu suivre et améliorer la couverture du code avec des tests, et la branche Git pourrait être liée à la livraison et à la tâche Jira. Et presque tous les outils que nous avons construits la chaîne DevOps étaient open source.


En fait, la chaîne a été simplifiée, car nous n'avons même pas utilisé de configurations avancées utilisant Jenkins ou Ansible. Mais nous l'avons fait. C'est peut-être une conséquence du principe de Pareto (aka règle 80/20).


Une brève description des chaînes DevOps et CI / CD


DevOps a différentes définitions. DevOps, comme Agile, comprend une variété de disciplines. Mais la plupart seront d'accord avec la définition suivante: DevOps est la méthode, ou cycle de vie, du développement logiciel, dont le principe principal est de créer une culture où les développeurs et les autres employés sont «sur la même longueur d'onde», le travail manuel est automatisé, chacun fait ce qu'il peut de mieux, la fréquence des livraisons augmente, la productivité augmente, la flexibilité augmente.


Et bien que les outils seuls ne suffisent pas à créer un environnement DevOps, vous ne pouvez pas vous en passer. Le plus important d'entre eux est l'intégration continue et la livraison continue (CI / CD). Il existe différentes étapes de la chaîne pour chaque environnement (par exemple, DEV (développement), INT (intégration), TST (test), QA (contrôle de qualité), UAT (test d'acceptation par les utilisateurs), STG (préparation), PROD (utilisation)), les tâches manuelles sont automatisées, les développeurs peuvent créer du code de haute qualité, le livrer et peuvent être facilement reconstruits.


Cet article décrit comment créer une chaîne DevOps en cinq étapes, comme indiqué dans l'image ci-dessous, en utilisant des outils open source.



Passons aux choses sérieuses.


Étape 1: Plateforme CI / CD


Tout d'abord, vous avez besoin d'un outil CI / CD. Jenkins est un outil CI / CD open source écrit en Java sous la licence MIT, qui a commencé la popularisation du mouvement DevOps et qui est devenu la norme de facto pour CI \ CD.


Qu'est-ce que Jenkins? Imaginez que vous disposez d'un panneau de commande magique pour une grande variété de services et d'outils. Un outil CI / CD lui-même, tel que Jenkins, est inutile, mais avec différents outils et services, il devient tout-puissant.


En plus de Jenkins, il existe de nombreux autres outils ouverts, choisissez-en un.



Voici à quoi ressemble le processus DevOps avec un outil CI / CD



Vous avez un outil CI / CD dans localhost, mais il n'y a rien à faire. Passons à l'étape suivante.


Étape 2: contrôle de version


La meilleure façon (et peut-être la plus simple) de tester la magie de l'outil CI / CD est de l'intégrer à l'outil de gestion du contrôle de source (SCM). Pourquoi avez-vous besoin d'un contrôle de version? Disons que vous faites une demande. Vous l'écrivez en Java, Python, C ++, Go, Ruby, JavaScript ou dans tout autre langage, dont un chariot et un petit chariot. Ce que vous écrivez s'appelle du code source. Au début, surtout si vous travaillez seul, vous pouvez tout enregistrer dans un répertoire local. Mais lorsque le projet se développe et que davantage de personnes le rejoignent, vous avez besoin d'un moyen de partager les modifications dans le code, mais en même temps, évitez les conflits lors de la fusion des modifications. Et vous devez également restaurer les versions précédentes sans utiliser de sauvegardes et en utilisant la méthode copier-coller pour les fichiers avec du code.


Et ici sans SCM n'importe où. SCM stocke le code dans des référentiels, gère ses versions et le coordonne entre les développeurs.


Il existe de nombreux outils SCM, mais Git est à juste titre devenu la norme de facto. Je vous conseille de l'utiliser, mais il existe d'autres options.



Voici à quoi ressemble le pipeline DevOps après l'ajout de SCM.



L'outil CI / CD peut automatiser le chargement et le déchargement du code source et le travail d'équipe. Pas mal? Mais comment en faire maintenant une application fonctionnelle, appréciée par des milliards d'utilisateurs?


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


Tout se passe comme il se doit. Vous pouvez télécharger le code et enregistrer les modifications dans le système de contrôle de version, ainsi qu'inviter des amis à travailler avec vous. Mais vous n'avez pas encore d'application. Pour qu'il s'agisse d'une application Web, elle doit être compilée et placée dans un package pour être livrée ou exécutée en tant que fichier exécutable. (Un langage de programmation interprété tel que JavaScript ou PHP n'a pas besoin d'être compilé.)


Utilisez un outil d'automatisation d'assemblage. Quel que soit l'outil que vous choisissez, il collectera le code au bon format et automatisera le nettoyage, la compilation, les tests et la livraison. Les outils de construction sont différents selon la langue, mais les options open source suivantes sont généralement utilisées.



Super! Nous allons maintenant insérer les fichiers de configuration de l'outil d'automatisation d'assemblage dans le système de contrôle de version afin que l'outil CI / CD les assemble.



Il semble que tout va bien. Mais où tout déployer maintenant?


Étape 4: serveur d'applications Web


Vous disposez donc d'un fichier compressé que vous pouvez exécuter ou déployer. Pour que l'application soit vraiment utile, elle doit avoir une sorte de service ou d'interface, mais vous devez tout placer quelque part.


L'application Web peut être hébergée sur le serveur d'applications Web. Le serveur d'applications fournit un environnement dans lequel vous pouvez exécuter la logique du programme à partir d'un package, effectuer le rendu d'interface et ouvrir des services Web via un socket. Vous avez besoin d'un serveur HTTP et de plusieurs autres environnements (machine virtuelle, par exemple) pour installer le serveur d'applications. Pour l'instant, imaginons que vous traitez tout cela dans le processus (bien que je parlerai des conteneurs ci-dessous).


Il existe plusieurs serveurs d'applications Web ouverts.



Nous avons déjà obtenu presque la chaîne de travail DevOps. Excellent travail!



En principe, vous pouvez vous arrêter ici, puis vous pouvez le faire vous-même, mais cela vaut la peine de parler de la qualité du code.


Étape 5: tester la couverture


Les tests prennent beaucoup de temps et d'efforts, mais il est préférable de trouver immédiatement les erreurs et d'améliorer le code pour plaire aux utilisateurs finaux. À cet effet, il existe de nombreux outils ouverts qui non seulement testent le code, mais conseillent également comment l'améliorer. La plupart des outils CI / CD peuvent se connecter à ces outils et automatiser le processus.


Les tests sont divisés en deux parties: les frameworks de test pour écrire et effectuer des tests, et des outils avec des conseils pour améliorer la qualité du code.


Cadre de test



Outils de qualité



La plupart de ces outils et frameworks sont écrits pour Java, Python et JavaScript, car C ++ et C # sont propriétaires (bien que GCC soit open source).


Nous avons appliqué les outils de couverture de test, et maintenant le pipeline DevOps devrait ressembler à l'image au début du manuel.


Étapes supplémentaires


Conteneurs


Comme je l'ai dit, le serveur d'applications peut être hébergé sur une machine virtuelle ou un serveur, mais les conteneurs sont plus populaires.


Que sont les conteneurs ? En bref, dans une machine virtuelle, le système d'exploitation prend le plus souvent plus d'espace que l'application, et quelques bibliothèques et configurations sont généralement suffisantes pour un conteneur. Dans certains cas, les machines virtuelles ne peuvent pas être supprimées, mais le conteneur contient l'application avec le serveur sans frais supplémentaires.


Pour les conteneurs, ils prennent généralement Docker et Kubernetes, bien qu'il existe d'autres options.



Lisez les articles sur Docker et Kubernetes sur Opensource.com :



Outils d'automatisation du middleware


Notre chaîne DevOps se concentre sur la co-construction et la livraison de l'application, mais d'autres choses intéressantes peuvent être faites avec les outils DevOps. Par exemple, utilisez l'infrastructure comme outils de code (IaC), également appelés outils d'automatisation de middleware. Ces outils aident à automatiser l'installation, la gestion et d'autres tâches pour le middleware. Par exemple, un outil d'automatisation peut prendre des applications (serveur d'applications Web, base de données, outils de surveillance) avec les configurations correctes et les transférer sur le serveur d'applications.


Voici quelques options pour les outils d'automatisation open middleware:



Détails dans les articles sur Opensource.com :



Et maintenant quoi?


Ce n'est que la pointe de l'iceberg. La chaîne DevOps peut faire bien plus. Commencez avec l'outil CI / CD et découvrez ce que vous pouvez automatiser pour faciliter votre travail. N'oubliez pas les outils de communication ouverts pour une collaboration efficace.


Voici quelques autres bons articles sur DevOps pour les débutants:



Vous pouvez également intégrer DevOps avec des outils ouverts pour l'agilité:


Source: https://habr.com/ru/post/fr451508/


All Articles