Guide de Révision - Examen DevOps
1. DevOps - Agilité - Scrum
DevOps Fondamentaux
Définition : DevOps = Development + Operations. Philosophie qui favorise la collaboration entre les
équipes de développement et d'exploitation.
Principes clés :
Culture : Collaboration, communication, responsabilité partagée
Automatisation : CI/CD, tests automatisés, déploiement automatique
Mesure : Monitoring, métriques, feedback continu
Partage : Connaissances, outils, responsabilités
Avantages :
Déploiements plus fréquents et fiables
Réduction du time-to-market
Amélioration de la qualité
Meilleure collaboration équipes
Méthodes Agiles
Manifeste Agile - 4 valeurs :
1. Individus et interactions > processus et outils
2. Logiciel fonctionnel > documentation exhaustive
3. Collaboration client > négociation contractuelle
4. Adaptation au changement > suivi d'un plan
12 Principes Agiles (les plus importants) :
Satisfaire le client par des livraisons rapides
Accueillir positivement les changements
Livrer fréquemment un logiciel opérationnel
Collaboration quotidienne développeurs/métier
Scrum Framework
Rôles :
Product Owner : Définit les besoins, gère le Product Backlog
Scrum Master : Facilite le processus, supprime les obstacles
Development Team : Développe le produit (3-9 personnes)
Événements :
Sprint : Itération de 1-4 semaines
Sprint Planning : Planification du sprint (8h max pour 4 semaines)
Daily Scrum : Point quotidien (15 min max)
Sprint Review : Démonstration du produit (4h max)
Sprint Retrospective : Amélioration continue (3h max)
Artefacts :
Product Backlog : Liste des fonctionnalités priorisées
Sprint Backlog : Éléments sélectionnés pour le sprint
Increment : Version potentiellement livrable du produit
2. Gestion du Code - Git
Commandes Git Essentielles
bash
# Configuration
git config --global [Link] "Nom"
git config --global [Link] "email@[Link]"
# Initialisation et clonage
git init
git clone <url>
# Gestion des changements
git add <fichier> # Ajouter au staging
git add . # Ajouter tous les fichiers
git commit -m "message" # Valider les changements
git status # Voir l'état des fichiers
git diff # Voir les différences
# Historique
git log # Historique des commits
git log --oneline # Historique condensé
git show <commit-id> # Détails d'un commit
# Branches
git branch # Lister les branches
git branch <nom> # Créer une branche
git checkout <branche> # Changer de branche
git checkout -b <nom> # Créer et basculer
git merge <branche> # Fusionner une branche
git branch -d <nom> # Supprimer une branche
# Remote
git remote add origin <url>
git push origin <branche>
git pull origin <branche>
git fetch # Récupérer sans fusionner
Workflows Git
GitFlow :
main/master : Code de production
develop : Branche de développement principale
feature/ : Nouvelles fonctionnalités
release/ : Préparation des versions
hotfix/ : Corrections urgentes
GitHub Flow (plus simple) :
main : Code de production
feature branches : Pour chaque fonctionnalité
Pull Request pour intégrer
GitHub/Azure DevOps
Pull Request (PR) / Merge Request (MR) :
Processus de révision de code
Permet la discussion et l'amélioration
Tests automatiques avant fusion
Protection de la branche principale
Azure DevOps - Services Clés
Azure Repos :
Hébergement Git (similaire à GitHub)
Support Git et TFVC (Team Foundation Version Control)
Pull Requests avec révision de code
Politiques de branche (branch policies)
Azure Pipelines :
CI/CD intégré
Support multi-plateforme (Windows, Linux, macOS)
Agents hébergés ou auto-hébergés
Pipeline YAML ou interface graphique
Azure Boards :
Gestion des work items (User Stories, Tasks, Bugs)
Tableau Kanban et Scrum
Suivi des sprints et burndown charts
Intégration avec repos et pipelines
Azure Test Plans :
Tests manuels et automatisés
Gestion des cas de test
Rapports de test
Azure Artifacts :
Gestionnaire de packages privés
Support NuGet, npm, Maven, Python, etc.
Bonnes pratiques :
Messages de commit clairs et descriptifs
Commits atomiques (une modification = un commit)
Révision de code systématique
Branches courtes et focalisées
3. Qualité du Code - Tests - Couverture
Tests Unitaires
Définition : Tests qui vérifient le comportement d'une unité de code isolée (fonction, méthode, classe).
Caractéristiques :
Rapides : Exécution en millisecondes
Isolés : Indépendants les uns des autres
Répétables : Résultats identiques à chaque exécution
Auto-validants : Pass/Fail clair
Pattern AAA :
Arrange : Préparer les données et le contexte
Act : Exécuter l'action à tester
Assert : Vérifier le résultat
Exemple de Test Unitaire (JavaScript/Jest)
javascript
// Fonction à tester
function add(a, b) {
return a + b;
}
// Test unitaire
describe('add function', () => {
test('should add two positive numbers', () => {
// Arrange
const a = 2;
const b = 3;
// Act
const result = add(a, b);
// Assert
expect(result).toBe(5);
});
});
Couverture de Code
Métriques principales :
Line Coverage : % de lignes exécutées
Branch Coverage : % de branches conditionnelles testées
Function Coverage : % de fonctions appelées
Statement Coverage : % d'instructions exécutées
Objectifs recommandés :
Minimum : 70-80%
Bon : 80-90%
Excellent : 90%+
Important : La couverture élevée ne garantit pas la qualité, mais la faible couverture indique des risques.
Pyramide des Tests
/\
/ \ E2E Tests (Peu, lents, coûteux)
/____\
/ \ Integration Tests (Quelques-uns)
/________\
| | Unit Tests (Nombreux, rapides, bon marché)
Intégration CI/CD avec Azure DevOps
Pipeline YAML typique :
yaml
trigger:
- main
pool:
vmImage: 'ubuntu-latest'
stages:
- stage: Build
jobs:
- job: BuildJob
steps:
- task: NodeTool@0
inputs:
versionSpec: '16.x'
- script: npm install
- script: npm run build
- script: npm test
- task: PublishTestResults@2
inputs:
testResultsFormat: 'JUnit'
testResultsFiles: '**/[Link]'
- task: PublishCodeCoverageResults@1
inputs:
codeCoverageTool: 'Cobertura'
summaryFileLocation: '**/[Link]'
- stage: Deploy
dependsOn: Build
condition: succeeded()
jobs:
- deployment: DeployWeb
environment: 'production'
strategy:
runOnce:
deploy:
steps:
- task: AzureWebApp@1
inputs:
azureSubscription: 'service-connection'
appName: 'my-web-app'
Pipeline traditionnel :
1. Commit → Déclenchement automatique
2. Build → Compilation du code
3. Test → Exécution des tests unitaires
4. Quality Gate → Vérification couverture/qualité
5. Deploy → Déploiement si tests OK
Outils de Qualité
SonarQube : Analyse statique du code
ESLint/JSHint : Linters JavaScript
[Link] : Couverture Python
JaCoCo : Couverture Java
Istanbul/NYC : Couverture JavaScript
Points Clés pour l'Examen
DevOps
Connaître les principes CALMS (Culture, Automation, Lean, Measurement, Sharing)
Comprendre la différence DevOps vs Agile
Savoir expliquer les bénéfices du DevOps
Git
Maîtriser les commandes de base
Comprendre les stratégies de branching
Connaître le processus de Pull Request
Tests
Expliquer l'importance des tests unitaires
Interpréter les métriques de couverture
Comprendre l'intégration dans CI/CD
Questions Types d'Examen
1. Quels sont les piliers du DevOps ?
2. Différence entre git merge et git rebase ?
3. Qu'est-ce qu'un Sprint en Scrum ?
4. Comment calculer la couverture de code ?
5. Avantages des tests unitaires ?
6. Rôles dans une équipe Scrum ?
7. Workflow GitFlow vs GitHub Flow ?
8. Différence entre Azure Repos et GitHub ?
9. Qu'est-ce qu'un pipeline YAML ?
10. Comment configurer une politique de branche dans Azure DevOps ?
Spécificités Azure DevOps pour l'Examen
Commandes Azure CLI DevOps
bash
# Extension Azure DevOps CLI
az extension add --name azure-devops
# Configuration
az devops configure --defaults organization=[Link] project=myproject
# Repos
az repos list
az repos create --name "nouveau-repo"
# Pipelines
az pipelines list
az pipelines run --name "pipeline-name"
# Work Items
az boards work-item create --title "New Task" --type Task
az boards work-item list --wiql "SELECT [[Link]], [[Link]] FROM WorkItems WHERE [Syste
Différences clés Azure DevOps vs GitHub
Aspect Azure DevOps GitHub
Repos Azure Repos (Git + TFVC) Git uniquement
CI/CD Azure Pipelines intégré GitHub Actions
Project Management Azure Boards (complet) Issues + Projects (basique)
Packages Azure Artifacts GitHub Packages
Pricing Gratuit jusqu'à 5 utilisateurs Gratuit pour public, payant pour privé
Enterprise Forte intégration Microsoft Racheté par Microsoft