DEVOPS
Définition du devops :
DevOps, résultant de la tendance à l'agilité, privilégie les
interactions professionnelles sur les processus et les outils.
Cette émergence répond à la nécessité de réaligner les équipes
de développement et d'exploitation, modifiant ainsi la
perception de la stabilité et du rôle des professionnels de
l'informatique tout au long du flux de valeur ajoutée, du début à
la fin.
Les avantages du devops :
Une livraison rapide
Une amélioration efficace et continue
L’ adaptation aux mise à jour
La philosophie devops :
DevOps, développé vers 2008, émane de l'agilité pour résoudre
le décalage entre les processus rapides des développeurs et les
méthodes plus conventionnelles des opérateurs. Cette approche
vise à améliorer la collaboration entre les deux équipes,
comblant ainsi les lacunes de l'agilité et favorisant une livraison
harmonieuse et efficace des applications.
Le lien entre l’agilité et devops :
DevOps et l'agilité, bien que distincts, sont des approches
complémentaires ayant pour but d'optimiser la collaboration au
sein des équipes de développement logiciel afin de fournir des
produits de qualité plus rapidement. Ces deux méthodologies
partagent des objectifs communs et sont souvent combinées
pour tirer pleinement parti de leurs avantages respectifs.
Les piliers de la structure devops :
CALMS :C -> culture ;A -> automatisation ;L ->lean
M -> mesure ;S ->sharing
L’ intégration continue (CI) :
C’est une pratique de développement logiciel qui implique la
création, le test et l'intégration automatiques des modifications
de code dans un dépôt partagé (Git Lab) de manière fréquente
et régulière.
Le déploiement continu (CD) :
C’ est une extension du processus d'Intégration Continue (CI)
qui automatise la publication et le déploiement des
modifications de code vers les environnements de production
ou de test.
Pipeline CI/CD :
Une pipeline CI/CD (Intégration Continue/Livraison Continue)
représente un ensemble automatisé de processus facilitant le
développement, la construction, les tests et le déploiement de
logiciels de manière transparente. Son objectif principal est
d'améliorer la qualité du code, d'accélérer le cycle de
développement, et de garantir une livraison rapide et fiable des
nouvelles fonctionnalités ou des correctifs de bogues aux
utilisateurs finaux.
Docker :
Docker est une plateforme qui simplifie le développement,
l'emballage et le déploiement d'applications grâce à l'utilisation
de conteneurs. Cela facilite le processus de création et de
livraison d'applications, ce qui en fait un choix prisé dans les flux
de travail modernes de développement et de déploiement
logiciel.
Docker container :
Un conteneur Docker est une unité logicielle autonome qui
englobe une application et ses composants, y compris le code et
les dépendances. Basé sur la virtualisation au niveau du système
d'exploitation, il offre une isolation efficace entre les
applications. Les conteneurs sont créés à partir d'images Docker,
des instantanés statiques contenant tous les éléments
nécessaires. Cette approche facilite le déploiement, la gestion
des dépendances et assure la portabilité des applications entre
divers environnements.
Gitlab CI/CD :
GitLab CI/CD est un outil d'intégration continue (CI) et de
déploiement continu (CD) intégré directement dans la
plateforme GitLab. Il permet d'automatiser les tests, la
construction, le déploiement et la livraison de logiciels de
manière continue et cohérente.
YAML :
YAML, langage de sérialisation de données, est reconnu pour sa
lisibilité humaine. Couramment employé dans le
développement logiciel, les systèmes de gestion de
configuration et les outils d'automatisation, il sert à la rédaction
de configurations et de fichiers structurés pour diverses
applications.
Stages :
Les "stages" font référence à des étapes distinctes dans un
pipeline de déploiement ou un processus CI/CD. Chaque stage
représente une phase spécifique du processus, comme la
compilation du code, les tests unitaires, les tests d'intégration, la
validation de la qualité, ou encore le déploiement sur un
environnement de test.
Jobs :
Les "jobs" font référence aux tâches individuelles à l'intérieur de
chaque stage. Ils représentent des unités de travail spécifiques
qui peuvent être exécutées en parallèle ou séquentiellement au
sein d'un même stage.
Jenkins :
Jenkins est un serveur d'automatisation open source couramment
utilisé pour la construction, le test et le déploiement de logiciels.
Il facilite les processus d'intégration continue et de livraison
continue (CI/CD) dans le développement logiciel.
La différence entre jenkins et gitlab en pipeline :
Jenkins nécessite des plugins pour prendre en charge des
fonctionnalités spécifiques tels que l’intégration avec des
systèmes de contrôle de versions ou bien la gestion des pipelines
ou la sécurité. Par contre Gitlab CI/CD propose une solution
intégrée sans nécessiter l'installation de plugins supplémentaires.
Et aussi jenkins utilise des fichiers de configuration écrits avec
une syntaxe groovy ; GitLab encourage fortement la
configuration en tant que code à l'aide de fichiers de
configuration .[Link], ce qui rend la gestion des pipelines
plus cohérente et traçable.