🚀 Capítulo 04: Entrega Contínua (CD) (Tema: Flash)

NOTE

Este capítulo utiliza a temática de Flash para explicar a Entrega Contínua. Entregar o software na velocidade da luz exige processos automáticos e seguros!


1. 🎯 Objetivo da Aula

Compreender os conceitos de Entrega Contínua (Continuous Delivery) e Implantação Contínua (Continuous Deployment), entendendo a diferença entre eles e como automatizar o processo de deploy.

2. 🏢 O Cenário Prático (Seu Desafio)

O herói Flash consegue correr na velocidade da luz. Se você pedir uma pizza para ele, ele vai à pizzaria, pega a pizza e entrega na sua porta antes mesmo de você desligar o telefone!

  • Não há trânsito para ele.
  • Não há atrasos.

No desenvolvimento de software, a CD é o nosso superpoder de velocidade. Depois que o código passou pelos testes automatizados (CI), ele precisa ir para o servidor de produção o mais rápido possível para o cliente usar.

  • O Jeito Antigo: O programador gera um arquivo, envia por FTP, desliga o servidor, copia o arquivo, liga o servidor e reza para funcionar. Demora horas!
  • O Jeito Flash (CD): Um robô pega o código testado e o coloca no servidor em segundos! Seu desafio é dominar a velocidade do Flash na entrega do seu código!

3. 🧠 Fundamentos: A Teoria Traduzida

A sigla CD pode significar duas coisas ligeiramente diferentes na prática:

🚚 1. Continuous Delivery (Entrega Contínua):

O processo de build e teste é 100% automatizado. O software está sempre pronto para ir para produção. Mas a decisão final de colocar no ar ainda depende de um humano apertar um botão (aprovação manual).

  • Analogia: O Flash deixa a pizza quentinha na mesa, mas espera você dizer “Pode servir”.

🚀 2. Continuous Deployment (Implantação Contínua):

Vai um passo além. Se o código passou nos testes automatizados, ele vai direto para produção automaticamente, sem nenhuma intervenção humana.

  • Analogia: O Flash já coloca a pizza direto na sua boca!

4. 📖 Exemplo Guiado: O Pipeline Completo (CI/CD)

O fluxo completo de uma fábrica de software moderna funciona assim:

flowchart LR
    A["Código"] --> B["Testes (CI)"]
    B -- Passou --> C["Gerar Pacote"]
    C --> D["Deploy (CD)"]
    style A fill:#ccf,stroke:#333
    style B fill:#ccf,stroke:#333
    style C fill:#ccf,stroke:#333
    style D fill:#ccf,stroke:#333

Se o teste falhar no passo B, o pipeline para e nada vai para o servidor (Passo D). Isso garante velocidade com segurança!


5. 🛠️ Prática Obrigatória 1: Delivery ou Deployment?

Diga se a situação descreve Continuous Delivery ou Continuous Deployment:

  1. A empresa de jogos testa as atualizações automaticamente. Toda sexta-feira, o diretor clica em um botão e a atualização vai para todos os jogadores do mundo.
  2. O aplicativo de chat atualiza o servidor automaticamente 15 vezes por dia. Toda vez que um programador termina uma correção e o robô aprova, a correção vai direto para o ar.

6. 🛠️ Prática Obrigatória 2: O Risco da Velocidade

Se na Implantação Contínua (Continuous Deployment) o código vai para o ar sozinho sem nenhum humano revisar antes de apertar o botão:

  1. O que acontece se os programadores esquecerem de escrever bons testes automatizados?
  2. Por que a CD exige que a CI (testes) seja perfeita?

7. 📤 Instruções de Entrega (GitHub Desktop + Microsoft Teams)

  1. Faça o Commit: No GitHub Desktop, digite a mensagem (ex: Finaliza Capítulo 04 DevOps) e clique em Commit to main.
  2. Envie para a Nuvem (Push): Clique em Push origin.

8. 📂 Estrutura de Pastas

mod_13_devops_e_cloud/
├── capitulos/
│   ├── capitulo_04_cd.md
│   └── codigos/
│       └── cap04/
│           └── pipeline_config.txt

💡 Checkpoint de Lógica

Para fazer CD sem derrubar o site para os usuários, usamos técnicas como Blue-Green Deployment (ter dois servidores idênticos: um atende os clientes e o outro recebe a atualização; depois trocamos as funções deles de forma invisível para o usuário).

10. 🔥 Desafio de Fixação

Pesquise sobre o que significa o termo Rollback em um pipeline de CD (Dica: Pense no Flash voltando no tempo).

🔑 Gabarito de Código/Fórmulas

Gabarito da Prática 1:

  1. Continuous Delivery (Há uma pausa para decisão humana).
  2. Continuous Deployment (Vai direto sem intervenção humana). Gabarito da Prática 2:
  3. Códigos com bugs vão direto para o cliente final sem ninguém ver!
  4. Porque os testes automatizados são a única barreira de proteção (o escudo) antes do código chegar ao cliente. Se o escudo falhar, o cliente sofre as consequências.

Capitulo Anterior | Proximo Capitulo