Our services
If you can think it, we can make it brainsoft.
If you can think it, we can make it brainsoft.
Written By: BrainSoft In Security
Most teams write their incident plan during the incident. Someone notices the checkout is down, a call starts, and for the next hour people argue about who should be doing what while customers keep hitting a broken page. The plan gets written afterwards, usually as a list of apologies and a vague promise to do better.
An incident plan is a short document you write on a calm Tuesday, not a Friday night. It names severity levels, assigns roles, and lists the first five things anyone does when an alert fires. Below is how I build one for a project, usually in under two hours.
The first argument in any incident is whether it is serious. Settle that in advance with a small table. Four levels is plenty. The point is that anyone on call can read a symptom and pick a level without asking a manager.
Write one concrete example next to each level from your own system. "SEV1: login endpoint returns 5xx for more than 5% of requests for 3 minutes" is more useful than "critical outage".
During an incident, one person should be fixing things and a different person should be coordinating. When the same person does both, the fix slows down and nobody talks to anyone. Name three roles and put real names and phone numbers against them.
If your team is three people, the same person can hold two roles, but write down which two and in what order they drop them. A plan that assumes ten people is useless to a team of four.
The worst moment to think is the first minute after a page. Give people a checklist that works before they understand the problem. Ours usually looks like this, and it lives in the repo next to the code.
## First 5 minutes
1. Acknowledge the page in PagerDuty within 5 min.
2. Open #incident channel, post: symptom, time, severity guess.
3. If SEV1 or SEV2, call the incident commander.
4. Check the status page and last deploy time.
5. If the last deploy is within 30 min, roll back first, debug after.
That last line has saved more incidents than any dashboard. Rolling back is reversible and fast. If we are not sure, we go back and investigate from a known-good state. Write that permission into the plan so nobody waits for approval.
A runbook is not a design document. It is the commands you run at 3am when the database is saturated. Keep each one to a page and test it occasionally.
# Check whether the API is healthy
curl -sf https://api.example.com/health | jq .status
# Recent deploys
kubectl rollout history deploy/api --namespace prod | tail -n 5
# Roll back the last deploy
kubectl rollout undo deploy/api --namespace prod
Link each runbook from the plan by symptom, not by service. "Checkout is slow" should point to the database runbook, the cache runbook, and the provider status page. If you are running this on infrastructure we manage, the our services team keeps these runbooks alongside your environments.
The plan should end with what happens after. A blank template forces the right questions: what did customers see, when did we know, what did we do, what will we change. Set a rule that SEV1 and SEV2 get a written postmortem within five working days, and that the action items get owners and dates. Otherwise the document is just a story.
Store the plan where people will find it during an incident: pinned in the on-call channel, linked from the alert itself, and in the repo. Review it every quarter and after every SEV1. If a step was wrong, fix it that week. If you want a second pair of eyes on yours, get in touch.
Two to four pages. Severity levels, roles with names and backups, the first-five-minutes checklist, links to runbooks, and the postmortem rule. If it takes more than ten minutes to read during an incident, it is too long.
The person who is on call most often, not a manager. They know which alerts are noisy and which steps are unrealistic. A tech lead reviews it, but the on-call engineer writes it and keeps it current.
Write a smaller plan. One severity table, one named responder with a backup, and a checklist that starts with checking the last deploy and rolling back. That covers most real incidents even without a formal rotation.