Faz um tempo que não apareço por aqui, mas não quer dizer que abondei o blog e muito menos vocês! :]
Muito se fala no nosso dia-a-dia de SRE (Site Reliability Engineering / Engenharia de Confiabilidade de Sites). Uma prática que une e intensifica o trabalho conjunto entre desenvolvimento de software/aplicações e operações de tecnologia.
Só lembrando os pilares da prática de SRE:
Automação
Monitoramento e Observabilidade
Resposta a Incidentes
Planejamento de Capacidade
Mas afinal, quando temos os pilares implementados nas nossas entregas e nos sistemas que estão "rodando" já está tudo certo, não?!
Então, é aqui que moram as principais pegadinhas e vamos acabar descobrindo que algo não está correto em sua maioria, nos momentos de crises, problemas, war rooms, sistemas indisponíveis, reclamações de usuários e por aí vai.
Pensando nisso, podemos tangibilizar um pouco mais tudo isso e quebrar os pontos em um checklist completo.
Com este checklist você poderá avaliar como um todo o status de maturidade operacional da sua aplicação.
Vamos então ao checklist
Itens:
1. Observabilidade
-> Logs
- Todos os sistemas geram logs estruturados (JSON)?
- Existe padronização de níveis de log?
- Logs possuem correlação entre serviços?
- Logs sensíveis são mascarados?
- Existe retenção definida para logs?
- Logs estão centralizados?
-> Métricas
- Métricas de infraestrutura são coletadas?
- Métricas de aplicação são coletadas?
- Métricas de negócio são coletadas?
- Existe monitoramento de latência?
- Existe monitoramento de throughput?
- Existe monitoramento de erros?
-> Tracing
- Distributed Tracing está implementado?
- É possível rastrear uma requisição ponta a ponta?
- Existe correlação entre logs e traces?
- Serviços críticos possuem tracing habilitado?
2. SLI, SLO e Error Budget
-> SLI
- Os indicadores de confiabilidade estão definidos?
- Existem SLIs para disponibilidade?
- Existem SLIs para latência?
- Existem SLIs para taxa de erro?
-> SLO
- Todos os serviços críticos possuem SLO?
- Os SLOs são revisados periodicamente?
- Os SLOs refletem a experiência do usuário?
-> Error Budget
- Error Budget está definido?
- Existe política para consumo do budget?
- Deploys são restringidos quando o budget é consumido?
3. Monitoramento e Alertas
-> Alertas
- Alertas possuem contexto suficiente?
- Existe runbook associado ao alerta?
- Há separação entre alertas críticos e informativos?
- Os alertas são revisados periodicamente?
-> Redução de Ruído
- Há controle de alert fatigue?
- Existem alertas duplicados?
- Existe deduplicação?
-> Escalonamento
- Existe política de escalonamento?
- Existe plantão definido?
- Há cobertura 24x7 para sistemas críticos?
4. Gestão de Incidentes
-> Processo
- Existe processo formal de incidentes?
- Existem níveis de severidade?
- Os responsáveis são conhecidos?
-> Comunicação
- Existe canal de crise?
- Existe comunicação para stakeholders?
- Existe comunicação para clientes?
-> Pós-Mortem
- Todo incidente gera post mortem?
- O foco é aprendizado e não culpabilização?
- Existe acompanhamento das ações corretivas?
5. Confiabilidade da Aplicação
-> Resiliência
- Circuit Breaker implementado?
- Retry implementado?
- Timeout configurado?
- Bulkhead implementado?
-> Dependências
- Dependências externas são monitoradas?
- Há fallback para falhas externas?
- Existe degradação controlada?
6. Disponibilidade
-> Arquitetura
- Existe alta disponibilidade?
- Existe redundância?
- Existe balanceamento de carga?
-> Infraestrutura
- Ambientes são distribuídos?
- Existem múltiplas zonas?
- Existe estratégia Multi-AZ?
7. Deploy e Entrega
-> CI/CD
- Deploy é automatizado?
- Existe rollback automatizado?
- Existe validação automática?
-> Estratégias
- Blue/Green implementado?
- Canary Release implementado?
- Feature Flags utilizadas?
8. Segurança Operacional
-> Controle
- MFA habilitado?
- Menor privilégio aplicado?
- Credenciais rotacionadas?
-> Auditoria
- Logs de auditoria são mantidos?
- Existe rastreabilidade de alterações?
- Mudanças críticas são registradas?
9. Backup e Recuperação
-> Backup
- Existe política de backup?
- Backups são automatizados?
- Backups são monitorados?
-> Disaster Recovery
- Existe plano DR?
- Existe RTO definido?
- Existe RPO definido?
- DR é testado regularmente?
10. Capacidade e Performance
-> Capacidade
- Existe Capacity Planning?
- Crescimento é monitorado?
- Existe previsão de demanda?
-> Performance
- Testes de carga são executados?
- Testes de stress são executados?
- Existe baseline de performance?
11. Automação Operacional
-> Runbooks
- Existe runbook para incidentes críticos?
- Runbooks são atualizados?
- Runbooks são testados?
-> Automação
- Existe auto-remediação?
- Existe automação de tarefas repetitivas?
- Existe automação de provisionamento?
12. Cultura SRE
-> Colaboração
- Existe parceria entre Dev e Ops?
- Times compartilham responsabilidades?
- Existe cultura de melhoria contínua?
-> Indicadores
- MTTR é monitorado?
- MTTD é monitorado?
- MTBF é monitorado?
-> Aprendizado
- Lições aprendidas são documentadas?
- Existe acompanhamento das melhorias?
- Existe roadmap de confiabilidade?
Ok, preenchemos todo checklist e já sabemos o que temos e o que não temos.
Hummmm ... Que tal agora gerar um socre de maturidade SRE?
Aqui pode ser uma "cereja" do bolo, principalmente para tirarmos uma foto inicial e pós implementação do trabalho de correção e adequação do que ainda precisamos ter ou até mesmo, aquela foto "bonita" de que não tínhamos nada e conseguimos evoluir para algum nível de maturidade.
Score de Maturidade SRE
Pontuação:
Chegou até aqui? Então tenho um bônus para você!
Preparei um Checklist de SRE em Excel para facilitar a avaliação da maturidade da sua aplicação.
É simples: marque "Sim" para os itens já implementados e "Não" para aqueles que ainda precisam de atenção. Ao final, a planilha calculará automaticamente sua pontuação e exibirá o nível de maturidade correspondente, ajudando a identificar oportunidades de evolução na sua operação.
Faça o download, preencha o checklist e descubra em que estágio de maturidade SRE sua aplicação se encontra. 🚀
Obrigado pessoal e até a próxima!
:wq!
