Introduction Devops
Plan du cours
Projets Informatiques (Cascade ou Cycle en V) sans DevOps
Projets Informatiques Agile avec DevOps
Définitions : DevOps, Intégration Continue, Déploiement /
Livraison Continu
Présentation des Outils de Développement : JDK, STS, Spring Boot,
MySQL, Log4J, Junit, Maven
Présentation de l’Environnement DevOps : Maven, JUnit, Git, Sonar,
Nexus, Jenkins, Docker
Projets en Cascade
Phases Séquentielles
Les risques sont détectés tardivement
Des documents très détaillés en amont
Projets en Cycle en V
Projets en Cycle en V
Le «cycle en V» est une amélioration du cycle en cascade, mais
présente pratiquement les mêmes inconvénients.
Absence de Visibilité
Désintérêt des Sponsors et des Parties Prenantes
Résultat Binaire
– Conforme : Oui/Non
– À l’heure : Oui/Non
Projets en mode Agile
• Les méthodes Agiles (Scrum, XP, ...) vont nous permettre de résoudre les
problèmes ci-dessus.
• Les méthodes agiles sont des groupes de pratiques de pilotage et de réalisation de
projets, qui suivent les 4 valeurs fondamentales de l’agilité
([Link] ).
• Il s’agit de travailler en mode itératif (Sprint). Chaque Sprint peut être considéré
comme un projet en Cycle en V.
• Les méthodes agiles permettent d’augmenter la satisfaction du client, faciliter la
gestion de projet, la qualité de développement et mieux s’adapter aux imprévus du
projet.
Environnements
Apport du DevOps
Les méthodes Agiles résolvent énormément de problèmes (voir ci-
dessus). Mais ...
Comment faire travailler étroitement les équipes de production avec
les équipes de développement?
Comment automatiser au maximum les différentes phases du Projet?
Comment pouvoir livrer régulièrement et fréquemment?
Définition DevOps
Le nom « DevOps » vient de la contraction du mot « development » (développement) et
«operation » (exploitation).
DevOps, c’est un mouvement, c’est une culture qui vise à améliorer la communication
entre les études (développeurs) et l’exploitation afin de réduire le temps de mise sur le
marché d’un produit.
C’est aussi un ensemble de bonnes pratiques :
– Automatisation des différentes phases du projet (Test, deploiement, monitoring…),
– Réduction du Time To Market (TTM),
Ces bonnes pratiques sont destinées à répondre au besoin croissant d’industrialisation et
de normalisation du système d’information.
Devops
Création d’un pipeline automatisé entre les deux équipes appelées CI/CD
(Continuous Integration/ Continious Delivery (ou Deployement)
Cycle de Vie Projet DevOps
Définition Intégration Continue
L’Intégration Continue ou Continuous Integration est un processus
orienté études consistant à compiler, tester et déployer sur un
environnement d’intégration.
Le but est de tester aussi souvent et autant que possible les non-
régressions du livrable pour détecter les bugs plus tôt possible.
La plupart du travail est réalisé par des outils de test. Le déploiement
sur la plateforme d’intégration devient simple et peut être réalisé par
les études sans faire intervenir l’exploitation.
Définition Livraison Continue /
Déploiement Continu
La Livraison Continue ou Continuous Delivery est un processus orienté
production consistant à déployer automatiquement sur un environnement
donné (UAT, Qualification, Pré-Préproduction), à l'exception de la Production
où la livraison reste manuelle.
Le Déploiement Continu ou Continuous Deploiment est un processus orienté
production consistant à déployer automatiquement sur tous les
environnements y compris sur l’environnement de production.
Outils DevOps
Lien important qui montre les outils les plus utilisés en DevOps,
suivant les technologies utilisées :
[Link]
Il suffit de choisir la technologie : Java, Python, .NET ... pour avoir les
outils DevOps les plus utilisés pour ces technologies.
Quelques Outils de DevOps
Dans ce cours, nous allons nous intéresser à :
• Maven
• JUnit
• Git
• Sonar
• Nexus
• Jenkins
• Docker
• ...
Ces outils seront appliqués à un projet Spring Boot déjà existant,que nous allons
enrichir.
Outils : Maven
Maven est un outil de construction de projets (build) open source développé
par la fondation Apache.
Il permet de faciliter et d'automatiser certaines tâches de la gestion d'un projet
JavaEE (création de projets, compilation, test, packaging, ...).
Outils : JUnit
JUnit est un framework de test unitaire pour le langage de
programmation Java.
Il permet de tester le bon fonctionnement de l’ensemble des
méthodes définies dans les classes du projet.
Outils : Git
Git est un logiciel de gestion de versions et de travail collaboratif
Il permet de stocker le code sur une serveur,
Il permet à chaque développer de commiter son code (git push),
Il permet aux développeurs de récupérer le code fait par leurs
collègues (git pull)
Outils : Sonar
• SonarQube (précédemment Sonar2) est un logiciel libre permettant
de mesurer la qualité du code source en continu.
Outils : Nexus
• Nexus est un gestionnaires de dépendances. Il nous permet d’avoir
un dépôt des dépendances créées par nos collègues, que nous
pouvons donc utiliser juste en écrivant la dépendance, sans avoir à
copier le jar (la dépendance) dans notre projet.
Outils : Jenkins
Jenkins est un outil open source d'intégration continue, fork de l'outil Hudson
après les différends entre son auteur, Kohsuke Kawaguchi, et Oracle.
Il s'interface avec des systèmes de gestion de versions tels que CVS, Git et
Subversion, et manipule le code source.
Il utilise Maven ou Ant, pour compiler, packager, exécuter et tester le code source
d’une façon régulière. et il envoie un rapport d’erreur par mail.
Outils : Docker
• Docker est un outil qui peut packager une application et ses
dépendances dans un conteneur isolé, qui pourra être exécuté sur
n'importe quel serveur.
Outils de Développement
Les outils suivant vont nous permettre de développer une applications basée sur Spring
Boot. Nous appliquerons l’Intégration Continue sur le code de cette application.
Avant de faire l’installation, vérifiez que vous n’avez pas ces outils déjà installés. Si c’est la
cas, pas besoin de les réinstaller (vous pouvez utiliser d’autres versions) :
JDK 8 - version [Link] - (1.8 -peu importe la version mineure- déjà installé sur vos
machine normalement)
STS (dernière version)
WAMP 3.1 ou XAMP (déjà installé sur vos machine normalement), pour avoir
MySQL 5.6.17
Par souci d’homogénéité, vous pouvez créer un dossier C:\Products, dans lequel, vous allez
installer tous les outils que nous allons utiliser par la suite.
Les exécutables sont sur le Drive (dossier Outils) : Support de Cours DevOps
Installation JDK 8
Installer la JDK dans C:\Products\java\jdk-[Link]
Installer la JRE dans C:\Products\java\jre-[Link]
La JRE est installée en même temps que la JDK.
Créer la variable d’environnement système : JAVA_HOME qui contient
le chemin de la JDK:
Installation JDK 8
Ajouter %JAVA_HOME%\bin au Path :
Installation JDK 8
Vérifier que Java est bien installé et que la variable d’environnement
est bien positionnée (javac et java) :
Installation STS (Spring Tool Suite)
Il suffit d’exécuter le fichier du drive (STS version 4.13)
Si vous n’avez pas le fichier vous pouvez le télécharger la dernière
version de STS : [Link]
Configuration IDE STS
Ouvrir STS, choisissez le workspace, par exemple workspace-sts :
• Et cliquer sur WorkBench.
Configuration IDE STS
Faire pointer STS sur JDK 8 :
Ouvrir window -> preferences -> installed jre -> mettre que la jdk
8(pas la jre). Voir slides suivants
Supprimer la ligne correspondant à la JRE
Créer une standard VM en pointant sur la JDK :
Configuration IDE STS
Important : Pointer votre Execution Environment vers la JDK.
Prochain Cours
Finaliser l’Installation de l’Environnement de travail (JDK, STS,,
MySQL)
Comprendre Maven (en standalone)
Créer votre premier projet Spring Boot (sur lequel, nous appliquerons
la chaine DevOps)