```mermaid
graph TD
A[Fondamentaux] -->|Compréhension de DevOps, Développement logiciel, OS| B[Outils de Version Control]
B -->|Git, GitHub/GitLab| C[CI/CD]
C -->|Continuous Integration| D[Continuous Integration]
D -->|Gitlab-ci, Github-Actions, Jenkins, Travis CI| E[Continuous Delivery]
E --> |Deploy|I
E -->|Gitlab-ci, Github-actions, Docker| F[Conteneurisation et Orchestration]
F -->|Docker, Kubernetes| I
G[Infrastructure as Code]
G -->|Terraform, Ansible| I
H[Monitoring et Logging] -->|Prometheus, Grafana, Dynatrace| I[Services Cloud]
I -->|AWS, Azure, Google Cloud| J[DevSecOps]
J -->|Principes de Sécurité, Outils de Sécurité| Z[FIN]
```
# Cursus de Formation
## 0. Prérequis
- Créer compte gitlab
- Comprendre git "push pull commit merge..."
- Application backend en Java/spring-boot (ou autre langage/framework)
- Java 17
- Controller REST
- Un petit service qui fait quelque chose
## 1. Fondamentaux
- **Objectif** : Comprendre les principes de base du DevOps, du développement logiciel et des systèmes d'exploitation.
- **Sujets** :
- Philosophie DevOps
- Cycles de vie du développement logiciel
## 2. Outils de Version Control
- **Objectif** : Maîtriser les outils de contrôle de version.
- **Sujets** :
- Git (commandes de base, branches, fusion...)
- Utilisation de GitLab (gestion de dépôts, merge requests...)
## 3. Continuous Integration (CI)
- **Objectif** : Comprendre et mettre en oeuvre l'intégration continue.
- **Sujets** :
- Configuration de pipelines CI avec GitLab-ci
- Un fichier gitlab-ci.yml
- Build
- Test
- Package
## 4. Continuous Delivery (CD)
- **Objectif** : Apprendre à déployer automatiquement le code en production.
- **Sujets** :
- Automatisation du déploiement avec GitLab-ci
- Deploy sur EC2
## 5. Services Cloud
- **Objectif** : Comprendre et utiliser les services cloud.
- **Sujets** :
- AWS, gestion des ressources, meilleures pratiques
- EC2, ECS, EKS, RDS, Route53, CloudFront, IAM, VPC, Lambda...
## 6. Conteneurisation et Orchestration
- **Objectif** : Acquérir des compétences en conteneurisation et orchestration.
- **Sujets** :
- Utilisation de Docker pour la conteneurisation
- Kubernetes pour l'orchestration des conteneurs
## 7. Infrastructure as Code (IaC)
- **Objectif** : Gérer et provisionner l'infrastructure via le code.
- **Sujets** :
- Terraform pour la création et la gestion de l'infrastructure
- Ansible pour l'automatisation des configurations
## 8. Monitoring et Logging
- **Objectif** : Mettre en place des systèmes de monitoring et de logging.
- **Sujets** :
- Configuration et utilisation de Prometheus et Grafana pour le monitoring
- Dynatrace pour le monitoring avancé des performances
## 9. DevSecOps
- **Objectif** : Intégrer la sécurité dans le cycle DevOps.
- **Sujets** :
- Principes de sécurité en DevOps
- Utilisation d'outils pour sécuriser l'infrastructure et les applications