🚀 Capítulo 15: Escalabilidade e Elasticidade (Tema: Hulk)

NOTE

Este capítulo utiliza a temática de Hulk para explicar a Escalabilidade. Quando o estresse (acessos) aumenta, o sistema fica gigante e forte; quando a calmaria volta, ele encolhe para economizar energia!


1. 🎯 Objetivo da Aula

Compreender a diferença entre Escalabilidade Vertical e Horizontal, e entender como a Elasticidade permite que o sistema cresça e encolha automaticamente na nuvem.

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

O cientista Bruce Banner é um humano comum. Ele cabe em roupas normais e consome pouca energia.

  • Mas se ele ficar nervoso ou sob estresse extremo, ele se transforma no Hulk!
  • Ele fica gigante, ganha uma força absurda e aguenta qualquer impacto.
  • Quando o perigo passa e ele se acalma, ele encolhe de volta e vira o Bruce Banner novamente.

No desenvolvimento de software, o “estresse” do sistema são os acessos dos usuários.

  • Se o seu site recebe 100 acessos por dia, ele pode ser pequeno e barato (Bruce Banner).
  • Se de repente houver uma promoção e entrarem 100.000 pessoas ao mesmo tempo, o sistema precisa virar o Hulk para não cair! Seu desafio é programar o DNA do seu sistema para ele saber a hora de virar o Hulk!

🧠 Fundamentos: A Teoria Traduzida

Existem duas formas de fazer um sistema crescer para aguentar mais peso:

🏋️ 1. Escalabilidade Vertical (Dar anabolizante para o Bruce Banner):

  • O que é: Você mantém o mesmo servidor, mas aumenta o poder dele (coloca mais memória RAM, processador melhor ou SSD maior).
  • O Problema: Tem um limite físico. Chega uma hora que não existe no mundo um pente de memória maior para colocar naquela máquina. E para fazer o upgrade, geralmente você precisa desligar o servidor por alguns minutos.

👥 2. Escalabilidade Horizontal (Criar um exército de Bruce Banners):

  • O que é: Você não mexe no servidor atual. Você apenas compra mais servidores iguais e coloca lado a lado para dividirem o trabalho.
  • A Vantagem: Não tem limite! Você pode colocar 2, 10 ou 1.000 servidores trabalhando juntos. E você não precisa desligar o sistema para adicionar mais um.

🍃 Elasticidade (O Poder do Hulk):

É a capacidade da nuvem de fazer a Escalabilidade Horizontal sozinha e no piloto automático (Auto Scaling).

  • O sistema monitora: “Se o uso de CPU de todos os servidores passar de 70%, crie mais 2 servidores”.
  • “Se o uso cair para menos de 30%, apague 2 servidores para economizar dinheiro”.

4. 📖 Exemplo Guiado: O Guarda de Trânsito (Load Balancer)

Se você tem 5 servidores rodando o seu site ao mesmo tempo na Escalabilidade Horizontal, como o usuário da internet sabe em qual deles entrar? Ele não sabe! Na frente dos servidores, nós colocamos um Load Balancer (Balanceador de Carga).

  • O usuário acessa o link do site.
  • O Load Balancer (o guarda de trânsito) recebe a pessoa e diz: “Você, vá para o Servidor 1. Você, vá para o Servidor 2”.
  • Ele distribui os clientes igualmente para ninguém ficar sobrecarregado.

5. 🛠️ Prática Obrigatória 1: Vertical ou Horizontal?

Diga qual tipo de escalabilidade (Vertical ou Horizontal) foi usado em cada situação:

  1. O jogo online estava travando. A empresa comprou mais 5 servidores na nuvem e dividiu os jogadores entre eles.
  2. O servidor de banco de dados estava lento. O técnico desligou a máquina às 2h da madrugada, colocou mais 32 GB de memória RAM física nela e ligou novamente.

6. 🛠️ Prática Obrigatória 2: A Vantagem da Elasticidade

Uma loja física no shopping precisa ter espaço para o movimento do Natal o ano inteiro (ela paga o mesmo aluguel caro do espaço mesmo em meses vazios).

  1. Como a Elasticidade da Nuvem evita esse desperdício de dinheiro para as lojas virtuais?

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

  1. Faça o Commit: No GitHub Desktop, digite a mensagem (ex: Finaliza Capítulo 15 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_15_escalabilidade.md
│   └── codigos/
│       └── cap15/
│           └── autoscaling_config.json

💡 Checkpoint de Lógica

Para que a Escalabilidade Horizontal funcione, o seu código não pode salvar arquivos (como fotos de perfil) dentro do próprio servidor. Lembre-se do Capítulo 08: use o S3 para que todos os servidores busquem os arquivos no mesmo lugar!

10. 🔥 Desafio de Fixação

Pesquise o que significa o termo High Availability (Alta Disponibilidade) na computação em nuvem.

🔑 Gabarito de Código/Fórmulas

Gabarito da Prática 1:

  1. Horizontal (Mais máquinas iguais dividindo o trabalho).
  2. Vertical (Aumentou o poder da mesma máquina). Gabarito da Prática 2:
  3. Porque a loja virtual só paga pelos servidores extras durante os dias de muito movimento (como a Black Friday). Quando o movimento passa, o sistema apaga os servidores e a conta volta a ficar barata.

Capitulo Anterior | Proximo Capitulo