diff --git a/content/08_remerciements.md b/content/08_remerciements.md index 38f7a19..921e597 100644 --- a/content/08_remerciements.md +++ b/content/08_remerciements.md @@ -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 » diff --git a/content/10_liste_competences.md b/content/10_liste_competences.md index c16eadc..6c1ec7c 100644 --- a/content/10_liste_competences.md +++ b/content/10_liste_competences.md @@ -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 diff --git a/content/20_cahier_des_charges.md b/content/20_cahier_des_charges.md index dca3df2..634fc79 100644 --- a/content/20_cahier_des_charges.md +++ b/content/20_cahier_des_charges.md @@ -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 : diff --git a/content/30_specifications_techniques.md b/content/30_specifications_techniques.md index b9b0231..550c566 100644 --- a/content/30_specifications_techniques.md +++ b/content/30_specifications_techniques.md @@ -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 diff --git a/content/99_notes b/content/99_notes new file mode 100644 index 0000000..83ebd8e --- /dev/null +++ b/content/99_notes @@ -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 +*