Aller au contenu principal

É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

ToilEngineering
ManuelAutomatisé
RépétitifNouveau
RéactifProactif
Pas de valeur durableAmé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égorieToilNon-Toil
DeploymentsDéploiement manuelPipeline CI/CD
IncidentsRestart manuelAuto-healing
ScalingAjout manuel de serveursAuto-scaling
ConfigChangement manuelGitOps
MonitoringCheck manuelAlertes automatiques
TicketsRésolution manuelle répétitiveSelf-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équenceTempsAction
HauteLongAutomatiser immédiatement
HauteCourtAutomatiser si possible
BasseLongDocumenter, puis automatiser
BasseCourtAccepter 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


← Retour à la table des matières