Problem
Noisy pages, thin rotations and unclear escalation wear engineers down, causing attrition and slower incident response. Leaders rarely see the cost because nobody measures interrupts, sleep disruption or the fairness of the rota.
Keep on-call rotations sustainable by measuring load, limiting toil and acting on signals of responder burnout.
Noisy pages, thin rotations and unclear escalation wear engineers down, causing attrition and slower incident response. Leaders rarely see the cost because nobody measures interrupts, sleep disruption or the fairness of the rota.
On-call is a cost paid by people. This framework makes that cost measurable and keeps it within limits so reliability does not depend on exhausted individuals.
Every page is recorded with timestamp, service, whether it was actionable and how long it took to resolve. Monthly reviews aggregate this data per team and per person, compare it to agreed thresholds and decide on action. Alerts that fire repeatedly without action are tuned, automated or removed, and sustained overload triggers a staffing or priority discussion.
Health is as much about predictability as about volume. Engineers can tolerate an occasional bad night if they know the rota well in advance, can swap shifts easily and receive visible recognition afterwards. Conversely, a low page count with unclear ownership and no escalation path can feel worse than a busier but well supported rotation. Combine quantitative thresholds with a short quarterly survey so that the numbers and the lived experience are reviewed together, and so that managers hear about problems the dashboards cannot show.
rotation:
min_size: 6
shift_length_days: 7
follow_the_sun: false
thresholds:
pages_per_shift:
target: 2
warn: 5
escalate: 10
after_hours_pages_per_week:
target: 1
escalate: 4
actionable_ratio_min: 0.8
actions_on_breach:
warn: "Review top three noisy alerts in weekly meeting"
escalate: "Freeze feature work for the service until load is below warn"
support:
shadow_shifts_required: 2
recovery_day_after_night_page: true