Mettre en oeuvre Devops avec un pipeline docker - Introduction
Pour bien comprendre les défis et les avantages que DevOps peut rapporter à votre entreprise. nous devons commencer depuis le point de départ et revenir vers le code source hebergé dans un répositorie pour décider de la meilleure façon dont nous devrons créer, tester, exécuter, deployer, mettre à jour et surveiller les services et les fonctionnalités que nous désirons, ou que le client désire déveloper. même si l'objectif final de DevOps est de mettre en place le processus de Déploiement continu, il est necessaire de faire un recul en arriére et de passer par le processus de l'intégration continue (CI) pour comprendre ses différentes étapes , celles-ci determinront comment la Livraison continue (CDL) devrait se procéder. Et finalement nous devrions s'assurer que nos services sont bien surveillés et capables de s'auto-gérer.
"En bref pour arriver au stade du déploiement continu, nous devons tout d’abord définir ses prédécesseurs, l’intégration continue
et livraison continue .."
Premier problème que DevOps essaye de résoudre:
la premiére étape de l'intégration de développemnt dans un projet informatique est l'une des étapes les plus dificile du cycle de vie de développement d'un logiciel,il se peut que nous consacrons des semaines, des mois voire même des années pour développer une premiére version d'un livrable qui sera exploitable par l'utilisateur final, Et à l'aide des équipes destinctes et dans des DSIs différentes, Chacune de ces équipes aurait son lot d'exigences et fait de son mieux pour les satisfaire. Même s’il n’était pas difficile de vérifier séparement chacune de ces applications et services de manière isolée, nous avons tous redouté le moment où les chefs d’équipe décideraient que le temps est venu de les intégrer dans une livraison unique.Forts de l'expérience de projets antérieurs, nous savions que l'intégration serait problématique et que nous allions découvrir des problèmes des dépendances non résolues, des interfaces (APIs) qui ne communiquaient pas correctement entre eux et que les chef d'équipes seraient déçus, frustrés et nerveux.Il n'était pas rare de passer des semaines voire des mois dans cette phase d'intégration, Le pire dans tout ça, c’est qu’un Bug découvert lors de la phase d’intégration pouvait signifier revenir en arrière et redéfinir des journées ou des semaines de travail.Si quelqu'un me demandait ce que je ressentais à propos de l'intégration à l'époque, je dirais que c'était le plus près de moi pour que je puisse devenir de manière permanente déprimé. C'étaient des moments différents. Nous pensions que c'était la “bonne” façon de développer des applications....
Beaucoup de choses ont changé depuis. L'industrie informatique a parcouru un long chemin depuis ces jours. Les méthodologies agiles sont devenues familières, les tests automatisés sont devenus fréquents et l'intégration continue a commencé à faire son chemin. Aujourd'hui, nous savons que la façon dont nous avons développé les logiciels à l'époque était fausse.
Integration Continue
L'intégration continue (CI) fait généralement référence à l'intégration, à la création et au test de code dans l'environnement de développement. Les développeurs doivent souvent intégrer leur code dans un répo partagé. La fréquence de cette intégration est souvent interprétable de nombreuses manières et cela dépend de la taille de l'équipe, de la taille du projet et du nombre d'heures consacrées à la programmation.Dans la plupart des cas, cela signifie que les codeurs font leurs pushs directement dans le répositorie ou fusionnent (mergent) leur code avec celui-ci.peu importe que nous faisons des Push ou des Merges, ces actions devraient, dans la plupart des cas, être effectuées plusieures fois par jour.mettre du code dans le réposoterie n'est pas suffisant, il nous faut tout un pipeline qui, au minimum, extrait le code et exécute tous les tests associés, directement ou indirectement, au code correspondant .Le résultat de l'exécution de ce pipeline peut être rouge ou vert. Quelque chose a échoué, ou tout a été exécuté sans aucun problème. Dans le premier cas, une action minimale consisterait à informer la personne qui a modifiée le code.
CI et les Testes
Le pipeline d’intégration continue doit s’exécuter à chaque commit ou push, Contrairement à la livraison continue, l'intégration continue n'a pas objectif clairement défini pour ce pipeline.Dire qu'une application s'intègre à une autre ne nous en dit pas beaucoup sur sa capacité de production.Nous ne savons pas combien de travail est nécessaire pour parvenir au stade où le code peut être livré à la production.Tout ce que nous recherchons, c’est de savoir qu’un commit n’a cassé aucun des tests existants.Néanmoins, la CI est une grande amélioration si elle est bien faite.Dans de nombreux cas, il s’agit d’un processus très difficile à mettre en œuvre, mais une fois maitraisé, les résultats sont souvent impressionnants.
Les tests d'intégration doivent être envoyés parralèlement avec le code source de l'implémentation, si ce n'est pas avant. Pour en profiter au maximum de la CI, nous devrons écrire des tests en mode de ce que nous pourrons appeller Développement Piloté par les Tests ou TDD en anglais, dans cette approche, non suelement les tests s doivent étre intégre pendant la phase de mise en eouvre, mais aussi garantit qu'elle n' accepterait pas tous ce que nous faisons.
Services à déployer
Chaque processus d'Intégration continue commence par un simple extraction du code depuis un répositorie distant, dans ce cours nous allons utiliser un répositorie Git hébergé sur la plateforme Github, ce répo comporte le code source des services que nous allons utilser tout au long de ces articles.les examples dans ce répo sont écrits en Angular qui est une plateforme puissante qui permet de créer des applications clientes en utilisant HTML et Typescripte, que je recommende fortement de l'apprendre. mais dans ce tuto je suppose que aucun conaissance de Angular est necessaire, tous les exemples sont agnostique en terme du language de programmation, ça veut dire que vous pouvez appliquer les concepts que vous aller apprendre en utilisant d'autres services implémenté avec d'autres languages.
Dans l'article suivant nous verrons comment créer des services et les déployer en utilisant des conteneurs Docker en vue de préparer un environnement pour mettre en oeuvre le processus de l'intégration continue CI.
Dans l'article suivant nous verrons comment créer des services et les déployer en utilisant des conteneurs Docker en vue de préparer un environnement pour mettre en oeuvre le processus de l'intégration continue CI.


Commentaires
Enregistrer un commentaire