Guide des nuls : créer des chaînes DevOps avec des outils open source

Guide des nuls : créer des chaînes DevOps avec des outils open source
Construire votre première chaîne DevOps en cinq étapes pour les débutants.

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

Mon introduction au DevOps

J'avais l'habitude de travailler avec des clouds chez Citi Group et de développer une 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 entre les développeurs. Greg Lavender, notre CTO pour l'architecture et l'infrastructure cloud, m'a recommandé ce livre. Projet Phoenix. Il explique magnifiquement les principes DevOps et se lit comme un roman.

Le tableau au verso indique la fréquence à laquelle les entreprises déploient de nouvelles versions :

Guide des nuls : créer des chaînes DevOps avec des outils open source

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

Les choses étaient très différentes pour nous chez Citi jusqu'à ce que nous passions à DevOps. Ensuite, mon équipe avait différents environnements, mais nous faisions la livraison au serveur de développement manuellement. Tous les développeurs avaient accès à un seul serveur de développement basé sur IBM WebSphere Application Server Community Edition. Avec une tentative de livraison simultanée, le serveur « tombait », et à chaque fois nous devions négocier « péniblement » entre nous. Nous avions également une couverture de code insuffisante avec des tests, un processus de livraison manuelle chronophage et aucun moyen de suivre la livraison du code à l'aide d'une tâche ou d'une exigence client.

Il était clair que quelque chose devait être fait de toute urgence, et j'ai trouvé un collègue partageant les mêmes idées. Nous avons décidé de créer ensemble la première chaîne DevOps - il a mis en place une machine virtuelle et un serveur d'application Tomcat, et je me suis occupé de Jenkins, de l'intégration avec Atlassian Jira et BitBucket, ainsi que de la couverture du code avec des tests. Le projet a été un succès : nous avons entièrement automatisé la chaîne de développement, atteint une disponibilité de près de 100 % sur le serveur de développement, pu surveiller et améliorer la couverture du code avec des tests, et une branche Git a pu être liée à une livraison et à un problème Jira. Et presque tous les outils que nous avons utilisés pour construire la chaîne DevOps étaient open source.

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

Une brève description de la chaîne DevOps et CI/CD

DevOps a différentes définitions. DevOps, comme Agile, comprend différentes disciplines. Mais la plupart seront d'accord avec la définition suivante : DevOps est une méthode, ou un cycle de vie, de 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 sait faire de mieux, la fréquence des livraisons augmente, la productivité du travail augmente, la flexibilité augmente.

Si les outils seuls ne suffisent pas à créer un environnement DevOps, ils sont indispensables. Le plus important d'entre eux est l'intégration continue et la livraison continue (CI/CD). Il existe différentes étapes dans la chaîne pour chaque environnement (par exemple DEV (développement), INT (intégration), TST (tests), QA (assurance qualité), UAT (tests d'acceptation utilisateur), STG (préparation), PROD (utilisation)) , les tâches manuelles sont automatisées, les développeurs peuvent produire du code de qualité, le livrer et le reconstruire facilement.

Cette note décrit comment créer une chaîne DevOps en cinq étapes, comme illustré dans l'image ci-dessous, à l'aide d'outils open source.

Guide des nuls : créer des chaînes DevOps avec des outils open source

Nous allons passer aux choses sérieuses.

Étape 1 : Plate-forme CI/CD

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

Qu'est-ce que Jenkins ? Imaginez que vous disposiez d'un panneau de contrôle magique pour une variété de services et d'outils. Seul, un outil CI/CD comme Jenkins est inutile, mais avec différents outils et services, il devient tout-puissant.

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

Guide des nuls : créer des chaînes DevOps avec des outils open source

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

Guide des nuls : créer des chaînes DevOps avec des outils open source

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

Étape 2 : Gestion des versions

La meilleure (et sans doute la plus simple) façon de tester la magie d'un outil CI/CD est de l'intégrer à un outil de gestion du contrôle des sources (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 tout autre langage qui est un wagon et un petit chariot. Ce que vous écrivez s'appelle le code source. Au début, surtout si vous travaillez seul, vous pouvez tout enregistrer dans un répertoire local. Mais à mesure que le projet grandit et que de plus en plus de personnes le rejoignent, vous avez besoin d'un moyen de partager les modifications de code tout en évitant les conflits lors de la fusion des modifications. Et vous devez également restaurer d'une manière ou d'une autre les versions précédentes sans utiliser de sauvegardes et en utilisant la méthode copier-coller pour les fichiers de code.

Et ici sans SCM nulle part. Le SCM stocke le code dans des référentiels, en gère les versions et le coordonne entre les développeurs.

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

Guide des nuls : créer des chaînes DevOps avec des outils open source

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

Guide des nuls : créer des chaînes DevOps avec des outils open source

L'outil CI/CD peut automatiser le téléchargement et le téléchargement du code source et la collaboration en équipe. Pas mal? Mais maintenant, comment en faire 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 du code et valider les modifications apportées au contrôle de code source, et 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 empaquetée pour être distribuée ou exécutée en tant qu'exécutable. (Un langage de programmation interprété comme JavaScript ou PHP n'a pas besoin d'être compilé.)

Utilisez un outil d'automatisation de build. Quel que soit l'outil que vous choisissez, il assemblera le code dans le bon format et automatisera le nettoyage, la compilation, les tests et la livraison. Les outils de compilation varient selon la langue, mais les options open source suivantes sont couramment utilisées.

Guide des nuls : créer des chaînes DevOps avec des outils open source

Parfait! Insérons maintenant les fichiers de configuration de l'outil d'automatisation de la construction dans le contrôle de code source afin que l'outil CI/CD les construise.

Guide des nuls : créer des chaînes DevOps avec des outils open source

Ça fait du bien. Mais où tout cela va-t-il se dérouler maintenant ?

Étape 4 : Serveur d'applications Web

Ainsi, vous avez un fichier empaqueté qui peut être exécuté ou déployé. Pour qu'une application soit vraiment utile, elle doit avoir une sorte de service ou d'interface, mais vous devez tout mettre quelque part.

Une application Web peut être hébergée sur un serveur d'applications Web. Le serveur d'applications fournit un environnement dans lequel vous pouvez exécuter une logique packagée, rendre des interfaces et exposer des services Web via un socket. Vous avez besoin d'un serveur HTTP et de quelques autres environnements (une machine virtuelle, par exemple) pour installer le serveur d'applications. Pour l'instant, supposons que vous gérez tout cela au fur et à mesure (bien que je parlerai des conteneurs ci-dessous).

Il existe plusieurs serveurs d'applications Web ouverts.

Guide des nuls : créer des chaînes DevOps avec des outils open source

Nous avons déjà une chaîne DevOps presque opérationnelle. Bon travail!

Guide des nuls : créer des chaînes DevOps avec des outils open source

En principe, vous pouvez vous arrêter ici, puis vous pouvez le gérer 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 les bogues tout de suite et d'améliorer le code pour plaire aux utilisateurs finaux. À cette fin, il existe de nombreux outils ouverts qui non seulement testeront le code, mais conseilleront également sur la façon de 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 l'écriture et l'exécution des tests, et les outils avec des astuces pour améliorer la qualité du code.

Cadres de test

Guide des nuls : créer des chaînes DevOps avec des outils open source

Des outils avec des conseils de qualité

Guide des nuls : créer des chaînes DevOps avec des outils open source

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 didacticiel.

Étapes supplémentaires

Containers

Comme je l'ai déjà dit, un serveur d'applications peut être hébergé dans 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 souvent plus de place que l'application, et un conteneur suffit généralement avec quelques bibliothèques et configuration. Dans certains cas, les machines virtuelles sont indispensables, mais le conteneur peut accueillir l'application avec le serveur sans surcoût.

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

Guide des nuls : créer des chaînes DevOps avec des outils open source

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

Outils d'automatisation du middleware

Notre chaîne DevOps est axée sur la création et la livraison collaboratives d'une application, mais il existe d'autres choses intéressantes que vous pouvez faire avec les outils DevOps. Par exemple, utilisez les outils Infrastructure as Code (IaC), également connus sous le nom d'outils d'automatisation middleware. Ces outils permettent d'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 pousser vers le serveur d'applications.

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

Guide des nuls : créer des chaînes DevOps avec des outils open source

Détails dans les articles Opensource.com:

Et maintenant quoi?

Ce n'est que la pointe de l'iceberg. La chaîne DevOps peut faire bien plus. Commencez avec un outil CI/CD et voyez ce que vous pouvez automatiser d'autre pour vous faciliter la tâche. N'oubliez pas outils de communication ouverts pour une collaboration efficace.

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

Vous pouvez également intégrer DevOps avec des outils agiles ouverts :

Source: habr.com

Ajouter un commentaire