# Guia de Referência: DevOps, Entrega Contínua e Operação Confiável (Danilo Sato)

Este guia trata entrega e operação como parte do design do software. O objetivo é reduzir risco por automação, colaboração, infraestrutura reproduzível, testes, monitoramento e pipelines capazes de levar pequenas mudanças à produção com segurança.

---

## 1. Cultura e Fluxo DevOps

* **Colaboração:** Desenvolvimento e operações compartilham responsabilidade por entrega e estabilidade.
* **Pequenas mudanças:** Entregas frequentes reduzem o tamanho do lote e facilitam descobrir causas quando algo falha.
* **Automação:** Automatize tarefas repetitivas para reduzir erro humano e tornar o processo reproduzível.

---

## 2. Infraestrutura como Código

* **Versionamento:** Configuração de ambientes e servidores deve ser tratada como código versionado.
* **Reprodutibilidade:** O ambiente deve poder ser recriado sem depender de passos manuais ocultos.
* **Separação:** Mantenha responsabilidades de infraestrutura e aplicação organizadas e testáveis.

---

## 3. Integração Contínua

* **Build automatizado:** Cada alteração deve poder gerar artefatos de forma repetível.
* **Testes automatizados:** Use diferentes níveis de teste para reduzir risco e aumentar confiança.
* **Feedback rápido:** Falhas de build e integração precisam aparecer cedo para a equipe.

---

## 4. Pipeline de Entrega

* **Stages:** Organize lint, testes, build, segurança, empacotamento, deploy e verificações pós-deploy.
* **Gates:** Cada etapa deve ter critérios claros para promover ou bloquear uma versão.
* **Rollback:** Planeje como reverter ou avançar com correção quando uma versão falhar.
* **Banco de dados:** Trate migrações como parte da entrega e preserve compatibilidade durante rollout quando necessário.

---

## 5. Operação, Monitoramento e Segurança

* **Observabilidade:** Colete logs, métricas e sinais que permitam entender saúde e comportamento do sistema.
* **Alertas:** Alertas devem ser acionáveis e ligados a sintomas relevantes, não apenas ruído.
* **Segurança em camadas:** Proteja rede, aplicação, dependências, sistema operacional e pipeline.
* **Atualizações:** Acompanhe vulnerabilidades e mantenha processo seguro para atualizar componentes.

---

## 6. Como Usar com IA

Anexe este arquivo ao preparar deploy, CI/CD ou infraestrutura. Peça scripts versionáveis, estratégia de segredos, health checks, observabilidade, rollback e uma pipeline que possa ser executada repetidamente.

---

## Diretrizes de Execução para IA

Ao criar, revisar ou reestruturar uma aplicação, garanta:

1.  **Automatize o que for repetível** e elimine procedimentos manuais frágeis.
2.  **Versione aplicação e infraestrutura** e mantenha builds reproduzíveis.
3.  **Execute testes na pipeline** antes de promover artefatos.
4.  **Planeje rollback e migrações compatíveis** antes do deploy.
5.  **Inclua observabilidade e segurança** como requisitos de produção.


---

## Roteiro de Uso Operacional com IA

1. **Contextualize o projeto:** informe domínio, stack, arquitetura atual, restrições e objetivo da mudança.
2. **Selecione o recorte:** diga qual princípio/capítulo deste guia deve orientar a tarefa; não aplique tudo ao mesmo tempo.
3. **Peça diagnóstico antes do código:** a IA deve identificar sintomas, riscos, dependências e alternativas.
4. **Defina critérios de aceite:** comportamento, testes, acessibilidade, performance, segurança ou operação conforme o tema.
5. **Implemente incrementalmente:** mudanças pequenas, reversíveis e verificadas.
6. **Faça revisão final:** peça à IA que confronte a solução com este guia e liste desvios deliberados.

### Prompt de aplicação

```text
Use este guia como referência técnica para a tarefa abaixo.
Não copie regras mecanicamente. Primeiro diagnostique o problema e selecione apenas os princípios aplicáveis.
Mostre: (1) diagnóstico, (2) decisão, (3) implementação proposta, (4) testes/verificações, (5) trade-offs e (6) checklist final.

Contexto: [DESCREVA o sistema, stack, estado atual e cenário da mudança]
Objetivo: [DESCREVA o resultado esperado e o comportamento que deve existir]
Restrições: [DESCREVA limites de escopo, compatibilidade, segurança, prazo e o que não pode mudar]
```


### Como preencher os campos

- **Contexto:** descreva o tipo de sistema, stack/versões, arquitetura atual, onde a mudança acontece e o comportamento relevante já existente.
- **Objetivo:** descreva o resultado observável que deve existir ao final, não apenas a tecnologia que você quer usar.
- **Restrições:** informe o que não pode mudar, compatibilidade, prazo, segurança, acessibilidade, performance, legado, dependências e limites de escopo.

### Exemplo preenchido

```text
Contexto: Aplicação é publicada manualmente no Cloudflare/servidor e o processo depende de passos executados por uma pessoa.
Objetivo: Desenhar pipeline de build, testes e deploy reproduzível, com validação antes da publicação e possibilidade de rollback.
Restrições: Não expor segredos; deploy deve ser auditável; falha em teste bloqueia produção; mudanças de infraestrutura devem ser versionadas.
```
