Vous êtes sur la page 1sur 30

ÉCOLE NATIONALE D’INGÉNIEURS DE TUNIS

Département Technologies de l’information et de la


Communication
Rapport PFA

DevOps

Elaboré par :
Boughanmi Rania et Nijaoui Oumaima

1ère Année informatique

Encadrant :
Kouki Tarek

Année universitaire : 2021/2022

Figure 1 – DevOps
Remerciements
C’est avec un grand plaisir que nous réservons cette page, en signe de gratitude
et de profonde reconnaissance, afin d’exprimer nos vifs remerciements à toute
personne ayant contribué à un bon déroulement de projet de fin d’année 1 et son
achèvement dans les meilleures conditions.
Au terme de ce travail réalisé au sein de l’Ecole Nationale des Ingénieurs de
Tunis, on a l’honneur de remercier le cadre enseignant pour la qualité de leur
cours, pour leurs informations précieuses et pour leur patience.
Dans ce cadre, nous tiendrons également à remercier nos encadreur monsieur
" Kouki Tarek " d’avoir bien voulu encadrer ce travail ainsi que pour sa riche
contribution et ses précieux conseils. Enfin, nos remerciements sont adressés
aux membres de jury, pour avoir l’extrême gentillesse de bien vouloir évaluer ce
travail.
Table des matières

Table des figures 4

Liste des tableaux 5

Introduction générale 6

1 Concept DevOps 7
1.1 Définition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.2 Motivation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.2.1 Le rôle du DevOps . . . . . . . . . . . . . . . . . . . . . . . 8
1.2.2 Pratiques DevOps . . . . . . . . . . . . . . . . . . . . . . . . 8
1.3 Atouts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.4 Les principes du DevOps : . . . . . . . . . . . . . . . . . . . . . . . 10

2 La Notion De Conteneur 11
2.1 Définition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.2 Comparaison entre les Conteneurs et les machines virtuelles : . . . . 11
2.3 DOCKER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.4 Kubernetes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

3 Cycle De Vie D’un Logiciel 17


3.1 Les Étapes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
3.2 Méthodes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
3.3 Les Outils Du DevOps . . . . . . . . . . . . . . . . . . . . . . . . . 19

4 Avantages Du DevOps 23
4.1 Rapidité : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
4.2 Livraison rapide : . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
4.3 Fiabilité : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
4.4 Évolutivité : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
4.5 Collaboration améliorée : . . . . . . . . . . . . . . . . . . . . . . . . 24
4.6 Sécurité : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

2
5 DevSecOps 25
5.1 Qu’est-ce que DevSecOps ? . . . . . . . . . . . . . . . . . . . . . . . 25
5.2 La sécurité DevOps est automatisée : . . . . . . . . . . . . . . . . . 26
5.2.1 Mais que faut-il automatiser et comment ? . . . . . . . . . . 26
5.3 Quelle est l’ avantages de l’approche DevSecOps ? . . . . . . . . . . 26
5.3.1 -Définir et mettre en oeuvre la sécurité à tous les niveaux
et pour tous les environnements. . . . . . . . . . . . . . . . . 26

Conclusion générale 28

Les références 29
Table des figures

1 DevOps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

2.1 Comparaison entre les Conteneurs et les Machines virtuelles . . . . 11


2.2 Architecture de Docker . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.3 Architecture Kubernetes . . . . . . . . . . . . . . . . . . . . . . . . 16

3.1 Cycle De Vie DevOps . . . . . . . . . . . . . . . . . . . . . . . . . . 18


3.2 Agile VS DevOps . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
3.3 Bamboo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

5.1 DevSecOps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
5.2 Avec et Sans securité . . . . . . . . . . . . . . . . . . . . . . . . . . 27
Liste des tableaux

2.1 Comparaison entre les conteneurs et les machines virtuelles . . . . . 12


Introduction générale

Avant, le modèle utilisé pour le développement logiciel était le modèle «Water-


fall». Ce modèle est le plus approprié lorsque toutes les exigences sont remplies
à l’avance. Ici, «à l’avance» fait référence à la phase de planification. Toutes
les exigences doivent être déterminées uniquement à ce moment. Aucune mo-
dification ultérieure ne peut être envisagée. Dans ce modèle, le développement
logiciel ne fonctionne pas en parallèle. Avant, après la phase de planification
du developpement en en ingénierie informatique, nous sommes entrés dans la
phase de développement de notre projet qu’on estime travailler sur, puis dans
la phase de test et enfin dans la phase de construction. Aucun effort n’est fait
en parallèle.Par conséquent, le cycle de vie de la version du logiciel est égale-
ment très long. Aucune nouvelle fonctionnalité ne peut être fournie pendant le
cycle de développement du projet. Après la phase de planification, les exigences
ne peuvent pas être modifiées de manière flexible. Le monde numérique est en
constante évolution. Les demandes et les exigences évoluent constamment et le
développement doit être de plus en plus rapide. Les équipes de développement
et de déploiement de logiciels doivent réagir rapidement. C’est dans ce contexte
qu’est né le terme DevOps, sujet dont beaucoup de gens parlent. Qu’est-ce que
Devops ? DevOps est essentiellement une combinaison de deux mots : Développe-
ment et opérations. Que Obtenons-nous lorsque nous combinons ces deux mots ?
Tout simplement, DevOps est une culture qui met en œuvre des technologies afin
de de promouvoir la collaboration entre l’équipe de développement et l’équipe
d’exploitation de déployer le code en production plus rapidement, de manière
automatisée et reproductible.
Le but de Devops est d’augmenter la vitesse d’une organisation lorsqu’il s’agit de
livrer des applications et des services. En fait, de nombreuses entreprises ont mis
en œuvre avec succès DevOps pour améliorer l’expérience de leurs utilisateurs.

6
Chapitre 1

Concept DevOps

1.1 Définition
DevOps authentifie à créer une culture et un entourage dans lesquels la concep-
tion, les tests et la diffusion de logiciels informatiques seront effectués plus rapi-
dement et d’une façon plus efficaces. Pour commencer, le terme DevOps est né
de l’union du "développement" et des "opérations" dont le but est de favoriser
une meilleure communication entre les équipes d’exploitation et de dévelop-
pements . Aujourd’hui, les entreprises tournent vers une approche dynamique
orientée client pour le développement et la livraison de leurs applications.Ce qui
nous amène à definir DevOps comme une culture, une station complétement dif-
férente,qui ne s’agit pas simplement d’adopter une planification agile ou des tests
automatisés ou une livraison continue, bien que ces pratiques soient certainement
importantes. La culture DevOps repose sur une compréhension partagée entre
les développeurs et les opérations, et sur le partage de la responsabilité du logi-
ciel qu’ils créent. Cela signifie accroître la transparence, la communication et la
collaboration entre le développement, l’informatique et les opérations. DevOps
est un mouvement culturel qui soutient la création d’équipes de développement
et d’exploitation multidisciplinaires pour unifier le développement logiciel (dev)
et la gestion de l’infrastructure informatique (ops), et utiliser des pratiques et
des outils partagés et efficaces pour travailler ensemble. Les principaux membres
de l’équipe DevOps sont des membres des équipes de développement, d’exploi-
tation et de sécurité. Ils travaillent ensemble tout au long du cycle de vie du
logiciel pour améliorer la qualité, le développement et la vitesse de livraison des
logiciels afin d’améliorer l’expérience client.

7
DevOps

1.2 Motivation
1.2.1 Le rôle du DevOps
Les tâches de DevOps sont multiples. D’une manière générale, ses tâches prin-
cipales comprennent la mise en place, la direction et la gestion des systèmes
informatiques. L’objectif est d’adapter ces systèmes à l’entreprise et de les rendre
plus agiles.
Les principales tâches de DevOps peuvent être résumées comme suit :
1. -Déploiement d’applications
2. -Mise en place de la phase de test, réalisée en amont du développement
3. -Mise en place d’un suivi qualité de fabrication
D’ailleurs, derrière cette notion on trouve les fondamentaux suivants :
*La réduction du cycle des livraisons : industrialisation complète de la chaîne de
production logicielle avec déploiement d’outils tels que Team foundation server
ou l’Edition cloud de Visual studio team services, l’intégration continue,qui est
un outil qu’on va bien développer plus tard, est souvent un objectif pertinent
pour la réduction du cycle .
*L’optimisation des ressources : standardiser, automatiser le déclenchement et
l’exécution du divers tâches. *L’amélioration de la qualité : mesurer la fiabilité,
les performances, l’évolutivité et la facilité d’utilisation en testant tout au long
du processus. *Replacer l’humain au cœur du dispositif : établir une organisa-
tion collaborative et basée sur l’amélioration continue afin qu’elle puisse être
réajustée si nécessaire.

1.2.2 Pratiques DevOps


Il existe des techniques spécifiques que vous pouvez utiliser pour mettre en
œuvre la culture DevOps. Le Développement continu, le déploiement continu,
Intégration continue, les schémas de surveillance et de métrique, sont certaines
des pratiques standard que l’on utilise pour apporter des changements à l’aide de
DevOps.

Développement continu : Cette pratique inclut la planification et les étapes


du cycle de vie DevOps et peut inclure des mécanismes de contrôle de version.

Intégration continue : Cette pratique met en place des ensembles d’outils de


gestion et de développement de tests pour assurer la production de différentes
parties du code. Cela implique une collaboration étroite entre l’équipe de test et
de développement pour identifier et résoudre rapidement les problèmes du code.

8
DevOps

Tests continus : Cette pratique fournit des tests automatisés, planifiés et


continus lors de l’écriture ou de la mise à jour du code de l’application qui accé-
lèrent la livraison du code en production.

Livraison continue : Cette pratique automatise la publication des modifica-


tion du code après la phase de test, dans un environnement intermédiaire ou de
préproduction. Un membre de l’équipe peut décider de les publier dans l’environ-
nement de production.

Déploiement continu : Similaire à la livraison continue, cette pratique au-


tomatise la publication d’un code nouveau ou modifié dans l’environnement du
production. Les entreprises peuvent avoir besoin de publier des modifications
du code ou des fonctionnalités plusieurs fois par jour. Dans un contexte de dé-
ploiement continu, les technologies de conteneur telles que Docker et Kubernetes
garantissent la cohérence du code entre les plates-formes et les environnements.

Surveillance continue : Cette pratique implique une surveillance continue du


code exécuté à partir de l’infrastructure sous-jacente. Les développeurs reçoivent
des commentaires sur les erreurs et les problèmes.

Infrastructure-as-code : Cette pratique peut être suivie dans différentes


phases DevOps pour automatiser le provisionnement de l’infrastructure requise
pour une version logicielle. Les développeurs ajoutent le " code " de l’infrastruc-
ture grâce à leurs outils de développement. citons l’exemple d’un développeur
qui peut créer un espace de stockage à la demande via Docker, Kubernetes ou
OpenShift.. Cette pratique permet aussi aux équipes chargées des opérations de
contrôler les configurations de l’environnement, de réaliser le suivi des modifica-
tions et de simplifier leur restauration.

1.3 Atouts
la genèse de DevOps vient d’un besoin croissant d’innovation du côté des
systèmes du travail technologique et son mouvement hérité du celle du l’adminis-
tration système agile et du gestion des systèmes d’entreprise (ESM).

Gestion des systèmes d’entreprise(ESM) De nombreuses personnes im-


pliquées dans la définition initiale de DevOps étaient des administrateurs sys-
tème. Ces experts en opérations ont apporté les meilleures pratiques ESM clés

9
DevOps

à DevOps, y compris la gestion de la configuration, la surveillance du système,


l’approvisionnement automatisé et l’approche de la chaîne d’outils.

Développement agile Les méthodes agiles sont généralement à l’opposé des


méthodes traditionnelles en cascade. Elle est basé sur la flexibilité et l’adaptabi-
lité en plus elle place les besoins des clients au centre des priorités des projets .
Initialement, cette méthode a été crée pour les projets de développement Web et
informatique. Aujourd’hui, les méthodes agiles deviennent de plus en plus cou-
rantes, car elles conviennent à de multiples types de projets, une combinaison de
tous les départements.

1.4 Les principes du DevOps :


1. -Action centrée sur le client :Avec une approche centrée sur le client, il
est important d’obtenir un retour continu pour corriger et mettre à jour
immédiatement le logiciel ou l’application Web développée.
2. -Tout automatiser
3. -Amélioration continue : Mettre au point les coûts et la rapidité de mise en
œuvre du produit délivré.
4. -Responsabilité de bout en bout : En rassemblant les différents services de
l’entreprise, comprendre la vue d’ensemble du projet de développement et
permettre le travail en équipe. se concentrer sur les profils multifonction-
nels.
5. -Créer toujours avec la fin à l’esprit

10
Chapitre 2

La Notion De Conteneur

2.1 Définition
Un conteneur est une unité logicielle standard qui regroupe le code et toutes
ses dépendances afin que les applications puissent s’exécuter rapidement et de
manière fiable d’un environnement informatique à un autre. Une image de conte-
neur Docker est un progiciel(ensemble de logiciels munis d’une documentation)
léger, indépendant et exécutable qui contient tout le nécessaire pour exécuter
une application : code, runtime, outils système, bibliothèques système et para-
mètres.

2.2 Comparaison entre les Conteneurs et les ma-


chines virtuelles :
Les conteneurs et les machines virtuelles présentent des avantages similaires en
termes d’isolation et d’allocation de ressources

Figure 2.1 – Comparaison entre les Conteneurs et les Machines virtuelles

11
DevOps

Mais ils fonctionnent différemment car le conteneur virtualise le système d’ex-


ploitation, pas le matériel. Le conteneur est plus portable et plus efficace.

Les conteneurs Un conteneur est une abstraction au niveau de l’ap-


plication qui regroupe le code et les dépendances.
Plusieurs conteneurs peuvent s’exécuter sur le même
ordinateur et partager le noyau du système d’exploi-
tation avec d’autres conteneurs, et chaque conteneur
s’exécute comme un processus isolé dans l’espace uti-
lisateur. Les conteneurs occupent moins d’espace que
les machines virtuelles (les images de conteneurs ne
représentent généralement que des dizaines de Mo),
peuvent gérer plus d’applications et nécessitent moins
de machines virtuelles et de systèmes d’exploitation.
Les Machines Virtuelles Les machines virtuelles (VM) sont une abstraction du
matériel physique qui transforme un serveur en plu-
sieurs serveurs. L’hyperviseur permet à plusieurs VM
de fonctionner sur une seule machine. Chaque VM
comprend une copie complète d’un système d’exploi-
tation, l’application, les binaires et les bibliothèques
nécessaires, ce qui occupe des dizaines de Go. Les VM
peuvent également être lentes à démarrer.

Table 2.1 – Comparaison entre les conteneurs et les machines virtuelles

Conteneurs et machines virtuelles ensemble : Les conteneurs et les machines


virtuelles utilisés ensemble offrent une grande souplesse dans le déploiement et la
gestion des applications.

2.3 DOCKER
Qu’est-ce que Docker ? Docker est une plateforme de développement logiciel
pour la virtualisation avec plusieurs systèmes d’exploitation fonctionnant sur
le même hôte. Elle permet de séparer l’infrastructure et les applications afin
de fournir des logiciels rapidement. Contrairement aux hyperviseurs, qui sont
utilisés pour créer des machines virtuelles (VM), la virtualisation dans Docker
est effectuée au niveau du système, également appelé conteneur Docker.

Pourquoi utiliser Docker ? Docker permet aux développeurs d’emballer,


d’expédier et d’exécuter facilement n’importe quelle application sous la forme

12
DevOps

d’un conteneur léger, portable et autosuffisant, qui peut fonctionner pratique-


ment n’importe où. Pour ce faire, les conteneurs permettent aux développeurs
d’isoler le code dans un seul conteneur. Il est ainsi plus facile de modifier et de
mettre à jour le programme. Cela permet également, comme le souligne Docker,
aux entreprises de répartir les grands projets de développement entre plusieurs
petites équipes agiles utilisant Jenkins, un programme CI/CD open-source, pour
automatiser la livraison de nouveaux logiciels dans des conteneurs.

Architecture de Docker : Dans ce tutoriel sur les conteneurs Docker, nous


allons parler des principaux composants de l’architecture Docker :
-Moteur Docker (Docker Engine) : le moteur Docker qui représente le serveur
-Images Docker(Docker Images) Les images Docker sont le "code source" de nos
conteneurs ; nous les utilisons pour construire les conteneurs.
-Registres de Docker(Docker Registries) Docker stocke les images que nous
construisons dans des registres.
-Conteneurs Docker(Docker Containers) Les conteneurs sont les unités organisa-
tionnelles et l’un des concepts de base de Docker.

Figure 2.2 – Architecture de Docker

Avantages des conteneurs Docker : Docker permet une utilisation plus


efficace des ressources du système Les instances d’applications conteneurisées uti-
lisent beaucoup moins de mémoire que les machines virtuelles, elles démarrent et
s’arrêtent plus rapidement, et elles peuvent être regroupées de manière beaucoup
plus dense sur leur matériel hôte. Docker permet d’accélérer les cycles de livrai-
son des logiciels Les logiciels d’entreprise doivent réagir rapidement à l’évolution
des conditions. Cela signifie à la fois une mise à l’échelle facile pour répondre
à la demande et une mise à jour facile pour ajouter de nouvelles fonctionnali-
tés en fonction des besoins de l’entreprise. Docker brille pour l’architecture des
microservices L’un des modèles logiciels que les conteneurs facilitent est celui
des microservices, où les applications sont constituées de nombreux composants
faiblement couplés. En décomposant les applications traditionnelles en services

13
DevOps

distincts, les microservices permettent aux différentes parties d’une application


métier d’être mises à l’échelle, modifiées et entretenues séparément - par des
équipes distinctes et dans des délais distincts, si cela répond aux besoins de l’en-
treprise.

2.4 Kubernetes

Qu’entendez-vous par kubernetes ? kubernetes est un outil de gestion


(orchestration) de conteneurs à source ouverte. Ses responsabilités en matière
de gestion de conteneurs comprennent le déploiement de conteneurs, la mise à
l’échelle et le retrait de conteneurs, ainsi que l’équilibrage de la charge des conte-
neurs.

Pourquoi avons-nous besoin de l’orchestration des conteneurs ? Une


vraie application de production s’étend sur plusieurs conteneurs, et ces conte-
neurs doivent être déployés sur différents serveurs hôtes. La sécurité des conte-
neurs a plusieurs niveaux et peut être complexe. C’est là que la technologie Ku-
bernetes est née. Kubernetes vous fournit les outils d’orchestration et de gestion
nécessaires pour déployer des conteneurs à grande échelle pour ces charges de
travail. La fonctionnalité d’orchestration de Kubernetes vous permet de créer des
services d’application sur plusieurs conteneurs, de planifier ces conteneurs pour
qu’ils s’exécutent dans un cluster, de les mettre à l’échelle et de gérer leur santé
au fil du temps. Avec Kubernetes, vous pouvez prendre des mesures spécifiques
pour améliorer la sécurité informatique. Kubernetes doit pouvoir s’intégrer au
réseau, au stockage, à la sécurité, à la télémétrie et à d’autres fonctions pour
fournir une infrastructure de conteneur complète.

quelles sont les caractéristiques de kubernetes ?


— Programmation automatisée

14
DevOps

— Capacités d’auto-réparation
— Déploiements et retours en arrière automatisés
— Mise à l’échelle horizontale et équilibrage de la charge
— Offre un environnement cohérent pour le développement, les tests et la
production.
— L’infrastructure est faiblement couplée et chaque composant peut
— agir comme une unité distincte.
— Offre une plus grande densité d’utilisation des ressources
— Offre des fonctionnalités adaptées aux entreprises
— Gestion centrée sur les applications
— Infrastructure auto-extensible
— Vous pouvez créer une infrastructure prévisible

Quelles sont les bases de Kubernetes ? -Cluster :


C’est une collection d’hôtes (serveurs) qui vous aide à agréger leurs ressources
disponibles. Cela inclut la RAM, le CPU, la RAM, le disque et leurs périphé-
riques dans un pool utilisable.
-Maître :
Le maître est une collection de composants qui constituent le panneau de contrôle
de Kubernetes. Ces composants sont utilisés pour toutes les décisions relatives
au cluster. Cela inclut à la fois la programmation et la réponse aux événements
du cluster.
-Node (nœud) :
C’est un hôte unique qui est capable de fonctionner sur une machine physique
ou virtuelle. Un nœud doit exécuter à la fois kube-proxy, minikube et kubelet
qui sont considérés comme faisant partie du cluster.
-Espace de nommage :
Il s’agit d’un cluster ou d’un environnement logique. Il s’agit d’une méthode
largement utilisée pour délimiter l’accès ou diviser un cluster.

Kubernetes, possède-t-il une architecture ? -Nœud maître :


Le nœud maître est le premier et le plus important composant responsable de la
gestion du cluster Kubernetes. C’est le point d’entrée pour toutes les tâches de
gestion. Il peut y avoir plusieurs nœuds maîtres dans le cluster pour vérifier la
tolérance aux pannes.
Le nœud maître a divers composants tels que le serveur API, le gestionnaire de
contrôleur, le planificateur et l’ETCD. Jetons un coup d’oeil ensemble.

15
DevOps

Figure 2.3 – Architecture Kubernetes

-Serveur API : le serveur API sert de point d’entrée pour toutes les commandes
REST utilisées pour contrôler le cluster.
-Planificateur : Le planificateur planifie les tâches sur les nœuds esclaves. Il
stocke des informations sur l’utilisation des ressources de chaque nœud esclave. Il
est responsable de la répartition de la charge de travail.
Il peut également vous aider à suivre la façon dont la charge de travail est utili-
sée sur les nœuds du cluster. Cela peut vous aider à mettre la charge de travail
sur les ressources disponibles et à accepter la charge de travail.

Avantages et inconvénients : Organisation facile du service avec des pods Il


est développé par Google, qui apporte des années d’expérience précieuse dans le
secteur. La plus grande communauté parmi les outils d’orchestration de conte-
neurs Offre une variété d’options de stockage, y compris sur site, sur les SAN
et dans les nuages publics. Adhère aux principes de l’infrastructure immuable.
Kubernetes peut être exécuté sur un site métallique nu, sur OpenStack, sur les
nuages publics Google, Azure, AWS, etc. Permet d’éviter les problèmes de ver-
rouillage des fournisseurs, car il peut utiliser des API ou des services spécifiques
à un fournisseur, sauf lorsque Kubernetes fournit une abstraction, par exemple
l’équilibreur de charge et le stockage. La conteneurisation à l’aide de Kubernetes
permet aux progiciels de servir ces objectifs. Elle permettra aux applications
qui doivent être libérées et mises à jour sans aucun temps d’arrêt. Kubernetes
vous permet de vous assurer que ces applications conteneurisées s’exécutent où
et quand vous le souhaitez et vous aide à trouver les ressources et les outils avec
lesquels vous souhaitez travailler.
-Inconvénients de Kubernetes : Le tableau de bord de Kubernetes n’est pas aussi
utile qu’il devrait l’être. Kubernetes est un peu compliqué et inutile dans les
environnements où tout le développement se fait localement. La sécurité n’est
pas très efficace.

16
Chapitre 3

Cycle De Vie D’un Logiciel

3.1 Les Étapes


Le “Cycle De Vie d’un Logiciel” signifie toutes les étapes du développement
d’un logiciel, du conception au disparition. ce dernier vous permettra d’assurer
la qualité du produit et de maintenir le coût du projet, de maîtriser les coûts
de production En fait ,il comprend généralement au minimum les activités sui-
vantes :

La définition des objectifs : Cette étape consiste à définir l’objectif du pro-


jet, en l’incluant dans la stratégie globale

L’analyse des besoins : appelée aussi spécifications des besoins ,Cette phase
doit contenir la mise en contexte du logiciel et l’étude de ce qui existe déjà..
La recherche des moyens disponibles consiste à étudier des produits similaires
sur le marché et à étudier des processus ou des logiciels similaires au sein de
l’entreprise .Les besoins commerciaux peuvent contenir des besoins fonctionnels
et des besoins non fonctionnels . (disponibilité, rapidité de calcul. . . ).

La conception : La conception recours à des spécifications pour décider des


solutions proposées.Elle peut intégrée la description des fonctionnalités de l’ap-
plication. Ce sont les fonctionnalités spécifiées dans la spécification de la de-
mande. La conception peut contenir la conception d’interface, la conception de
données et la conception d’architecture matérielle.

Le codage : Il convertit les solutions proposées lors de la conception en un


code opérationnel. Les techniques de codage dépendent du langage et doivent
être adaptées à la conception.

17
DevOps

Figure 3.1 – Cycle De Vie DevOps

Le test : Les tests identifient les défauts techniques, les erreurs fonctionnelles
et la qualité du logiciel. Pour ce faire, nous pouvons utiliser des logiciels de test
et des techniques.

Le déploiement : appelé “phase de livraison” et “phase de mise en exploita-


tion” : La phase de déploiement comprend toutes les activités liées à l’installa-
tion et au lancement de l’application développée .

La maintenance : Cette étape consiste à régler l’application une fois qu’elle


a été livrée au client.. Il vise à corriger les erreurs et anomalies du système et à
modifier le système pour les fonctions.

3.2 Méthodes
Afin d’accélérer et d’améliorer le développement et le lancement de leurs pro-
duits, les entreprises disposent d’un certain nombre de méthodologies et pra-
tiques DevOps de développement logiciel. Les méthodes Scrum, Kanban et Agile
sont les plus utilisées.

i-AGILE Les premières méthodes de développement de logiciels agiles conti-


nuent d’influencer les outils et les pratiques DevOps. De nombreuses approches
DevOps, y compris Scrum et Kanban, intègrent des éléments de programmation
agile Certaines méthodes agiles fournissent la capacité de mieux répondre aux
besoins en enregistrant les demandes sous forme d’histoires, en organisant des
réunions quotidiennes et en intégrant en permanence les retours clients. L’ap-
proche agile favorise également des cycles de développement plus courts, par
opposition aux méthodes traditionnelles «en cascade» plus longues.

18
DevOps

Figure 3.2 – Agile VS DevOps

ii-SCRUM La méthodologie Scrum définit comment les membres de l’équipe


doivent collaborer pour accélérer les projets d’assurance qualité.Les pratiques
Scrum utilisent des processus métier clés, une terminologie et des rôles attribués
(Scrum Master, product owner ou responsable de produit).

3.3 Les Outils Du DevOps


Les outils DevOps garantissent que la transparence, l’automatisation et la col-
laboration sont toujours au premier plan de votre chaîne. Ces outils facilitent
le partage et l’échange efficace de savoir-faire technique entre toutes les parties
prenantes„ que ce soit le développement d’équipe, les opérations, la sécurité ou
la sécurité, libèrent des produits efficaces.

1/POUR L’INTEGRATION CONTINUE :

i-Jenkins : Jenkins est l’un des outils DevOps open source les plus connus
pour prendre en considération l’intégration continue et la livraison via DevOps.
Il permet une intégration et une livraison continue des projets, quelle que soit la
plateforme sur laquelle les utilisateurs travaillent, en utilisant des différents pi-
pelines de construction et de déploiement. Jenkins peut être intégré à un certain
nombre d’outils de test et de déploiement.

ii-Bambou : Bambou est l’un des produits populaires développés par At-
lassian pour prendre en considération une intégration continue et transparente.
d’ailleurs , ses fonctionnalités sont en général prédéfinies, pour cela, n’est pas
nécessaire de télécharger divers plugins comme Jenkins.
Il prend aussi en considération une intégration transparente avec d’autres pro-
duits Atlassian tels que JIRA et Bitbucket.

19
DevOps

Figure 3.3 – Bamboo

2/POUR LA PLANIFICATION ET COLLABORATION :

i-Slack : outils utilisés par les équipes pour collaborer efficacement sur des
projets. Cet outil de l’arsenal DevOps est utilisé par les organisations techniques
du monde entier pour faire tomber les barrières et donner à tous les membres de
l’équipe une vue d’ensemble claire du flux de travail. L’une des fonctionnalités
importante de Slack est qu’elle permet aux développeurs de collaborer en utili-
sant des outils dans le même environnement qu’ils communiquent avec d’autres
membres de la maintenance et du service.

ii-Jira : JIRA est l’un des diffèrent outils de gestion de projet développés
par Atlassian, utilisé pour suivre les problèmes, les bogues et les projets. aussi,Il
permet aux utilisateurs de suivre l’état des projets avec des problèmes. Il peut
facilement être intégré avec d’autres produits Atlassian comme Bitbucket et des
outils DevOps comme Jenkins.

3/POUR LA GESTION DE CONFIGURATION :

i-Ansible : Ansible est un outil de gestion de configuration, comme Puppet


et Chef. Vous pouvez l’utiliser soit pour la configuration de l’infrastructure soit
pour l’automatisation de déploiement. Son principal argument de vente par rap-
port à d’autres DevOps similaires est sa simplicité et sa facilité d’utilisation.
Ansible suivre les mêmes approched’ Infrastructure As Code(IAC) que Puppet.
par contre , il utilise comme syntaxe YAML trés simple. Avec Ansible, on peut
définir des tâches en YAML, par contre Puppet a son propre langage déclaratif.

i-Terraform : Terraform est un outil open-source permet à créer ,modifier,


déployer et faire la gestion des versions d’une infrastructure de manière plus
sécurisée et efficace. Il est utilisé pour gérer des fournisseurs de services et des
solutions internes communs et personnalisés. Il aide à définir l’infrastructure

20
DevOps

dans la configuration / le code et permettra à l’utilisateur de reconstruire et de


suivre les changements d’infrastructure d’une manière simple.

4/POUR L’HÉBERGEMENT DANS LE CLOUD :

i-Azure : Azure est une plate-forme de cloud computing, conçue par Micro-
soft dans le but de créer, déployer, tester et gérer des applications et des services
sur un réseau mondial de ses centres de données. de plus ,Les services fournis par
Microsoft Azure sont disponibles sous la forme de PaaS et IaaS.

ii-AWS : AWS est une plate-forme d’hébergement Web censée a proposer des
solutions flexibles, fiables, faciles à utiliser, évolutives et rentables. en utilisant
cette plate-forme cloud, nous n’avons pas à nous soucier de la mise en place
d’une infrastructure informatique qui prend en général un temps précis de mise
en place.

5/POUR LA CONSTRUCTION :

i-Fourmi : FOURMI est un outil de compilation et de déploiement basé sur


Java. Il prend en considération le format de fichier XML. Il a divers tâches in-
tégrées permettant de compiler, assembler, tester et exécuter des applications
Java.

ii-Maven : Maven est un outil basée sur l’automatisation de construction


utilisé précisément pour les projets java. Il contient un fichier XML décrivant
le projet de construction actuel , ses dépendances avec d’autres composants et
modules externes, la séquence de construction, les répertoires et les autres plug-
ins requis.

6/POUR LA GESTION DE CODE SOURCE :

i-Git : Git est un système de contrôle de version distribué visant la vitesse,


l’intégrité des données et le traitement de flux de travail distribué et non li-
néaire.
En plus la gestion du code source, il peut être utilisé pour suivre les modifica-
tions de tout ensemble de fichiers.

21
DevOps

ii-Github : Grâce à cet outil, les développeurs peuvent effectuer des itéra-
tions de code rapides et instantanément informées vers les autres membres de
l’équipe.En cas d’erreur ou de plantage, une restauration immédiate de la ver-
sion précédente peut être effectuée en quelques secondes, avec l’historique des
modifications de branche stocké à côté de l’outil.

22
Chapitre 4

Avantages Du DevOps

4.1 Rapidité :
En mettant en œuvre DevOps, les entreprises peuvent utiliser des stratégies
DevOps pour déployer plus rapidement de nouveaux processus, systèmes et ap-
plications. Le déploiement de DevOps rendra vos opérations commerciales plus
efficaces. Au fur et à mesure que le temps de cycle diminue, le coût de fabrica-
tion du produit diminue également.

4.2 Livraison rapide :


Une entreprise subit parfois des retards dans le processus de fabrication lors de
la livraison de ses produits. Ces retards ont un impact direct sur la satisfaction
client et donc sur les résultats.L’approche DevOps apporte la solution à ces
problèmes, accélère le processus de production et le rationalise ,elle permet un
déploiement automatique et agile de toutes les opérations.

4.3 Fiabilité :
Assurance de la qualité des mises à jour des applications et des changements
d’infrastructure pour livrer en toute confiance vos produits à un rythme accé-
léré tout en continuant à offrir une expérience positive aux utilisateurs finaux.
Utilisez des méthodes telles que l’intégration et la livraison continues pour vous
assurer que chaque changement est fonctionnel . Les pratiques de suivi et de
journalisation vous aident à rester informé sur les performances en temps réel.

23
DevOps

4.4 Évolutivité :
Exploitez et gérez votre infrastructure et votre processus de développement à
grande échelle. L’automatisation et la cohérence vous aident à gérer la com-
plexité ou le changement de système d’une manière moins risquée et efficace. Par
exemple, l’infrastructure en tant que code vous aide à gérer vos environnements
de développement, de test et de production de manière plus itérative et efficace.

4.5 Collaboration améliorée :


La méthodologie logicielle qui a conduit à DevOps a réalisé ce que l’équipe Dev
and Ops pourrait offrir si elles coexistaient. Cependant, ils ne se sont pas concen-
trés sur la promotion de la collaboration entre ces groupes.Ce n’est donc que
jusqu’à ce que DevOps s’en rende compte qu’il encouragera vraiment les dé-
partements transversaux à changer leur fonctionnement en tant qu’unité.Par
conséquent, il favorise un environnement où différents groupes se réunissent
pour atteindre les objectifs généraux de l’organisation.Il facilite la collaboration
en divisant les silos entre différents groupes et en les encourageant à travailler
ensemble dans le but de créer plus de valeur commerciale, ce qui contribuera
finalement à la distribution. Plus pour ses clients.

4.6 Sécurité :
Un autre avantage essentiel, c’est améliorer la sécurité.Nous vous recomman-
dons de livrer le produit à un rythme rapide pour des raisons vues aupara-
vant.Cependant, c’est en vain si vous ignorez l’aspect sécurité juste pour ga-
gner du temps .De plus, le taux de cybercriminalité augmente et les entreprises
disposent de millions de dollars de données.Alors, comment vous équipez-vous
pour y faire face ?C’est là qu’intervient le terme DevSecOps pour gérer l’aspect
sécurité d’une application.

24
Chapitre 5

DevSecOps

5.1 Qu’est-ce que DevSecOps ?


DevOps ne concerne pas seulement les équipes de développement et d’exploi-
tation. Si vous voulez profiter pleinement de l’agilité et de la réactivité d’une
approche DevOps, la sécurité informatique doit également jouer un rôle intégré
dans le cycle de vie complet de vos applications. Pourquoi ? Dans le passé, le rôle
de la sécurité était isolé à une équipe spécifique dans la phase finale du dévelop-
pement. Cela n’était pas si problématique lorsque les cycles de développement
duraient des mois, voire des années, mais cette époque est révolue. Un DevOps
efficace garantit des cycles de développement rapides et fréquents (parfois des
semaines ou des jours), mais des pratiques de sécurité dépassées peuvent réduire
à néant les initiatives DevOps les plus efficaces.

Figure 5.1 – DevSecOps

DevSecOps met l’accent sur la nécessité d’inviter les équipes de sécurité et les
partenaires le plus tôt possible dans le plan DevOps pour intégrer la sécurité
des informations et définir un plan d’automatisation de la sécurité. Il souligne

25
DevOps

également la nécessité d’aider les développeurs à prendre en compte la sécurité


lors de l’écriture de code, un processus qui implique que les équipes de sécurité
partagent une visibilité, des commentaires et des informations sur les menaces
connues. Cela peut également inclure une nouvelle formation à la sécurité pour
les développeurs, car ce n’est pas toujours une priorité lors du développement
d’applications plus traditionnelles.

5.2 La sécurité DevOps est automatisée :


Choses à faire : Maintenez un cycle de développement court et fréquent, intégrez
des mesures de sécurité avec un impact minimal sur les opérations et suivez le
développement de technologies innovantes telles que les conteneurs et les micro-
services, qui favorisent une intégration plus étroite entre les organisations

5.2.1 Mais que faut-il automatiser et comment ?


Il existe des directives écrites qui peuvent aider à répondre à cette question. Les
organisations doivent prendre du recul et prendre en compte l’ensemble de l’en-
vironnement de développement et d’exploitation. Cela comprend les référentiels
de contrôle du code source, les registres de conteneurs, les pipelines d’intégration
et de déploiement continus (CI / CD), la gestion de l’interface de programma-
tion d’application (API), la programmation et l’automatisation des applications,
la gestion des versions et la gestion et la surveillance des opérations. Les nou-
velles technologies d’automatisation ont aidé les organisations à adopter des
pratiques de développement plus agiles et ont également joué un rôle dans la
mise en œuvre de nouvelles mesures de sécurité.

5.3 Quelle est l’ avantages de l’approche DevSecOps ?


5.3.1 -Définir et mettre en oeuvre la sécurité à tous les ni-
veaux et pour tous les environnements.
La sécurité doit être intégrée dès le début d’un projet (protection des données
dès la conception) et dans les processus de développement et de mise en œuvre.
De la même manière que le DevOps permet d’automatiser les déploiements appli-
catifs, le DevSecOps permet d’automatiser les tests de sécurité. Ceux-ci doivent
être effectués immédiatement après la première livraison de votre projet (applica-
tion, logiciel...). Cela s’applique aux environnements de développement, de démo,
de test et de préproduction. La surveillance automatisée du résultat de ces tests

26
DevOps

Figure 5.2 – Avec et Sans securité

alertera en temps réel les équipes concernées sur les vulnérabilités bien avant que
le produit final n’atteigne l’environnement de production. Ce processus permet
de détecter rapidement les lacunes et les écarts en matière de sécurité des don-
nées. Cela vous permet de réagir rapidement afin de pouvoir déployer un produit
final qui aura bien moins de problèmes liés à la confidentialité et la sécurité des
données.

27
Conclusion générale

Le mouvement DevOps a tendance à fusionner les deux mondes en améliorant la


communication entre les deux. DevOps vise à créer une culture et un environne-
ment dans lesquels la conception, les tests et la publication de logiciels peuvent
être réalisés rapidement, fréquemment et efficacement. Aujourd’hui, le mur de
séparation entre le développement et l’exploitation disparaît progressivement, car
finalement ces deux pôles travaillent vers un objectif commun.

28
Les références

— aws.amazon.com
— www.netapp.com
— newrelic.com
— www.softfluent.fr
— www.redhat.com
— www.syloe.com
— www.splunk.com
— kinsta.com
— www.qrpinternational.fr
— www.slideshare.net
— devopssec.fr

29

Vous aimerez peut-être aussi