Retour au blog Agences Web - 8 min

Rédiger un contrat de maintenance avec SLA pour une agence web

Un contrat de maintenance sépare périmètre, prise en charge et rétablissement. Écrivez les exclusions, le canal d’alerte et la fenêtre de mise à jour.

Un contrat de maintenance avec SLA tient en quelques clauses mesurables : ce qui est inclus, ce qui ne l’est pas, le délai pour accuser réception, le délai pour rétablir, et la façon de compter les minutes. Une phrase vague sur la surveillance n’est pas une clause. Une clause dit quelles URL, quel code HTTP est attendu, et à partir de quand l’horloge tourne.

Écrire le périmètre avant les délais

Les délais n’ont de sens que sur un périmètre nommé. Listez les URL couvertes en annexe : au minimum l’accueil, la page de prise de contact ou de paiement, et la connexion à l’administration si vous vous engagez dessus. Une URL absente de l’annexe n’ouvre pas le délai, même si le client la juge importante le jour de l’incident.

SujetÀ écrire comme inclusÀ écrire comme exclu, ou chiffré à part
DisponibilitéLes URL de l’annexe répondent dans le code convenuLes sites de tiers (paiement externe, carte embarquée)
Mises à jourCœur, extensions et thème, sur une copie puis en productionUne refonte, un nouveau modèle de page, un changement d’offre
SauvegardesFréquence, lieu de stockage, test de restaurationUne restauration demandée parce que le client a effacé un contenu, si vous la facturez
CorrectifsCorrection d’une régression introduite par une mise à jour que vous avez faiteUn développement spécifique demandé après coup
HébergementSeulement si vous êtes le contrat d’hébergementLe serveur du client chez un autre prestataire, sauf mission d’intermédiation écrite

Si l’hébergement n’est pas le vôtre, le contrat le dit : vous qualifiez, vous ouvrez le ticket chez l’hébergeur, vous ne promettez pas le délai de son datacenter. Promettre un rétablissement en une heure sur une machine que vous ne contrôlez pas transforme le SLA en vœu.

Deux horloges

Définissez deux durées, par niveau.

Niveau 1 : l’accueil ou la page de paiement répond autre chose que le code convenu (en pratique un 500, 502, 503 ou 504, ou un délai sans réponse), en dehors d’une fenêtre annoncée. Prise en charge : par exemple une heure pendant les heures ouvrées, ou un délai plus court si vous vendez une astreinte. Rétablissement : une cible séparée, plus longue, parce que la cause n’est pas connue au moment où vous accusez réception.

Niveau 2 : une page secondaire, un formulaire qui n’envoie plus, un certificat qui expire dans moins de quatorze jours. Prise en charge le jour ouvré suivant. Pas d’astreinte.

L’horloge de prise en charge démarre à l’heure du signal convenu : votre constat, ou le message du client sur le canal nommé dans le contrat (adresse e-mail, pas un réseau social). Un message à minuit sur un canal non prévu ne lance pas l’horloge d’un contrat en heures ouvrées. Écrivez le canal. Écrivez le fuseau.

Le pourcentage de disponibilité, s’il figure au contrat, a sa propre clause : période de calcul, formule, exclusions. Ne le mélangez pas avec le délai de prise en charge. Un site peut respecter 99,9 % sur le mois et avoir raté le délai de prise en charge d’un incident court. Ce sont deux manquements différents. Le mode de calcul du taux est à figer comme dans calculer le taux de disponibilité.

Fenêtre de mise à jour

Fixez un créneau, par exemple un mardi matin, avec un préavis au client. Pendant ce créneau, un HTTP 503 avec un en-tête Retry-After est de la maintenance, pas une panne. La façon de poser ce 503 est décrite dans gérer une erreur 503. En dehors du créneau, vous ne lancez pas une mise à jour majeure parce que le correctif est sorti à 18 h un vendredi , sauf faille en cours d’exploitation, et dans ce cas le contrat doit dire que vous pouvez intervenir hors fenêtre.

Précisez qui valide une mise à jour qui change un comportement visible (éditeur, formulaire, paiement). Sans cette phrase, le client considère toute différence visuelle comme un incident de niveau 1.

Ce qui suspend ou sort du délai

Écrivez une liste courte : fenêtre annoncée, attente d’une information que vous avez demandée au client (accès, choix fonctionnel), panne d’un service tiers hors annexe, et le cas où le client refuse le retour arrière que vous proposez. Dès que le client répond ou accepte, l’horloge reprend. Notez ces suspensions dans le ticket, sinon vous ne pourrez pas les montrer.

Le livrable est le contrat signé plus l’annexe d’URL, pas une plaquette. Faites relire les phrases d’indemnité ou de crédit d’heures par votre conseil : la rédaction ci-dessus fixe le fonctionnement, elle ne remplace pas un avis juridique sur le plafond de responsabilité. Chaque incident couvert se verse ensuite dans un ticket daté, selon la méthode de documenter les incidents, pour pouvoir comparer plus tard le délai promis et le délai tenu.

Questions fréquentes

Délai de prise en charge et délai de rétablissement, c’est la même chose ?

Non. La prise en charge est l’heure à laquelle une personne accuse réception et commence à qualifier. Le rétablissement est l’heure à laquelle l’URL répond de nouveau comme convenu. Un contrat qui ne donne qu’un seul délai mélange les deux.

Que faire d’une demande qui n’est pas dans le périmètre ?

Vous la chiffrez à part. Le contrat doit dire que une nouvelle page, une refonte ou un changement de charte ne sont pas de la maintenance. Sinon chaque ticket devient un débat.

La maintenance annoncée compte-t-elle comme une panne ?

Non, si le contrat prévoit une fenêtre, un préavis, et un code 503 pendant le créneau. En dehors de cette fenêtre, le même 503 compte dans le délai de rétablissement.

Surveiller mes URL