Productie staat in brand bij ontwikkeling — wat het is, oorzaken en handelingsalgoritme

Auteur: IT Sectr Gepubliceerd: 2026-08-07 Leestijd: 8 min

„Productie staat in brand” is een informele beschrijving van een kritieke storing waarbij de mobiele app gedeeltelijk of volledig onbereikbaar is voor gebruikers. Typische oorzaken zijn een niet-ingecalculeerde edge case in een nieuwe release, uitval van de cloudprovider, een fout in een databasemigratie of een DDoS-aanval. Volgens Google SRE Book wordt 80% van de kritieke incidenten veroorzaakt door wijzigingen in de afgelopen 48 uur. De on-call ingenieur moet handelen volgens een duidelijke runbook: eerst het bloeden stoppen, daarna de oorzaak diagnosticeren.

Belangrijkste punten

  • Kritieke storing — volledige of gedeeltelijke onbereikbaarheid van de app voor gebruikers
  • Stop the bleeding — prioritaire actie: rollback, feature toggle of hotfix
  • Communication — het team, stakeholders en gebruikers informeren over de incidentstatus
  • Runbook — vooraf opgestelde checklist voor elk type storing
  • Post-mortem — blameless incidentanalyse met action items ter preventie

Wat betekent „productie staat in brand” en welke storingen zijn er

De uitdrukking „productie staat in brand” (production is on fire, everything is down) beschrijft een situatie waarin de productieomgeving niet correct werkt en dit gevolgen heeft voor gebruikers. De storing kan zich uiten als volledige onbereikbaarheid van de app (blank screen, 502-fout), gedeeltelijke onbereikbaarheid (de betalingsmodule werkt niet, maar andere functies zijn beschikbaar) of prestatievermindering (extreem lang laden). De severity van het incident wordt bepaald door het percentage getroffen gebruikers en de duur van de storing.

Volgens Atlassian Statuspage (2025) bedroeg de gemiddelde downtime voor mobiele apps in 2024 27 minuten per incident. De meest voorkomende oorzaken: coderegressie na deploy (34%), uitval van cloudprovider (22%), databaseproblemen (18%), configuratiefouten (15%) en DDoS-aanvallen (11%). Belangrijkste conclusie: de meeste storingen houden verband met wijzigingen die het team zelf heeft aangebracht, niet met externe factoren.

Het is belangrijk onderscheid te maken tussen crash (app valt aan clientzijde) en backend outage (server onbereikbaar). Crash wordt meestal verholpen met een hotfix van de clientcode, backend outage door infrastructuurwijzigingen of redeploy van de service. Te volgen metrics: voor de client — crash-free rate, voor de server — error rate 5xx en p95 latency. APM (Application Performance Monitoring) — Sentry, New Relic, Datadog — helpt snel het type storing te bepalen.

Severity-niveaus van incidenten: P0, P1, P2 en classificatiecriteria

Eenduidige severity-classificatie is de basis van snelle reactie. Zonder classificatie verspilt het team tijd aan discussie over „hoe urgent is dit” in plaats van te handelen. De klassieke schaal: P0 (critical) — app volledig onbereikbaar of gebruikersgegevens lekken, reactietijd — onmiddellijk; P1 (high) — kritieke functionaliteit werkt niet voor 50%+ gebruikers, reactietijd — 15 minuten; P2 (medium) — niet-kritieke functionaliteit onbereikbaar voor een deel van de gebruikers, reactietijd — 1 uur.

P0 vereist onmiddellijke escalatie: de dienstdoende ingenieur onderbreekt al het lopende werk en schakelt over op het incident. Als het probleem na 10 minuten niet is opgelost — wordt de tech lead ingeschakeld. Na 30 minuten — escalatie naar de engineering manager. Voor P0-incidenten is het toegestaan om alle processen te overtreden: hotfix zonder volledige code review, direct deployen naar productie, branch protection-regels negeren. Emergency override moet van tevoren op teamniveau zijn afgestemd.

Severity-tabel

SeverityBeschrijvingVoorbeeldReactietijd
P0App volledig onbereikbaar of datalekBlank screen bij starten, SQL-injectieOnmiddellijk
P1Kernfunctionaliteit werkt niet voor 50%+Betalingen worden niet verwerkt, inloggen werkt niet15 minuten
P2Niet-kritieke functionaliteit onbereikbaarAvatars worden niet geladen, trage zoekopdracht1 uur
P3Cosmetische bugs zonder gebruikersimpactLayout verschoven, typefout in tekstVolgende release

Het is uiterst belangrijk om severity niet naar beneden te vergissen. P0 + P1 geclassificeerd als P2 leiden tot vertraagde reactie en langere downtime. Regel: bij twijfel — kies P0. Over-classification is beter dan under-classification: liever een extra vergadering dan een uur hersteltijd verliezen.

Eerste 10 minuten: handelingsalgoritme bij een storing

Timer starts: vanaf het moment dat er een alert of een bericht van een gebruiker binnenkomt. De eerste 10 minuten zijn het belangrijkst. Algoritme: 1) confirm the issue — zorg dat het probleem echt is (geen vals alarm); 2) stop the bleeding — verminder onmiddellijk de impact (rollback, feature toggle, endpoint blokkeren); 3) communicate — schrijf op het algemene kanaal #incident de status: wat er is gebeurd, severity, wat er wordt gedaan. De eerste 10 minuten worden niet besteed aan analyse van de hoofdoorzaak.

Parallel aan het stoppen van het bloeden begint één ingenieur met de diagnose, een tweede met de communicatie. Communicatiekanalen: Slack #incident channel (voor het team), statuspagina (voor gebruikers), e-mail/SMS-escalatie (voor management). Elke 15 minuten — statusupdate met informatie: wat bekend is, wat er wordt gedaan, geschatte hersteltijd. Status page (StatuPage, Statuspal) toont uptime en incidentgeschiedenis voor externe gebruikers.

Hoe het bloeden te stoppen: rollback, feature toggle en hotfix

De eerste en belangrijkste regel: probeer het probleem niet op productie op te lossen. Als de nieuwe release de storing heeft veroorzaakt — rollback naar de vorige stabiele versie. Als de storing wordt veroorzaakt door een specifieke functie die is uitgeschakeld via een feature toggle — schakel de toggle gewoon uit. Als noch rollback noch toggle beschikbaar is — hotfix met minimale diff. Rollback — de veiligste optie, omdat we terugkeren naar een toestand die al werkte.

Feature toggle (aka feature flag) — een krachtig hulpmiddel voor stop-the-bleeding zonder deploy. Als de betalingsmodule is gecrasht maar is uitgeschakeld via een toggle — zien gebruikers simpelweg de betaalknop niet, geen foutscherm. Toggle vereist geen build, geen review van de store, werkt binnen enkele seconden. Elke kritieke functie moet onder een feature toggle vallen met uitschakelmogelijkheid op serverniveau (remote config). Feature flag — de eerste verdedigingslinie.

Als rollback onmogelijk is (bijvoorbeeld vanwege een onomkeerbare DB-migratie) en toggle niet is voorzien — het laatste middel: hotfix met minimale correctie. Hotfix wordt gemaakt vanaf de laatste releasetag, bevat alleen de regels die nodig zijn om de storing te verhelpen en doorloopt een fast-track deploy (zie artikel „Hotfix — spoedreparaties”). Golden rule: doe na stabilisatie altijd een root cause analysis, zelfs als de oorzaak voor de hand lijkt te liggen.

Diagnose van oorzaken: logs, metrics en alarmen

Na het stoppen van het bloeden (of parallel, als het aantal ingenieurs dit toelaat) begint de diagnose. De eerste bron — logs. Gecentraliseerde logboekregistratie (ELK, Grafana Loki, Datadog Logs) maakt het mogelijk fouten te vinden op timestamp, gebruikers-ID of request-ID. Belangrijk: logs moeten gestructureerd zijn (JSON) zodat grep snel werkt. Structured logging — een verplichte vereiste voor alle services.

De tweede bron — metrics. Grafana, Datadog, New Relic tonen wanneer er een piek in fouten was, op welke endpoints, met welke statuscodes. Vergelijking van metrics voor en na deploy helpt het probleem te lokaliseren tot een specifieke service of endpoint. RED metrics (Rate, Errors, Duration) — de monitoringsstandaard voor microservices.

De derde bron — distributed tracing. Jaeger, Zipkin, Datadog APM tonen het pad van een request door microservices en identificeren waar precies de vertraging of fout optrad. Tracing is vooral nuttig bij cascade-storingen, wanneer een fout in één service fouten veroorzaakt in alle afhankelijke services. Trace ID moet worden doorgegeven van de client naar alle backend-services.

bash
# Snel diagnosest voorbeeld met kubectl en logs
# Toon pods met fouten
kubectl get pods --field-selector=status.phase!=Running

# Controleer logs van gecrashte pod
kubectl logs --previous pod/auth-service-7f4b9c5d6-abc12

# Zoek fouten in service van de afgelopen 30 minuten
kubectl logs deployment/api-gateway --since=30m
  | grep "5[0-9][0-9]" | head -50

Belangrijk: probeer de oorzaak niet te diagnosticeren voordat het bloeden is gestopt. Als 50% van de gebruikers een crash ziet — eerst rollback, dan analyse. Uitzondering: als rollback langer zou duren dan een directe hotfix (bijvoorbeeld bij dataincompatibiliteit). In dat geval wordt hotfix onmiddellijk toegepast en wordt post-mortem na stabilisatie uitgevoerd. Diagnosis before fix — een gevaarlijk patroon dat de downtime verlengt.

Post-mortem: hoe incidenten te analyseren zonder schuldigen te zoeken

Post-mortem (ook wel incident review genoemd) — een gestructureerde analyse van het incident die 24-72 uur na de oplossing wordt uitgevoerd. Doel: begrijpen waarom de storing heeft plaatsgevonden, waarom monitoring en tests het niet vóór productie hebben opgemerkt en wat er in processen moet veranderen om herhaling te voorkomen. Blameless culture — het fundamentele principe: post-mortem bespreekt processen, tools en communicatie, niet de fouten van specifieke personen.

Structuur van het post-mortemdocument: timeline (chronologie van gebeurtenissen met timestamps), impact (getroffen gebruikers, duur, financiële verliezen), root cause (technische hoofdoorzaak), detection (hoe ontdekt, waarom niet eerder opgemerkt), response (wat is gedaan, wat had sneller gekund), action items (concrete taken met verantwoordelijken en deadlines). Action items moeten S.M.A.R.T. zijn: specific, measurable, assignable, realistic, time-bound.

Typische action items na een productiestoring: monitoring en alert toevoegen voor een metriek die stil was; testdekking uitbreiden voor de gemiste case; een pagina toevoegen aan de runbook met een stapsgewijs algoritme voor een vergelijkbare situatie; een teamtraining geven over het instrument dat verkeerd werd gebruikt. Elk action item is een concrete verandering die de kans op herhaling van het incident verkleint.

Veelgestelde vragen

Wat te doen als rollback onmogelijk is vanwege een DB-migratie?

Als de migratie onomkeerbaar is (drop column, rename table), helpt rollback via code niet. In dat geval — feature toggle voor de nieuwe functie, dan hotfix met correctie op het nieuwe schema. Database migration moet omkeerbaar zijn: elke migratie forward + backward.

Hoe onderscheid je P0 van P1 in 30 seconden?

P0 — app onbereikbaar of gegevens lekken. P1 — app werkt, maar een kernfunctie (betalingen, inloggen, content laden) werkt niet bij de meeste gebruikers. Test: als de gebruiker de app niet kan starten — P0. Als het wel kan, maar er werkt iets niet — P1.

Is er een aparte chat nodig voor elk incident?

Ja, voor elk P0/P1-incident wordt een apart Slack-kanaal #incident-YYYY-MM-DD-beschrijving aangemaakt. Dit isoleert de discussie van het algemene kanaal en bewaart de geschiedenis voor post-mortem. Incident channel wordt 7 dagen na afsluiting van het incident automatisch gearchiveerd.

Wanneer kan post-mortem achterwege blijven?

Post-mortem is verplicht voor alle P0-incidenten. Voor P1 — naar goeddunken van de tech lead, als het incident kort was (minder dan 5 minuten) en de oorzaak triviaal. Voor P2 en lager — is post-mortem niet vereist, een notitie in de ticket volstaat. Elke P0 wordt geanalyseerd, zelfs als de oorzaak al bekend is — het trainen van het proces is waardevoller dan de analyse zelf.

Wie neemt deel aan de post-mortem bijeenkomst?

De dienstdoende ingenieur (responder), tech lead, productmanager (voor impactbeoordeling), ingenieurs die aan aangrenzende systemen werkten. Facilitator — een aparte persoon die niet bij het incident betrokken was — leidt de bijeenkomst en bewaakt de blameless toon.

Samenvatting

  • Kritieke storing — P0/P1-incident dat onmiddellijke reactie en stoppen van het bloeden vereist
  • Stop the bleeding — rollback, feature toggle of hotfix in volgorde van prioriteit
  • Communication — statusupdates elke 15 minuten op een dedicated incidentkanaal
  • Runbook — vooraf opgestelde checklist voor elk type storing
  • Monitoring — RED metrics, structured logging en distributed tracing
  • Post-mortem — blameless analyse met action items binnen 24-72 uur
  • 80% van de storingen wordt veroorzaakt door wijzigingen in de afgelopen 48 uur — controleer de laatste deploy

We ontwikkelen een mobiele applicatie turnkey

IT Sectr creëert sinds 2017 iOS- en Android-applicaties voor startups en bedrijven. We adviseren u en stellen de beste oplossing voor.

Bespreek het project

Lees ook