Compare commits

...

4 Commits
v1.1 ... main

13 changed files with 43 additions and 56 deletions

BIN
Olivier_DOSSMANN-v1.2.pdf Normal file

Binary file not shown.

BIN
Olivier_DOSSMANN-v1.3.pdf Normal file

Binary file not shown.

View File

@ -4,7 +4,7 @@ subtitle: Dossier de projet - API Utilisateurs
author: Olivier \textsc{Dossmann} author: Olivier \textsc{Dossmann}
mail: <emploi@dossmann.net> mail: <emploi@dossmann.net>
date: 05 mars 2025 date: 05 mars 2025
version: 1.1 version: 1.3
mentor: Jérémie \textsc{Tarot} mentor: Jérémie \textsc{Tarot}
qrcode: https://odtre.gitlab.io/diapos/ qrcode: https://odtre.gitlab.io/diapos/
geometry: geometry:

View File

@ -22,18 +22,16 @@ professionnel ou dans la sphère privée (pour publier mon blog). C'est donc tou
DevOps. Et ce à travers la **formation DevOps en BootCamp** au sein de l'organisme DevOps. Et ce à travers la **formation DevOps en BootCamp** au sein de l'organisme
de formation DataScientest. de formation DataScientest.
Le présent document présentera principalement le projet étudié lors de cette Le présent document abordera principalement le projet étudié lors de cette
formation. Nous commencerons par faire la corrélation entre les compétences formation. Nous commencerons par faire la corrélation entre les compétences
attendues pour le *Titre Professionnel Administrateur Système DevOps* et le(s) attendues pour le *Titre Professionnel Administrateur Système DevOps* et le(s)
projet(s) présenté(s) dans ce dossier. Après quoi nous continuerons avec le projet(s) présenté(s) dans ce dossier. Après quoi nous continuerons avec le
cahier des charges et les spécifications techniques de ce(s) dernier(s). \ cahier des charges et les spécifications techniques de ce(s) dernier(s). \
Nous continuerons en expliquant la démarche suivie pour accomplir le projet, Nous continuerons en expliquant la démarche suivie pour accomplir le projet,
quelques réalisations effectuées et d'une situation de travail qui mérite quelques réalisations effectuées ainsi qu'une situation de travail qui mérite
d'être relevée. d'être relevée.
Mais avant tout, nous tenons à présenter nos remerciements à quelques personnes. **Conventions typographiques**
## Conventions typographiques
Ce document suit certaines conventions de mise en forme pour faciliter la Ce document suit certaines conventions de mise en forme pour faciliter la
lecture&nbsp;: lecture&nbsp;:

View File

@ -6,55 +6,44 @@
**précieuse**, sa **présence d'esprit** et son **exceptionnelle **précieuse**, sa **présence d'esprit** et son **exceptionnelle
intelligence**&nbsp;: MERCI&nbsp;! intelligence**&nbsp;: MERCI&nbsp;!
## À l'organisme de formation DataScientest ## Via l'organisme de formation DataScientest
Nous avons parfois besoin d'un coup de pouce pour rejoindre les rails d'une Je remercie **l'ensemble de l'équipe DataScientest** pour leur patience et
autre ligne. C'est ce que permet l'organisme de formation **DataScientest** leur savoir-vivre au regard de mes nombreux retours sur les cours, les examens
au travers de ses nombreux parcours proposés aux personnes qui, comme moi, et les machines virtuelles fournies.
souhaitent **changer de métier**.
Je remercie particulièrement les personnes suivantes pour leur **écoute**, Une mention toute particulière aux personnes suivantes pour leur **écoute**,
leur **professionnalisme** et leur souci de réponses claires&nbsp;: leur **professionnalisme** et leur souci de réponses claires&nbsp;:
* Sarah \textsc{Bouras}, * Sarah \textsc{Bouras},
* Benjamin \textsc{Fiche}, * Benjamin \textsc{Fiche},
* et Jérémie \textsc{Tarot}. * et Jérémie \textsc{Tarot}.
Je remercie également **l'ensemble de l'équipe DataScientest** pour leur Aux **membres de l'équipe DevU42** qui, malgré les **difficultés**, une **vie
patience et leur savoir-vivre au regard de mes nombreux retours sur les cours, sociale et familiale** prenante, des **obligations** et des
les examens et les machines virtuelles fournies. **responsabilités** ont donné ce qu'ils pouvaient&nbsp;:
## À l'équipe DevU42
Chaque membre de l'équipe a ses **difficultés**, une **vie sociale et
familiale** prenante, des **obligations** et des **responsabilités** à côté de
la formation. Et pourtant ils ont donné ce qu'ils pouvaient.
Merci à&nbsp;:
* Hrubech \textsc{Hombessa}, * Hrubech \textsc{Hombessa},
* Eliel \textsc{Moncada}, * Eliel \textsc{Moncada},
* et Julien \textsc{Sabiols}. * et Julien \textsc{Sabiols}.
J'imagine que derrière chaque personne il y a également **un ou une partenaire J'imagine que derrière chacune de ces personnes il y a également **un ou une
de vie**. Vous méritez de figurer dans ces lignes et d'avoir un grand partenaire de vie**. Vous méritez de figurer dans ces lignes et d'avoir un
MERCI&nbsp;! grand MERCI&nbsp;!
## Aux membres de la «&#8239;cohorte&#8239;» Aux **membres de la «&#8239;cohorte&#8239;»** que je tiens à remercier. À
ceux qui ont participé aux discussions, qui ont voulu échanger, qui ont
accepté de répondre à des questions, qui ont partagé des difficultés ou encore
des solutions et qui étaient eux-mêmes finalement.
Je tiens à remercier également **l'ensemble des membres de la cohorte**. À Une mention aux personnes suivantes&nbsp;:
ceux qui ont participé aux discussions, à ceux qui ont bien voulu échanger,
à ceux qui ont accepté de répondre à des questions, à ceux qui ont partagé
des difficultés ou encore des solutions, à ceux qui étaient eux-mêmes.
Une mention particulière aux personnes suivantes&nbsp;:
* à Maxime \textsc{Boulanghien}, * à Maxime \textsc{Boulanghien},
* à Michael \textsc{Lachand}, * à Michael \textsc{Lachand},
* à Philippe \textsc{Risser-Maroix}, * à Philippe \textsc{Risser-Maroix},
* et à Dorian \textsc{Roly}. * et à Dorian \textsc{Roly}.
## Et les autres ## Et d'autres encore&nbsp;!
D'autres personnes n'ayant aucun lien avec cette formation ont pourtant D'autres personnes n'ayant aucun lien avec cette formation ont pourtant
participé à leur façon. Je tiens à remercier notamment Grégoire participé à leur façon. Je tiens à remercier notamment Grégoire

View File

@ -1,3 +1,5 @@
\newpage
# Liste de compétences couvertes par le projet # Liste de compétences couvertes par le projet
## Introduction ## Introduction

View File

@ -18,7 +18,7 @@ contraintes attenantes.
2017, située sur Paris et proposant **plus de 18 formations différentes**, 2017, située sur Paris et proposant **plus de 18 formations différentes**,
dont *Administrateur Système DevOps*. dont *Administrateur Système DevOps*.
Plusieurs formats de formation existent parmi **Bootcamp**, continu et en Plusieurs formats de formation existent parmi **Bootcamp**, continue et en
alternance. **Ce projet est un exercice de fin de formation** proposé à tous alternance. **Ce projet est un exercice de fin de formation** proposé à tous
les élèves de la «&#8239;cohorte&#8239;» (équivalent d'une classe). les élèves de la «&#8239;cohorte&#8239;» (équivalent d'une classe).
@ -125,7 +125,7 @@ puisse **apprendre par la pratique**.
On imagine facilement le cadre&nbsp;: On imagine facilement le cadre&nbsp;:
> Une entreprise ayant une application de gestion d'utilisateur souhaite > Une entreprise ayant une application de gestion d'utilisateurs souhaite
> déployer et faire évoluer son service en favorisant les bonnes pratiques > déployer et faire évoluer son service en favorisant les bonnes pratiques
> suivies dans la culture DevOps. > suivies dans la culture DevOps.

View File

@ -52,7 +52,7 @@ locale du **proxy Traefik** configuré pour utiliser Docker.
Ces éléments sont un **bon point de départ pour l'équipe de DevOps** qui Ces éléments sont un **bon point de départ pour l'équipe de DevOps** qui
prendra connaissance des particularités de cette application. prendra connaissance des particularités de cette application.
### Points d'attentions ### Points d'attention
La **partie Frontend** permet de générer des fichiers dits La **partie Frontend** permet de générer des fichiers dits
«&#8239;statiques&#8239;», du **serverless** est envisageable. L'application, «&#8239;statiques&#8239;», du **serverless** est envisageable. L'application,
@ -60,13 +60,16 @@ bien que faisant des appels à une API, fonctionne de manière **autonome**. Ce
qui, a priori, facilite la préparation pour un déploiement. Cependant les qui, a priori, facilite la préparation pour un déploiement. Cependant les
développeurs de l'application utilisent **un nom de domaine inscrit en dur développeurs de l'application utilisent **un nom de domaine inscrit en dur
dans le fichier Dockerfile**, ce qui peut compliquer un déploiement sur dans le fichier Dockerfile**, ce qui peut compliquer un déploiement sur
plusieurs domaines et environnements. plusieurs domaines et environnements. En effet, une fois l'image Docker
compilée, il sera impossible de changer le nom de domaine. Déployer une telle
image limite donc l'usage à un seul domaine. Si on souhaite déployer sur
plusieurs domaines (pour un environnement de pré-production et un
environnement de production par exemple), il faudra faire une image Docker par domaine&nbsp;!
La **partie backend** s'appuie sur une base de données de type PostgreSQL. Elle La **partie backend** s'appuie sur une base de données de type PostgreSQL. Elle
est donc **dépendante de la BDD**. est donc **dépendante de la BDD**.
La **partie proxy** utilise actuellement **Traefik comme outil**. Ce qui n'est La **partie proxy** utilise actuellement **Traefik comme outil**.
pas une obligation d'usage pour un déploiement en production.
Ces trois parties ont une influence sur le choix de l'infrastructure à mettre Ces trois parties ont une influence sur le choix de l'infrastructure à mettre
en place. Il reste cependant une **marge de manœuvre sur la partie proxy**. En en place. Il reste cependant une **marge de manœuvre sur la partie proxy**. En

View File

@ -1,5 +1,3 @@
\newpage
# Démarche suivie {#demarche} # Démarche suivie {#demarche}
La réalisation de ce projet va plus loin que la simple mise en place d'une La réalisation de ce projet va plus loin que la simple mise en place d'une
@ -20,9 +18,9 @@ notamment par&nbsp;:
* des **comptes-rendus journaliers rapides de 10mn** en respectant les points * des **comptes-rendus journaliers rapides de 10mn** en respectant les points
suivants&nbsp;: suivants&nbsp;:
* ce que j'ai fait hier, * «&#8239;*ce que j'ai fait hier*&#8239;»,
* ai-je rencontré un/des problème(s) qui vaut(valent) d'être cité(s), * «&#8239;*ai-je rencontré un/des problème(s) qui vaut(valent) d'être cité(s)*&#8239;»,
* ce que je compte faire aujourd'hui, * «&#8239;*ce que je compte faire aujourd'hui*&#8239;»,
* la **création de jalons** avec un ensemble de tâches sur une période d'une * la **création de jalons** avec un ensemble de tâches sur une période d'une
semaine, semaine,
* des échanges réguliers en **pair-programming** sur des sujets difficiles * des échanges réguliers en **pair-programming** sur des sujets difficiles
@ -193,7 +191,7 @@ fait donc un outil de choix pour notre projet.
\newpage \newpage
#### Base de connaissance #### Base de connaissances
Une des premières choses qui a été faite sur cette plateforme a été la **mise Une des premières choses qui a été faite sur cette plateforme a été la **mise
en place d'une base de connaissances** sous la forme d'un Wiki. en place d'une base de connaissances** sous la forme d'un Wiki.

View File

@ -189,8 +189,6 @@ dépôt initial (celui de l'application par exemple). Et cela **laisse la
responsabilité aux personnes suivantes** (qui utilisent le dépôt initial) plutôt responsabilité aux personnes suivantes** (qui utilisent le dépôt initial) plutôt
qu'aux personnes qui s'occupent du code dans le dépôt initial. qu'aux personnes qui s'occupent du code dans le dépôt initial.
\newpage
## Réalisation 2&nbsp;: États Terraform ## Réalisation 2&nbsp;: États Terraform
### Contexte ### Contexte
@ -274,8 +272,6 @@ commandes make et qu'ils vérifient l'existence et le contenu du fichier
S'ajoute à cela une **documentation dans le fichier README.md**. S'ajoute à cela une **documentation dans le fichier README.md**.
\newpage
Exemple de script avec **make init** pour bien comprendre de quoi il est Exemple de script avec **make init** pour bien comprendre de quoi il est
question&nbsp;: question&nbsp;:
@ -306,6 +302,8 @@ terraform init \
-backend-config=${BACKEND_HTTP_FILE} $@ -backend-config=${BACKEND_HTTP_FILE} $@
``` ```
\newpage
Et le contenu du fichier **env.example**, partagé aux développeurs comme d'un Et le contenu du fichier **env.example**, partagé aux développeurs comme d'un
template pour fabriquer le fichier **.env**&nbsp;: template pour fabriquer le fichier **.env**&nbsp;:

View File

@ -103,7 +103,7 @@ https://blog.stephane-robert.info/docs/#la-roadmap), j'ai pu établir des
* le **sujet de la virtualisation**, * le **sujet de la virtualisation**,
* **le GitOps avec** un outil tel que **FluxCD**. * **le GitOps avec** un outil tel que **FluxCD**.
![Apparence de la page d'accueil du blog de Stéphane ![Copie d'écran de la page d'accueil du blog de Stéphane
\textsc{Robert}](./media/screenshot_stephane-robert.png){width=100%} \textsc{Robert}](./media/screenshot_stephane-robert.png){width=100%}
### Recherches ### Recherches
@ -144,8 +144,9 @@ https://odtre.gitlab.io/doc/virtualisation/.
plusieurs systèmes d'exploitation** avant de les adopter et les déployer sur plusieurs systèmes d'exploitation** avant de les adopter et les déployer sur
notre infrastructure. notre infrastructure.
![Section «&#8239;Documentation&#8239;» du site statique odtre.gitlab.io ![Copie d'écran de la section «&#8239;Documentation&#8239;» du site statique
généré sur Gitlab](./media/screenshot_odtre_doc.png){width=100%} odtre.gitlab.io généré sur Gitlab](
./media/screenshot_odtre_doc_shadow.png){width=100%}
\newpage \newpage
@ -169,7 +170,7 @@ Cf. https://fluxcd.io/flux/installation/bootstrap/ pour se mettre à jour
Comme auparavant, ceci a donné lieu à **la rédaction d'un article sur notre Comme auparavant, ceci a donné lieu à **la rédaction d'un article sur notre
outil de retranscription**, Cf. https://odtre.gitlab.io/doc/fluxcd/. outil de retranscription**, Cf. https://odtre.gitlab.io/doc/fluxcd/.
![Documentation de FluxCD sur le site ![Copie d'écran de la documentation de FluxCD sur le site
officiel](./media/screenshot_fluxcd-doc.png){width=100%} officiel](./media/screenshot_fluxcd-doc.png){width=100%}
## Conclusion ## Conclusion

View File

@ -1,5 +1,3 @@
\newpage
# Conclusion # Conclusion
Ma **passion anticipée pour l'automatisation** et l'**amélioration des Ma **passion anticipée pour l'automatisation** et l'**amélioration des

Binary file not shown.

After

Width:  |  Height:  |  Size: 98 KiB