Guide du débutant : création de chaînes DevOps avec des outils open source

Guide du débutant : création de chaînes DevOps avec des outils open source
Créer 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, disjoints et autres problèmes. Mais des connaissances minimales en DevOps sont nécessaires. Nous allons aborder des notions telles que la chaîne DevOps et comment la créer en cinq étapes. Ce n'est pas un guide complet, mais simplement une « base » qui peut être étendue. Commençons par l'histoire.

Ma rencontre avec DevOps

Autrefois, je travaillais avec les clouds chez Citi Group et je développais une application web IaaS pour gérer l'infrastructure cloud de Citi, mais j'étais toujours curieux de savoir comment optimiser la chaîne de développement et améliorer la culture parmi les développeurs. Greg Lavender, notre directeur technique pour l'architecture cloud et l'infrastructure, m'a recommandé un livre Projet «Phénix». Il explique très bien les principes de DevOps, tout en se lisant comme un roman.

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

Guide du débutant : création de chaînes DevOps avec des outils open source

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

Chez Citi, ce n'était pas du tout le cas, jusqu'à ce que nous passions à DevOps. À l'époque, mon équipe avait différents environnements, mais la livraison sur le serveur de développement se faisait manuellement. Tous les développeurs n'avaient accès qu'à un seul serveur de développement basé sur IBM WebSphere Application Server Community Edition. Quand nous essayions de livrer en même temps, le serveur « tombait », et nous devions chaque fois « douloureusement » nous entendre. De plus, nous avions une couverture de code insuffisante avec des tests, un processus de livraison manuel laborieux et aucune possibilité de suivre la livraison de code en fonction d'une tâche ou d'une demande client.

Il était clair qu'il fallait agir rapidement, 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 configuré une machine virtuelle et un serveur d'applications Tomcat, tandis que je me suis occupé de Jenkins, de l'intégration avec Atlassian Jira et BitBucket, ainsi que de la couverture de code par des tests. Le projet a été un succès : nous avons entièrement automatisé la chaîne de développement, obtenu presque 100 % de disponibilité pour le serveur de développement, pu suivre et améliorer la couverture de code par des tests, et la branche Git pouvait être liée à la livraison et à la tâche Jira. Et presque tous les outils que nous avons utilisés pour bâtir la chaîne DevOps étaient open source.

En réalité, la chaîne était simplifiée, car nous n’avons même pas utilisé de configurations avancées avec Jenkins ou Ansible. Mais nous avons réussi. Cela peut être le résultat du principe Pareto (ou règle 80/20).

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

DevOps a différentes définitions. Comme Agile, DevOps comprend différentes disciplines. Mais la plupart s'accorderaient sur la définition suivante : DevOps est une méthode, ou un cycle de vie, du développement logiciel dont le principe fondamental est de créer une culture où les développeurs et les autres employés sont 'sur la même longueur d'onde', où le travail manuel est automatisé, chacun s'occupant de ce qu'il fait le mieux, ce qui augmente la fréquence des livraisons, améliore la productivité et accroît la flexibilité.

Et bien que les seuls outils ne soient pas suffisants pour 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). Dans la chaîne, chaque environnement comporte différentes étapes (par exemple, DEV (développement), INT (intégration), TST (test), QA (assurance qualité), UAT (tests d'acceptation par les utilisateurs), STG (préparation), PROD (utilisation)), les tâches manuelles sont automatisées, les développeurs peuvent produire un code de qualité, le livrer et peuvent facilement se réorganiser.

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

Guide du débutant : création de chaînes DevOps avec 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 licence MIT, qui a lancé la popularisation du mouvement DevOps et qui est devenu de facto la norme pour CI/CD.

Qu'est-ce que Jenkins ? Imaginez que vous ayez une télécommande magique pour divers services et outils. L'outil CI/CD, comme Jenkins, est inutile par lui-même, mais avec différents outils et services, il devient omnipotent.

Outre Jenkins, il existe de nombreux autres outils open source, choisissez n'importe lequel.

Guide du débutant : création de chaînes DevOps avec des outils open source

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

Guide du débutant : création de chaînes DevOps avec des outils open source

Vous avez un outil CI/CD sur localhost, mais vous n'avez 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 vérifier la magie de l'outil CI/CD est de l'intégrer avec un outil de gestion de versions (source control management, SCM). Pourquoi la gestion de versions est-elle nécessaire ? Supposons que vous développiez une application. Vous la programmez en Java, Python, C++, Go, Ruby, JavaScript ou dans n'importe quel autre langage myriad. Ce que vous écrivez s'appelle du code source. Au début, surtout si vous travaillez seul, vous pouvez tout conserver dans un répertoire local. Mais lorsque le projet devient plus important et que d'autres personnes se joignent, vous avez besoin d'un moyen de partager les modifications de code tout en évitant les conflits lors des fusions. De plus, vous devez pouvoir récupérer les versions antérieures sans avoir à utiliser des sauvegardes ni à recourir à une méthode de copier-coller pour les fichiers de code.

C'est là qu'intervient le SCM. Le SCM stocke le code dans des dépôts, gère ses versions et le coordonne entre les développeurs.

Il existe de nombreux outils SCM, mais le standard de facto est sans conteste Git. Je vous conseille de l'utiliser, bien qu'il existe d'autres options.

Guide du débutant : création de chaînes DevOps avec des outils open source

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

Guide du débutant : création de chaînes DevOps avec des outils open source

L'outil CI/CD peut automatiser le téléchargement et la mise en ligne du code source ainsi que la collaboration en équipe. Pas mal ? Mais comment transformer cela en une application fonctionnelle, chérie par des milliards d'utilisateurs ?

Étape 3 : outil d'automatisation de la construction

Tout se déroule comme prévu. Vous pouvez télécharger le code et enregistrer les modifications dans le système de gestion de versions, ainsi qu'inviter des amis à travailler avec vous. Mais vous n'avez pas encore d'application. Pour que ce soit une application web, elle doit être compilée et empaquetée pour la livraison ou exécutée en tant que fichier 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 la construction. Quel que soit l'outil que vous choisissiez, il compilera le code dans le format nécessaire et automatisera le nettoyage, la compilation, les tests et la livraison. Les outils de construction varient selon le langage, mais les options open source suivantes sont généralement utilisées.

Guide du débutant : création de chaînes DevOps avec des outils open source

Excellent ! Maintenant, insérons les fichiers de configuration de l'outil d'automatisation de la construction dans le système de gestion de versions afin que l'outil CI/CD puisse les rassembler.

Guide du débutant : création de chaînes DevOps avec des outils open source

Tout semble en ordre. Mais où déployer tout cela maintenant ?

Étape 4 : serveur d'applications web

Donc, vous avez un fichier empaqueté qui peut être exécuté ou déployé. Pour que l'application soit réellement utile, elle doit avoir un service ou une interface, mais vous devez la placer quelque part.

Une application web peut être déployée sur un serveur d'applications web. Le serveur d'applications fournit un environnement où la logique du logiciel du package peut être exécutée, où l'interface peut être rendue et où des services web peuvent être ouverts via un socket. Vous avez besoin d'un serveur HTTP et de plusieurs autres environnements (comme une machine virtuelle, par exemple) pour installer le serveur d'applications. Pour l'instant, imaginons que vous gérez tout cela en cours de route (bien que je parle des conteneurs ci-dessous).

Il existe plusieurs serveurs d'applications web open source.

Guide du débutant : création de chaînes DevOps avec des outils open source

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

Guide du débutant : création de chaînes DevOps avec des outils open source

En principe, vous pouvez vous arrêter ici, vous pourrez vous débrouiller tout seul à partir de là, mais il vaut la peine de parler encore de la qualité du code.

Étape 5 : Couverture des tests

Les tests nécessitent beaucoup de temps et d'efforts, mais il est préférable de détecter les erreurs immédiatement et d'améliorer le code pour ravir les utilisateurs finaux. Pour cela, de nombreux outils open source existent, qui non seulement testeront le code, mais vous conseilleront également sur la manière 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 écrire et exécuter des tests, et les outils fournissant des conseils pour améliorer la qualité du code.

Frameworks de test

Guide du débutant : création de chaînes DevOps avec des outils open source

Outils de conseils sur la qualité

Guide du débutant : création de 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 ait un code source ouvert).

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

Étapes supplémentaires

Conteneurs

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

Qu'est-ce que les conteneurs? Вкратце, в виртуальной машине операционная система чаще всего занимает больше места, чем приложение, а контейнеру обычно достаточно нескольких библиотек и конфигурации. В некоторых случаях без виртуальных машин не обойтись, но контейнер вмещает приложение вместе с сервером без лишних затрат.

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

Guide du débutant : création de chaînes DevOps avec des outils open source

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

Outils d'automatisation de middleware

Notre chaîne DevOps est axée sur la collaboration pour assembler et livrer des applications, mais avec les outils DevOps, il est également possible de réaliser d'autres choses intéressantes. Par exemple, utiliser des outils d'infrastructure en tant que code (IaC), également appelés outils d'automatisation des intermédiaires. Ces outils aident à automatiser l'installation, la gestion et d'autres tâches liées aux intermédiaires. Par exemple, un outil d'automatisation peut prendre des applications (serveur d'applications web, base de données, outils de surveillance) avec les bonnes configurations et les déployer sur le serveur d'applications.

Voici quelques options d'outils d'automatisation des intermédiaires open source :

Guide du débutant : création de chaînes DevOps avec des outils open source

Détails dans les articles sur Opensource.com:

Et maintenant ?

Ce n'est que la partie émergée de l'iceberg. La chaîne DevOps peut faire beaucoup plus. Commencez par un outil CI/CD et découvrez ce qui peut encore être automatisé pour faciliter votre travail. N'oubliez pas les outils de communication open source pour un travail collaboratif efficace.

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

Il est également possible d'intégrer DevOps avec des outils open source pour Agile :

Source : habr.com

Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS 🔥 Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster