Compare commits

..

No commits in common. "main" and "v1.1" have entirely different histories.
main ... v1.1

13 changed files with 56 additions and 43 deletions

Binary file not shown.

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.3 version: 1.1
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,16 +22,18 @@ 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 abordera principalement le projet étudié lors de cette Le présent document présentera 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 ainsi qu'une situation de travail qui mérite quelques réalisations effectuées et d'une situation de travail qui mérite
d'être relevée. d'être relevée.
**Conventions typographiques** Mais avant tout, nous tenons à présenter nos remerciements à quelques personnes.
## 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,44 +6,55 @@
**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;!
## Via l'organisme de formation DataScientest ## À l'organisme de formation DataScientest
Je remercie **l'ensemble de l'équipe DataScientest** pour leur patience et Nous avons parfois besoin d'un coup de pouce pour rejoindre les rails d'une
leur savoir-vivre au regard de mes nombreux retours sur les cours, les examens autre ligne. C'est ce que permet l'organisme de formation **DataScientest**
et les machines virtuelles fournies. au travers de ses nombreux parcours proposés aux personnes qui, comme moi,
souhaitent **changer de métier**.
Une mention toute particulière aux personnes suivantes pour leur **écoute**, Je remercie particulièrement les 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}.
Aux **membres de l'équipe DevU42** qui, malgré les **difficultés**, une **vie Je remercie également **l'ensemble de l'équipe DataScientest** pour leur
sociale et familiale** prenante, des **obligations** et des patience et leur savoir-vivre au regard de mes nombreux retours sur les cours,
**responsabilités** ont donné ce qu'ils pouvaient&nbsp;: les examens et les machines virtuelles fournies.
## À 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 chacune de ces personnes il y a également **un ou une J'imagine que derrière chaque personne il y a également **un ou une partenaire
partenaire de vie**. Vous méritez de figurer dans ces lignes et d'avoir un de vie**. Vous méritez de figurer dans ces lignes et d'avoir un grand
grand MERCI&nbsp;! MERCI&nbsp;!
Aux **membres de la «&#8239;cohorte&#8239;»** que je tiens à remercier. À ## Aux membres de la «&#8239;cohorte&#8239;»
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.
Une mention aux personnes suivantes&nbsp;: Je tiens à remercier également **l'ensemble des membres de la cohorte**. À
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 d'autres encore&nbsp;! ## Et les autres
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,5 +1,3 @@
\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**, continue et en Plusieurs formats de formation existent parmi **Bootcamp**, continu 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'utilisateurs souhaite > Une entreprise ayant une application de gestion d'utilisateur 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'attention ### Points d'attentions
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,16 +60,13 @@ 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. En effet, une fois l'image Docker plusieurs domaines et environnements.
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**. La **partie proxy** utilise actuellement **Traefik comme outil**. Ce qui n'est
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,3 +1,5 @@
\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
@ -18,9 +20,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;:
* «&#8239;*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,
* 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
@ -191,7 +193,7 @@ fait donc un outil de choix pour notre projet.
\newpage \newpage
#### Base de connaissances #### Base de connaissance
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,6 +189,8 @@ 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
@ -272,6 +274,8 @@ 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;:
@ -302,8 +306,6 @@ 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**.
![Copie d'écran de la page d'accueil du blog de Stéphane ![Apparence 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,9 +144,8 @@ 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.
![Copie d'écran de la section «&#8239;Documentation&#8239;» du site statique ![Section «&#8239;Documentation&#8239;» du site statique odtre.gitlab.io
odtre.gitlab.io généré sur Gitlab]( généré sur Gitlab](./media/screenshot_odtre_doc.png){width=100%}
./media/screenshot_odtre_doc_shadow.png){width=100%}
\newpage \newpage
@ -170,7 +169,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/.
![Copie d'écran de la documentation de FluxCD sur le site ![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,3 +1,5 @@
\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.

Before

Width:  |  Height:  |  Size: 98 KiB