Suportabilidade—facilidade de diagnosticar, corrigir e evoluir um sistema—é frequentemente reflexão tardia. Dez escolhas de design que silenciosamente aumentam MTTR e tickets de suporte:
- Arquitetura monolítica / não-modular – Falha única cascateia; não dá para hot-swap componentes.
- Documentação ausente ou desatualizada – Conhecimento tribal vira risco de bus factor.
- APIs / UIs excessivamente complexas – Usuários misconfiguram; suporte afoga em tickets "como faço...".
- Tratamento de erro fraco – Logs genéricos "500 Internal Error"; sem correlation IDs.
- Lock-in proprietário – Peças single-source, sem expertise comunitária.
- Sem folga de capacidade – Escalar requer redesign, não mudança de config.
- Testes automatizados insuficientes – Regressões vão para prod; fire drills resultam.
- Mensagens de erro cripticas – "Error 0x8000FFFF" vs. "Disco cheio: /var/log (98 %)."
- Sem telemetria remota – Suporte voa às cegas; visitas on-site necessárias.
- Gaps de treinamento – Admins & usuários não treinados; tickets evitáveis disparam.
Checklist de Suportabilidade para Novos Designs
- ☐ Todo serviço expõe
/health, /metrics, logs estruturados (JSON, trace IDs).
- ☐ Config via env vars / feature flags—sem deploys de código para toggles.
- ☐ Runbooks linkados nos títulos de alerta.
- ☐ Deploy canary / blue-green obrigatório.
- ☐ Grafo de dependências documentado & version-pinned.
Invista 10 % mais tempo no design; economize 50 % dor operacional depois.