Introduction DevOps pour les débutants

DevOps est devenu un mot à la mode, ce qui signifie beaucoup de choses différentes pour beaucoup de gens.

Il est difficile de comprendre et de définir ce qu’est exactement DevOps. Et c’est pourquoi si vous connaissez les concepts fondamentaux de DevOps auxquels la plupart des gens s’associent et l’historique de son évolution, alors obtenez une vue holistique de celui-ci.

L’origine de DevOps

DevOps est un exemple parfait de développement logiciel agile. L’idée de DevOps est née de la nécessité de suivre la vitesse accrue des logiciels et d’y parvenir grâce à des méthodes agiles. Au cours de la dernière décennie, les progrès considérables de la culture et des pratiques agiles ont révélé la nécessité d’une approche plus holistique du cycle de vie de la livraison de logiciels de bout en bout.

Vous vous demandez peut-être ce qu’est le développement logiciel agile –

Le développement agile est un terme large pour définir plusieurs méthodologies de développement logiciel itératives et incrémentales. Les méthodologies agiles populaires sont Scrum, Kanban, Scaled Agile Framework® (SAFe®), Lean Development et Extreme Programming (XP).

Les valeurs fondamentales et la vision de toutes ces méthodologies agiles sont les mêmes, mais chacune d’elles a une approche unique. Toutes ces méthodologies intègrent des itérations et des commentaires continus pour affiner et fournir avec succès un logiciel évolutif. Toutes ces méthodologies impliquent une planification continue, des tests continus, une intégration continue et d’autres formes sans fin pour le projet et le logiciel.

Contrairement aux processus classiques de type cascade, ces méthodologies agiles sont légères et présentent une nature intrinsèquement adaptable. L’une des meilleures choses à propos de ces méthodologies agiles est qu’elles se concentrent toutes sur l’autonomisation des personnes lorsqu’il s’agit de collaborer et de prendre des décisions rapides ensemble.

Image par Segue

Les idéaux de DevOps exécutent la pratique de développement agile étendue pour affiner le mouvement du changement logiciel à travers la construction, la validation, le déploiement et les différentes étapes de livraison. Il permet à l’équipe interfonctionnelle d’avoir la pleine propriété du produit logiciel, de la conception à la production.

Défis résolus par DevOps

Processus de déploiement – ​​Les applications distribuées nécessitent souvent le déploiement des fichiers binaires et de configuration sur plusieurs serveurs. Cela devient plus difficile lorsque vous avez une batterie de serveurs. Il devient difficile de déterminer quoi, comment et où déployer. Le résultat évident est ?

Une longue attente pour placer les artefacts dans le prochain environnement de la route à vivre retarde tout comme les tests, le temps de vie, etc.

DevOps permet aux développeurs de logiciels ou Web et aux opérations informatiques de déployer des processus dans une session de collaboration totalement irréprochable. Cela nous permettra de vérifier ce qui fonctionne, puis de passer au niveau supérieur avec l’automatisation pour mettre en œuvre un développement continu. Cela crée également des pistes pour un développement plus fréquent.

Objectifs DevOps

Il améliore la collaboration entre les parties prenantes de la planification à la livraison et met en œuvre l’automatisation du processus de livraison pour :

  • Améliorer la fréquence du déploiement
  • Atteindre un délai de commercialisation plus rapide du produit final
  • Diminue le taux d’échec des nouvelles versions
  • Il raccourcit le délai entre les correctifs
  • Améliore l’intervalle à des fins de récupération

Scénario DevOps commun

L’ensemble du logiciel vient au point de rencontre avant de commencer un nouveau projet logiciel. L’équipe est composée de développeurs, de testeurs, d’opérations et de professionnels du support. L’équipe élabore le plan de création d’un logiciel entièrement fonctionnel prêt à être déployé.

Chaque jour, un nouveau code est déployé une fois que les développeurs l’ont terminé. La procédure de test automatisée garantit que le code est prêt à être implémenté. Une fois que le code reçoit le signal vert du processus de test d’automatisation, il est déployé auprès d’un petit nombre d’utilisateurs. Le code est surveillé pendant une courte période pour s’assurer qu’il n’y a pas de problèmes imprévus et qu’il est stable. Le nouveau code est ensuite déployé pour le reste des utilisateurs une fois que la surveillance finale a montré que le code est stable. Une partie importante des étapes après la planification et le développement se fait sans intervention humaine.

Différentes phases de maturité DevOps

Il existe de nombreuses phases différentes de maturité DevOps. Voici les phrases clés que vous devez connaître.

Développement de la cascade

Avant l’ère de l’intégration continue, les équipes de développement écrivaient une quantité massive de code, puis celles des différentes équipes étaient fusionnées pour la version. Les versions du code étaient si différentes qu’elles nécessitaient un grand nombre de modifications.

Faire ces nombres de changements utilisés – prend plus de quelques mois. Ce processus n’a pas été productif.

Intégration continue

Il s’agit d’intégrer rapidement un code nouvellement développé avec le code principal à publier. Lorsqu’il s’agit de publier le code, le développement continu permet de gagner beaucoup de temps.

DevOps n’a pas introduit ce terme. L’intégration continue est une pratique d’ingénierie agile issue de la méthodologie Extreme Programming. DevOps a adopté cette pratique car l’automatisation est nécessaire lorsqu’il s’agit d’exécuter avec succès l’intégration continue. L’intégration continue est souvent la première étape vers la maturité DevOps.

L’intégration continue du point de vue de DevOps comprend des étapes telles que la vérification du code, sa compilation en code utilisable et l’exécution de certains des tests de validation nécessaires. ‘

Livraison continue

Il s’agit d’une extension de l’intégration continue et de la deuxième étape DevOps.

La livraison continue vous permet d’ajouter une automatisation et des tests supplémentaires afin non seulement de fusionner rapidement le code avec la ligne de code principale, mais aussi d’obtenir le code presque prêt à être déployé sans intervention humaine.

C’est une pratique de garder votre base de code dans un état presque prêt à être déployé.

Déploiement continu

Le déploiement continu est l’évolution avancée de la livraison continue. Cette pratique nous permet de déployer toutes les voies en production sans aucune intervention humaine.

L’équipe qui travaille sur le développement continu ne déploie jamais de code sans test. Tout le code nouvellement créé passe par des tests automatisés avant d’entrer dans la phase de production. Le code est déployé sur un petit nombre d’utilisateurs et une boucle de rétroaction automatisée surveille la qualité et l’utilisation avant que le code ne passe au niveau suivant.

Un petit nombre d’entreprises comme Netflix, Etsy, Amazon, Pinterest, Flicker, IMVU, Google, etc., font du développement continu.

La valeur

DevOps se concentre fortement sur le développement d’une culture collaborative et l’amélioration de l’efficacité grâce à l’automatisation avec différents outils DevOps. Pour mettre en œuvre DevOps pour votre solution logicielle, vous devez utiliser une combinaison de culture et d’outils.

Culture DevOps

DevOps est une culture particulière qui aide à améliorer la collaboration, à réduire le chaos, à mieux gérer les responsabilités partagées, à mettre en œuvre l’automatisation, l’amélioration de la qualité, la valorisation des commentaires et à accroître l’automatisation.

Les méthodes agiles ont toujours été le meilleur moyen holistique de fournir des logiciels. Lorsqu’il s’agit de mesurer les progrès, l’équipe de développement agile le fait en termes de logiciels fonctionnels. La méthode agile de la culture DevOps permet aux propriétaires de produits, aux développeurs, aux testeurs et aux personnes UX de travailler en étroite collaboration avec le même objectif en tête.

Outils DevOps

Inclut les outils de gestion de la configuration, de test et de création de systèmes, de développement d’applications, de contrôle des versions et de surveillance. Lorsqu’il s’agit de mettre en œuvre l’intégration continue, la livraison continue et le déploiement continu, ils nécessitent des outils différents et, en même temps, ils utilisent également les mêmes outils. Vous devrez utiliser plus d’outils au fur et à mesure de votre progression dans la chaîne de livraison.

Faisons connaissance avec certains des outils et pratiques populaires.

Référentiel de code source – c’est un endroit où les développeurs peuvent s’enregistrer et modifier le code. Le référentiel de code source gère différentes versions du code qui sont archivés afin de s’assurer que les développeurs écrivent sur le code de l’autre.

Git, Apache Subversion, IBM Rational, Artifactory, Nexus, Eclipse, etc., sont quelques-uns des outils de référentiel de code les plus populaires.

Serveur de génération : – le serveur de génération est l’outil d’automatisation utilisé pour compiler le code dans le code source respiratoire dans la base de code exécutable. Certains des outils de serveur de construction les plus utilisés sont Jenkins, SonarQube et Artifactory.

Gestion de la configuration – Puppet, Chef, Ansible, SaltStack, Run Deck, etc., aide à gérer la configuration de l’application et de l’infrastructure afin de maintenir la cohérence entre les environnements.

Infrastructure virtuelle – AWS, GCP et Azure sont les trois principaux fournisseurs de cloud public qui offrent presque tous les services d’infrastructure. Ils proposent une API, qui vous permet de provisionner l’infrastructure et de la gérer comme un code.

Conclusion

J’espère que cela vous donne une idée de DevOps, et si cela vous passionne, alors vous pouvez essayer ce cours de masterclass en ligne.

Article de Payal Goyal