Pular para conteúdo

RFC-011: Incident Response Process e SLAs

Campo Valor
Status Draft
Author Time de Tecnologia
Created 2026-02-05
Updated 2026-02-05
Reunião A ser agendada
Deciders Todo o time técnico

Status

🟡 Draft - RFC em elaboração, aguardando apresentação

Contexto e Problema

Processo de incident response documentado em docs/security/incident-response.md, mas falta:

  • SLAs de resposta por severidade
  • On-call rotation formal e handoff process
  • Postmortem template e cadence obrigatória
  • Escalation matrix clara
  • War room procedures para P0

Por que resolver isso agora?

  • Incidentes não têm SLA claro
  • Resposta inconsistente por severidade
  • On-call informal e ad-hoc
  • Postmortems não são sempre feitos
  • Falta clareza de quem escalar quando

Impacto de não resolver

  • SLAs não cumpridos
  • Clientes impactados por mais tempo
  • Burnout de on-call (24/7 sem rotação formal)
  • Aprendizados de incidentes perdidos
  • Repetição de mesmos incidentes

Documentação relacionada: - docs/security/incident-response.md - Processo atual - docs/observability/alerting.md - Severidade de alertas (P0-P3) - docs/runbooks/common-issues.md - Issues comuns - docs/observability/troubleshooting.md - Guias

Proposta de Solução

Incident response com SLAs formais, on-call rotation, e postmortems obrigatórios.

Níveis de Severidade e SLAs

P0 - Crítico: - Definição: Sistema completamente down, data loss, security breach - Impacto: Todos os usuários afetados, negócio parado - Response Time: < 15 minutos - Resolution Time: < 4 horas (best effort) - Comunicação: A cada 30 minutos - Notificação: PagerDuty/phone call + Slack #incidents + Email - On-call: Response imediato - Postmortem: Obrigatório (dentro de 48h)

Exemplos P0: - Site/API completamente down - Database corrompida/perdida - Security breach (dados vazados) - Payment processing down

P1 - Alto: - Definição: Feature crítica não funciona, performance muito degradada - Impacto: Maioria dos usuários afetados - Response Time: < 1 hora - Resolution Time: < 24 horas - Comunicação: A cada 2 horas - Notificação: Slack #incidents + Email - On-call: Response dentro de 1h - Postmortem: Obrigatório

Exemplos P1: - Login quebrado - Checkout não funciona - API latency > 5s - Alarmes críticos disparando

P2 - Médio: - Definição: Feature não-crítica com problema, performance degradada - Impacto: Alguns usuários afetados - Response Time: < 4 horas - Resolution Time: < 3 dias - Comunicação: Diária - Notificação: Slack #tech - Postmortem: Opcional (se aprendizados relevantes)

Exemplos P2: - Feature secundária quebrada - Emails atrasados - Dashboard com dados incorretos

P3 - Baixo: - Definição: Problema cosmético, performance sub-ótima - Impacto: Poucos usuários afetados - Response Time: Próximo dia útil - Resolution Time: < 2 semanas - Notificação: Ticket no sistema - Postmortem: Não necessário

Exemplos P3: - Typo em UI - Logs com warnings - Performance ligeiramente degradada

On-Call Rotation

Schedule: - Rotação: Semanal (Segunda 9h a Segunda 9h) - Horário: 24/7 - Backup on-call: Sempre disponível - Handoff: Segunda-feira 9h (reunião 15min)

Responsabilidades do on-call: - Responder a alertas conforme SLA - Investigar e resolver (ou escalar) - Documentar ações no incident log - Criar postmortem para P0/P1 - Manter #incidents atualizado - Handoff detalhado no fim da semana

Handoff checklist:

## On-call Handoff - [Data]

### Incidents Esta Semana
- P0: 0
- P1: 1 (login issue, resolvido)
- P2: 2 (em andamento)

### Ongoing Issues
- [ ] P2-123: Dashboard latency - investigando
- [ ] P2-124: Email queue backup - monitorando

### Upcoming
- Deploy agendado: Quarta 14h
- Maintenance window: Quinta 22h-23h

### Notes
- RDS teve spike de CPU na Terça (resolvido, causa identificada)
- Novo alarme configurado para X

### Questions?
[Qualquer dúvida para próximo on-call]

Compensação: - 1 dia extra de folga por semana on-call - Ou compensação financeira (a definir)

War Room (P0 Incidents)

Quando ativar: - P0 incident declarado - Múltiplos P1 simultâneos - Incident prolongado (> 2h)

Processo: 1. Declare war room no Slack (#war-room-[incident-id]) 2. Roles atribuídos: - Incident Commander: Coordena resposta, toma decisões - Tech Lead: Investiga causa raiz, implementa fix - Communications: Atualiza stakeholders - Scribe: Documenta timeline, ações, decisões 3. Status updates: A cada 15-30 min (P0) 4. All hands on deck: Time principal disponível 5. Parar tudo: Outros trabalhos pausados 6. Resolve: Aplicar fix, verificar 7. Close war room: Quando resolvido e estável 8. Postmortem: Agendar para próximos 1-2 dias

Escalation Matrix

Level 1: On-call engineer - Primeiro respondente - 15 min para acknowledging (P0) - Investiga e tenta resolver

Level 2: Tech Lead / Senior Dev - Escalation se on-call não resolve em: - P0: 30 min - P1: 2 horas - Toma ownership, coordena resposta

Level 3: CTO / Engineering Manager - Escalation se Level 2 não resolve em: - P0: 1 hora - P1: 4 horas - Decisões de negócio, comunicação externa

Level 4: CEO - Apenas para crises severas - Security breach - Data loss major - Legal implications

Postmortem Process

Obrigatório para: - P0 (sempre) - P1 (sempre) - P2 se aprendizados relevantes - Qualquer incident com customer impact > 100 users

Template:

# Postmortem: [Title]

**Date**: YYYY-MM-DD
**Severity**: P0 / P1 / P2
**Duration**: Xh Ym
**Impact**: X users affected, Y requests failed

## Summary
[2-3 sentences describing the incident]

## Timeline (UTC)
- 14:00 - Alert triggered: High error rate
- 14:05 - On-call acknowledged
- 14:15 - Root cause identified: Database connection pool exhausted
- 14:30 - Mitigation applied: Increased pool size
- 14:45 - Service recovered
- 15:00 - Incident closed

## Root Cause
[Detailed explanation of what caused the incident]

## Impact
- Users affected: ~1,000
- Duration: 45 minutes
- Failed requests: ~5,000
- Revenue impact: ~$500 (estimated)

## Detection
- How was it detected? CloudWatch alarm
- Could it be detected earlier? Yes (see Action Items)

## Response
- What went well?
  - Fast response time (5 min)
  - Clear communication
- What could be improved?
  - Took 15 min to identify root cause
  - Mitigation was manual

## Resolution
[How was it fixed?]

## Action Items
- [ ] Add monitoring for connection pool exhaustion (Owner: @alice, Due: Week)
- [ ] Implement auto-scaling for connection pool (Owner: @bob, Due: 2 weeks)
- [ ] Update runbook with this scenario (Owner: @charlie, Due: 3 days)

## Lessons Learned
1. Connection pool limits were too low for peak traffic
2. Alarm threshold was set too high
3. Runbook was outdated

## Prevention
[How do we prevent this from happening again?]

Review: - Postmortem reviewed em reunião com time - Action items tracked até completion - Blameless culture (focus em sistemas, não pessoas)

Communication

Internal (Slack #incidents):

🚨 **P0 INCIDENT** - API Down
Started: 14:00 UTC
Status: Investigating
Incident Commander: @alice
War Room: #war-room-20260205-001

Update 14:15: Root cause identified, applying fix
Update 14:30: Fix deployed, monitoring
Update 14:45: Resolved ✅

Postmortem: [link]

External (Status Page):

🔴 Major Outage - API Unavailable
We are investigating an issue affecting API availability.
All services are currently unavailable.

Updated 10 minutes ago

--

🟡 Monitoring - Issue Resolved
The issue has been resolved and services are operational.
We are monitoring for stability.

Updated 5 minutes ago

--

🟢 Operational - All Systems Normal
All systems are fully operational.

Updated 1 minute ago

Alternativas Consideradas

Opção 1: PagerDuty para on-call

Prós: - Ferramenta profissional - Escalation automático - Integrado com tudo

Contras: - Custo ($25/user/mês) - Complexidade adicional

Por que não escolhemos: Slack + CloudWatch + scripts é suficiente para começar. Podemos adicionar PagerDuty depois.

Opção 2: On-call 24/7 sem rotação

Prós: - Sem overhead de handoffs - Pessoa conhece sistema bem

Contras: - Burnout garantido - Não escala - Single point of failure

Por que não escolhemos: Insustentável e arriscado.

Análise de Impacto

Impacto Técnico

  • On-call rotation formal
  • Postmortems obrigatórios
  • War room procedures
  • Escalation automática

Impacto em Negócio

  • ✅ MTTR reduzido
  • ✅ SLAs claros e cumpridos
  • ✅ Aprendizados capturados
  • ✅ Time menos sobrecarregado
  • ⚠️ Overhead de postmortems (~2h/incident)

Riscos

Risco: On-call rotation com time pequeno é difícil

Mitigação: Backup on-call, compensação adequada, tech lead como fallback.

Plano de Implementação

Fase 1: SLAs (Semana 1)

  • Formalizar SLAs por severidade
  • Documentar escalation matrix
  • Comunicar ao time

Fase 2: On-call (Semana 2)

  • Setup rotation schedule
  • Define compensation
  • Primeiro handoff

Fase 3: Postmortems (Semana 3)

  • Criar template
  • Training em como escrever
  • Fazer postmortem de incident anterior

Fase 4: War Room (Semana 4)

  • Procedures documentadas
  • Roles definidos
  • Drill/simulação

Métricas de Sucesso

Após 1 mês: - ✅ SLAs cumpridos em 90%+ dos incidents - ✅ On-call rotation funcionando - ✅ Postmortems feitos para todos P0/P1

Após 3 meses: - ✅ MTTR reduzido em 40% - ✅ Action items de postmortems 80%+ completos - ✅ Zero burnout de on-call

Referências