Élimination du Toil
1 - Définition du Toil
1.1 Qu'est-ce que le Toil ?
Toil = Travail manuel, répétitif, automatisable, tactique, sans valeur durable.
1.2 Toil vs Engineering
| Toil | Engineering |
|---|---|
| Manuel | Automatisé |
| Répétitif | Nouveau |
| Réactif | Proactif |
| Pas de valeur durable | Amélioration permanente |
| Scale O(n) | Scale O(1) |
1.3 Impact du Toil
toil_impact:
individual:
- Burnout
- Frustration
- Stagnation des skills
- Moins de temps pour l'innovation
team:
- Vélocité réduite
- Difficulté à recruter
- Turnover élevé
organization:
- Scalabilité limitée
- Coûts croissants
- Innovation réduite
2 - Identification du Toil
2.1 Checklist
toil_identification:
questions:
- "Est-ce manuel ?"
- "Est-ce répétitif ?"
- "Peut-il être automatisé ?"
- "Est-ce tactique (pas stratégique) ?"
- "Grandit-il avec le service ?"
- "A-t-il une valeur durable ?"
scoring:
4-6_yes: "Définitivement du toil"
2-3_yes: "Probablement du toil"
0-1_yes: "Probablement pas du toil"
2.2 Exemples courants
| Catégorie | Toil | Non-Toil |
|---|---|---|
| Deployments | Déploiement manuel | Pipeline CI/CD |
| Incidents | Restart manuel | Auto-healing |
| Scaling | Ajout manuel de serveurs | Auto-scaling |
| Config | Changement manuel | GitOps |
| Monitoring | Check manuel | Alertes automatiques |
| Tickets | Résolution manuelle répétitive | Self-service |
2.3 Toil Tracking
# toil-tracking.yaml
tracking:
method: "Weekly survey + Ticket analysis"
categories:
- deployments
- incidents
- configuration
- access_requests
- capacity_management
- on_call
- monitoring
metrics:
- hours_per_week
- percentage_of_time
- trend_over_months
3 - Mesure du Toil
3.1 Métriques
toil_metrics:
time_spent:
description: "Heures passées en toil par semaine"
target: "< 50% du temps"
alert_threshold: "> 60%"
toil_tickets:
description: "Nombre de tickets de toil"
tracking: "Label 'toil' dans JIRA"
toil_ratio:
description: "Toil / Total work"
formula: "toil_hours / total_work_hours"
3.2 Dashboard
dashboard:
panels:
- title: "Toil Time This Week"
type: stat
query: sum(toil_hours_weekly)
- title: "Toil by Category"
type: piechart
query: toil_hours_by_category
- title: "Toil Trend"
type: timeseries
query: toil_percentage_weekly
- title: "Top Toil Sources"
type: table
query: topk(10, toil_hours_by_task)
4 - Stratégies d'élimination
4.1 Priorisation
4.2 Matrice de décision
| Fréquence | Temps | Action |
|---|---|---|
| Haute | Long | Automatiser immédiatement |
| Haute | Court | Automatiser si possible |
| Basse | Long | Documenter, puis automatiser |
| Basse | Court | Accepter ou documenter |
4.3 Techniques d'élimination
elimination_techniques:
automation:
- Scripts
- Pipelines CI/CD
- Infrastructure as Code
- Self-healing systems
elimination:
- Supprimer la nécessité
- Changer l'architecture
- Self-service pour les users
reduction:
- Simplifier le process
- Meilleurs outils
- Documentation améliorée
transfer:
- Responsabilité partagée
- Équipe dédiée (temporaire)
5 - Automation
5.1 Niveaux d'automation
automation_levels:
level_0_manual:
description: "Entièrement manuel"
example: "SSH et restart"
level_1_documented:
description: "Documenté mais manuel"
example: "Runbook détaillé"
level_2_scripted:
description: "Script disponible"
example: "Script de restart à lancer"
level_3_triggered:
description: "Script déclenché automatiquement"
example: "Webhook lance le script"
level_4_autonomous:
description: "Entièrement automatique"
example: "Auto-healing sans intervention"
5.2 Exemple : Restart automatique
# Niveau 0 → Niveau 4
# Level 0: Manual
manual_process: |
1. SSH to server
2. Check process status
3. Kill process
4. Start process
5. Verify health
# Level 2: Script
script: |
#!/bin/bash
systemctl restart myapp
sleep 5
curl -f http://localhost:8080/health
# Level 4: Auto-healing (Kubernetes)
kubernetes:
livenessProbe:
httpGet:
path: /health
port: 8080
initialDelaySeconds: 10
periodSeconds: 5
failureThreshold: 3
5.3 Self-Service
# Self-service portal
self_service_examples:
database_access:
before: "Ticket → SRE review → Manual grant"
after: "User request → Auto-approval (policy) → Auto-grant"
environment_creation:
before: "Ticket → SRE creates → Days of waiting"
after: "User clicks button → Terraform → Ready in minutes"
certificate_renewal:
before: "Alert → SRE renews manually"
after: "cert-manager auto-renewal"
6 - Toil Budget
6.1 Règle du 50%
sre_time_allocation:
target:
engineering: 50% # Minimum
toil_operations: 50% # Maximum
actions_if_exceeded:
- Prioritize toil elimination
- Get more SRE headcount
- Push back on requests
- Escalate to management
6.2 Tracking Quarterly
quarterly_review:
metrics:
- Total toil hours
- Toil percentage
- Top toil sources
- Toil eliminated this quarter
goals:
- Reduce toil by 10% quarter over quarter
- Eliminate top 3 toil sources
actions:
- Update automation backlog
- Plan next quarter's automation work
7 - Exemples pratiques
7.1 Avant/Après
example_deployments:
before:
process: |
1. Build locally
2. SSH to server
3. Stop service
4. Copy files
5. Start service
6. Test manually
time: 30 minutes
frequency: 10x/week
toil_hours: 5 hours/week
after:
process: "git push → auto deploy"
time: 0 minutes (automated)
frequency: 10x/week
toil_hours: 0
automation_cost: "20 hours one-time"
roi: "4 weeks"
7.2 ROI Calculation
toil_automation_roi:
current_toil:
hours_per_occurrence: 0.5
occurrences_per_week: 20
hours_per_week: 10
automation_investment:
development_hours: 40
maintenance_hours_per_month: 2
savings:
hours_saved_per_week: 10
hours_saved_per_year: 520
break_even: "4 weeks"
recommendation: "High priority automation"
Résumé
Dans ce chapitre, nous avons appris :
- La définition du Toil
- Comment identifier le toil
- Les métriques de suivi
- Les stratégies d'élimination
- Les niveaux d'automation
- Le Toil Budget et ROI
Prochaine étape
Dans le prochain chapitre, nous verrons la Gestion des Incidents.
→ Chapitre suivant : Gestion des Incidents