Introduction du débutant aux principes DevOps

0
138
Shutterstock/BoVLD

DevOps est un mot à la mode c'est en fait un ensemble de principes conçus pour rationaliser et régir l'ensemble du processus de développement, depuis le cerveau de vos programmeurs jusqu'à vos serveurs.

Les bases

La plupart des équipes peuvent probablement diviser leurs développeurs en deux grandes catégories :

  • Les développeurs, qui s'occupent de la mise à jour de la base de code, de la correction des bogues et de la programmation tout autour. Vous pouvez également inclure d'autres rôles, tels que les concepteurs Web et d'interface utilisateur dans cette catégorie. En général, cela inclut toute personne impliquée dans la création de votre produit.
  • SysAdmins, ou l'“Operations Team.” Ces personnes s'occupent de la mise à jour des serveurs avec un nouveau code, de la gestion de votre infrastructure de serveur publique et interne, et tout en maintenant tout en fonction.

Pour faire simple, DevOps consiste à intégrer ces deux équipes ensemble (d'où le portemanteau d'un nom). Cela ne fera pas de vos développeurs des administrateurs système, ou vice versa, mais cela devrait les aider à travailler ensemble.

Chaque aspect et chaque phase sont complétés par des outils qui facilitent tout ce processus. DevOps est plus que des outils et de l'automatisation, et la mise en œuvre d'un ensemble d'“outils DevOps” ne fera pas automatiquement travailler votre équipe deux fois plus vite, mais ces outils sont une partie importante du processus, et il serait difficile d'être aussi efficace sans certains d'entre eux.

Bien qu'il y ait beaucoup d'autres mots à la mode sous l'égide de “DevOps,” le concept de base est assez simple. Lorsqu'une équipe fonctionne correctement, DevOps se déroule généralement comme suit :

Shutterstock/Ribkhan

Pour expliquer, nous allons commencer par la phase de surveillance. Cela implique de garder un œil sur vos serveurs, de surveiller les analyses, d'analyser les journaux et d'identifier les problèmes avec votre base de code. Bien qu'une grande partie de cela soit liée au code, une grande partie relève également du côté commercial des choses. Atteignez-vous efficacement vos objectifs ? Vos clients sont-ils satisfaits ? Cette phase consiste à découvrir ce qui ne va pas afin que vous puissiez vous fixer des objectifs appropriés. Les outils de surveillance populaires incluent Nagios, AWS CloudWatch et des logiciels d'analyse comme Google Analytics.

Vous obtenez peut-être un ticket directement d'un client et commencez dès la phase de planification. C'est ici que vous vous asseyez avec vos développeurs principaux et discutez de ce qui doit être fait pour compléter un ticket. Si vous utilisez un logiciel comme Jira, vous décomposerez probablement un gros ticket en histoires et problèmes individuels qui peuvent être suivis plus facilement et attribués à des développeurs individuels. Si vous prévoyez un sprint de code pour la semaine ou les deux prochaines, vous voudrez que votre plan soit clairement défini pour réduire le temps passé à réitérer le code.

Publicité

Plutôt que de tester et de construire une seule fois lorsque tout est terminé, dans un environnement DevOps, chaque développeur soumettra idéalement les modifications au contrôle de source plusieurs fois par jour, chaque fois que les problèmes sont résolus ou qu'un jalon mineur est atteint. Cela permet aux phases de construction et de test de commencer tôt et de s'assurer qu'aucun développeur ne s'éloigne trop du HEAD du contrôle de source principal. Cette étape concerne principalement la gestion appropriée du contrôle des sources. Il est donc essentiel de disposer d'un service git efficace comme GitHub, Gitlab ou BitBucket pour assurer le bon fonctionnement de l'intégration continue.

Vous n'avez pas besoin de déployer tous les commits en production immédiatement, mais les déploiements automatisés rapides sont une partie importante de la possibilité de pousser des versions rapides. De plus, cela soulage votre équipe d'exploitation, leur permettant de se concentrer sur des choses plus importantes que la mise à jour manuelle des serveurs avec un nouveau code.

Une fois les nouveaux changements déployés, le cycle recommence. Peut-être que cette nouvelle fonctionnalité que vous avez ajoutée fait que le serveur de base de données de mise en attente fait des heures supplémentaires et devra peut-être être marquée pour une évaluation des performances et corrigée avant le déploiement en production. Si tout se déroule correctement, DevOps cesse d'être une série fixe d'étapes et devient simplement une culture que tout le monde suit naturellement.

Intégration continue/Pipelines de livraison continue

L'automatisation et les outils sont une partie importante de tout environnement DevOps. L'outil le plus important à avoir est peut-être un pipeline d'intégration continue/diffusion continue (CI/CD). Il s'agit d'un processus automatisé qui commence par le code source et gère le processus de création, de test et de déploiement sur les serveurs.

Le CodePipeline d'AWS en est un bon exemple. Chaque fois qu'une modification est détectée dans le contrôle de source (soit GitHub, BitBucket ou AWS CodeCommit), elle est envoyée à AWS CodeBuild pour la création et le test. Alternativement, Jenkins est utilisé assez souvent pour gérer cette phase de construction.

Publicité

Habituellement , une fois la construction terminée, vous souhaiterez l'envoyer à un environnement de test avant de passer directement à la production. Même encore, l'automatisation des déploiements sur les serveurs de test et de production accélérera considérablement les temps d'itération. Dans le pipeline AWS, cela est géré par CodeDeploy. Jenkins peut également gérer le déploiement, ainsi que des logiciels comme Ansible.

Dans l'ensemble, un pipeline CI/CD peut automatiser la plupart du flux DevOps, de la création au déploiement, ce qui en fait un élément crucial pour toute équipe cherche à travailler efficacement.