chore(content): Complete technical specs structure

This commit is contained in:
Olivier DOSSMANN 2025-01-20 11:28:29 +01:00
parent f08fa66a3b
commit 3c691bb68e
5 changed files with 160 additions and 35 deletions

View File

@ -30,7 +30,7 @@ Pris à part, nous avons chacun nos particularités. Ensemble ces problèmes ét
À Julien \textsc{Sabiols} pour sa détermination, son travail acharné, son intelligence et son énorme humilité. Il a su être un partenaire de pair-programming brillant avec un esprit affûté. C'est rare. Et très appréciable !
J'imagine que derrière chaque personne il y a également un ou une partenaire de vie qui a faciliter l'organisation et la disponibilité autour de la formation. Pour ces personnes cachées dans l'ombre : MERCI ! Vous méritez de figurer dans ces lignes.
J'imagine que derrière chaque personne il y a également un ou une partenaire de vie qui a facilité l'organisation et la disponibilité autour de la formation. Pour ces personnes cachées dans l'ombre : MERCI ! Vous méritez de figurer dans ces lignes.
## Au membres de la « cohorte »

View File

@ -4,6 +4,9 @@
TODO: Lister compétences du référentiel
* Compétence n°1 : Automatiser la création de serveurs à l'aide de scripts : serveurs virtuels (Vagrant, etc.), avec automatisation config. (type Ansible) et automatisation création du serveur via scripts (bash et/ou Python)
* Utilisation des EC2 (serveur virtuel)
* Automatisation via Terraform
* Compétence n°2 : Automatiser le déploiement d'une infrastructure :
* utilisation de Terraform dans le dépôt nommé **infra**
* staging
@ -33,7 +36,6 @@ TODO: Lister compétences du référentiel
Ne couvre pas - pour le moment :
* Compétence n°1 : Automatiser la création de serveurs à l'aide de scripts : serveurs virtuels (Vagrant, etc.), avec automatisation config. (type Ansible) et automatisation création du serveur via scripts (bash et/ou Python)
* Compétence n°3 : Sécuriser l'infrastructure
* Compétence n°6 : Gérer le stockage des données :
* TODO: sauvegardes données

View File

@ -199,7 +199,7 @@ Documents informatifs :
* Cahier des charges
* Support de communication diapositive
* Schéma pour chaque préoccupation majeure
* Dossier de projet
* Dossier de projet
Gitlab :

View File

@ -4,44 +4,118 @@
TODO: spécifications techniques
## DevOps
Mot clé : écosystème DevOps
Objectif : mettre en œuvre les bonnes pratiques de DevOps
La réalisation de ce projet va plus loin que la simple mise en place d'une
application dans le Cloud. C'est une nouvelle équipe, dans un nouvel
environnement avec une application inconnue et des savoirs à acquérir.
* Plan / Planifier (Gitlab : Milestones + issues)
* Code / Développer (Gitlab : Dépôts Git, différents projets)
* Build / Générer (Gitlab : Gitlab CI - docker build, npm build, etc.)
* Test / Tester (Gitlab : Gitlab CI)
* Publish / Publier (Gitlab : Gitlab CI + Docker repositories + package registry)
* Deploy / Déployer (Terraform + Gitlab)
* Operate / Opérer ( ??? ) = services en ligne + backup + reprise sur échec + feedback utilisateurs
* Observe / Surveiller (Prometheus OU Datadog)
En pareille situation, c'est tout un **écosystème DevOps** qu'il faut mettre
en place. Ainsi nous commençons par nous organiser pour collaborer sur le
projet pour répondre aux besoins ; après quoi nous nous tournons vers
l'étude de l'application pour continuer sur le choix d'une infrastructure pour
accueillir nos services. Finalement nous choisissons aussi des outils autour
de l'application pour garantir un certain niveau de service.
![Schéma des concepts DevOps](media/concept_devops-loop.png)
## Selon Gitlab
## Organisation
* Planification : organisez le travail à effectuer, hiérarchisez-le et suivez son achèvement.
* Création : écrivez, concevez, développez et gérez en toute sécurité le code et les données du projet avec votre équipe.
* Vérification : assurez-vous que votre code fonctionne correctement et respecte vos normes de qualité, idéalement avec des tests automatisés.
* Empaquetage : empaquetez vos applications et dépendances, gérez les conteneurs et générez des artéfacts.
* Sécurisation : vérifiez les vulnérabilités à l'aide de tests statiques et dynamiques, de tests à données aléatoires et d'analyses des dépendances.
* Release : déployez le logiciel pour les utilisateurs finaux.
* Configuration : gérez et configurez l'infrastructure nécessaire pour prendre en charge vos applications.
* Surveillance : suivez les métriques de performance et les erreurs pour réduire la gravité et la fréquence des incidents.
* Gouvernance: gérez les vulnérabilités de sécurité, les politiques et la conformité dans l'ensemble de votre entreprise
Gitlab, Slack, SemVer, Git OneFlow, Conventional commit, différents environnements
## Autre
### Normes
* Base de connaissances collaborative commune : Gitlab avec Wiki
* SemVer
* Git OneFlow
* Conventional commit
## Specs
### Environnements
* Technologies utilisées par l'application initiale + schémas dépendances
* contrainte : haute disponibilité, sous AWS
* sauvegardes
* supervision (outils monitoring + alerting)
* collaboration : Gitlab = plateforme DevOps
* gestion utilisateurs (id/mdp, clefs, accès)
* gestion des secrets
*
* Développement
* Tests
* Pré-production (appelé « staging »)
* Production
### Plateforme DevOps
* couvre les principes DevOps
* Github vs. Gitlab ?
* services utilisés :
* Tickets
* Jalons
* Kanbans
* Base de connaissance collaborative : Wiki sous Gitlab
### Méthodologie
* Méthodologie Agile basique
* Compte-rendus journaliers
## Étude de l'application
### Composants de l'application
### Implications
Ce que cela implique pour la suite
## Infrastructure d'accueil
### Couche basse
### Environnement Kubernetes
* EKS
* cert-manager (avec Let's Encrypt) - gratuit
* externaldns + Route53 (domaines) ~ 16€/mois pour nos routes
* AWS LoadBalancer, couche 4 du modèle OSI (pour le lien entre l'extérieur et le cluster)
* Nginx ingress controller pour le lien entre les services du cluster et l'AWS LoadBalancer
### Déploiement
* Terraform
* Pipelines automatisées
## Services et outils divers
Pas si annexes que ça tout de même !
### Données
#### BDD postgreSQL
Aurora, MAIS soucis lors de l'implémentation. Faute de temps : postgresql-ha
#### Stockage
#### Sauvegardes
### Supervision
Choix de Datadog au détriment de Prometheus, faute de temps
Prévu de :
* prometheus
* avec nginx-ingress-controller privé
* et accès VPN dessus
Pas fait faute de temps.
#### Surveillance (monitoring)
Choix indicateurs
#### Alertes
Système d'alerte : slack, ou autre ? Mail ?
### Sécurité
#### Gestion utilisateurs
#### Vault
#### Système gestion mdp collaboratif
## Conclusion

49
content/99_notes Normal file
View File

@ -0,0 +1,49 @@
\newpage
# Notes diverses
TODO: supprimer cette section à la fin
Mot clé : écosystème DevOps
## DevOps
Objectif : mettre en œuvre les bonnes pratiques de DevOps
* Plan / Planifier (Gitlab : Milestones + issues)
* Code / Développer (Gitlab : Dépôts Git, différents projets)
* Build / Générer (Gitlab : Gitlab CI - docker build, npm build, etc.)
* Test / Tester (Gitlab : Gitlab CI)
* Publish / Publier (Gitlab : Gitlab CI + Docker repositories + package registry)
* Deploy / Déployer (Terraform + Gitlab)
* Operate / Opérer ( ??? ) = services en ligne + backup + reprise sur échec + feedback utilisateurs
* Observe / Surveiller (Prometheus OU Datadog)
![Schéma des concepts DevOps](media/concept_devops-loop.png)
## Selon Gitlab
* Planification : organisez le travail à effectuer, hiérarchisez-le et suivez son achèvement.
* Création : écrivez, concevez, développez et gérez en toute sécurité le code et les données du projet avec votre équipe.
* Vérification : assurez-vous que votre code fonctionne correctement et respecte vos normes de qualité, idéalement avec des tests automatisés.
* Empaquetage : empaquetez vos applications et dépendances, gérez les conteneurs et générez des artéfacts.
* Sécurisation : vérifiez les vulnérabilités à l'aide de tests statiques et dynamiques, de tests à données aléatoires et d'analyses des dépendances.
* Release : déployez le logiciel pour les utilisateurs finaux.
* Configuration : gérez et configurez l'infrastructure nécessaire pour prendre en charge vos applications.
* Surveillance : suivez les métriques de performance et les erreurs pour réduire la gravité et la fréquence des incidents.
* Gouvernance: gérez les vulnérabilités de sécurité, les politiques et la conformité dans l'ensemble de votre entreprise
## Autre
* Base de connaissances collaborative commune : Gitlab avec Wiki
## Specs
* Technologies utilisées par l'application initiale + schémas dépendances
* contrainte : haute disponibilité, sous AWS
* sauvegardes
* supervision (outils monitoring + alerting)
* collaboration : Gitlab = plateforme DevOps
* gestion utilisateurs (id/mdp, clefs, accès)
* gestion des secrets
*