Aula 06 - Entrega Contínua (CD) 🚚
Objetivo
Objetivo: Compreender a diferença entre Entrega Contínua (Continuous Delivery) e Implantação Contínua (Continuous Deployment), e entender como o código sai do repositório e chega ao ambiente de produção.
1. O que é Entrega Contínua (CD)? 📦
Se o CI é sobre integrar código, o CD é sobre entregar esse código.
Existem duas variações do CD:
- Continuous Delivery (Entrega Contínua): O pipeline automatiza todo o processo de deploy, mas a decisão final de "apertar o botão" e colocar no ar é humana. É o modelo mais comum em empresas grandes.
- Continuous Deployment (Implantação Contínua): Todo commit que passa nos testes de CI vai automaticamente para produção, sem intervenção humana. Exige altíssima confiança nos testes.
2. O Pipeline de CD 🏗️
O CD começa onde o CI termina. Após a geração do artefato:
graph LR
Artifact(["Artefato"]) --> Staging(["Ambiente de Homologação"])
Staging --> Manual(["Aprovação Humana"])
Manual --> Prod(["Ambiente de Produção"])
Automação de CD (Termynal) 💻
git push origin main Build... OK Testes... OK Aguardando aprovação para Produção... approve-deploy --env prod Deploying to AWS... Status: Site Online! 🚀
- Staging (Homologação): Um ambiente idêntico ao real onde o time testa a nova versão.
- Testes de Aceitação: Testes automatizados (end-to-end) que simulam o usuário final.
- Deploy em Produção: A atualização final do sistema para os usuários reais.
3. Estratégias de Deploy 🛡️
Para evitar que o sistema fique fora do ar durante a atualização, usamos estratégias como:
- Blue-Green Deployment: Você tem dois ambientes idênticos. O "Green" está no ar. Você sobe a versão nova no "Blue". Se tudo estiver ok, você vira a chave do roteador para o "Blue".
- Canary Release: Você libera a versão nova para apenas 5% dos usuários. Se não houver erros, libera para o restante.
- Rolling Update: Atualiza um servidor por vez, gradualmente, até que todos estejam na versão nova.
4. O papel da Infraestrutura como Código (IaC) 💻
No CD moderno, não configuramos servidores clicando em janelas. Usamos código para descrever a infraestrutura. Isso garante que o ambiente de teste seja exatamente igual ao de produção.
5. Prática Sugerida: Deploy no GitHub Pages 🚀
Um exemplo simples de CD é o que estamos fazendo neste curso!
Sempre que fazemos um push para a branch main, o GitHub Actions:
1. Gera o site (MkDocs).
2. Publica automaticamente na internet (GitHub Pages).
Este é um exemplo de Continuous Deployment.
6. Exercício de Fixação 🧠
- Explique a diferença entre Continuous Delivery e Continuous Deployment.
- O que é um ambiente de "Staging" e por que ele é crucial?
- Qual a vantagem da estratégia "Canary" em comparação com atualizar todos os servidores de uma vez?
Próxima Aula: Como garantimos que o código rode exatamente igual na minha máquina e no servidor? Vamos entrar no mundo dos Containers e Virtualização! 🐳