🚀 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:
- O jogo online estava travando. A empresa comprou mais 5 servidores na nuvem e dividiu os jogadores entre eles.
- 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).
- Como a Elasticidade da Nuvem evita esse desperdício de dinheiro para as lojas virtuais?
7. 📤 Instruções de Entrega (GitHub Desktop + Microsoft Teams)
- Faça o Commit: No GitHub Desktop, digite a mensagem (ex:
Finaliza Capítulo 15 DevOps) e clique em Commit to main. - 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:
- Horizontal (Mais máquinas iguais dividindo o trabalho).
- Vertical (Aumentou o poder da mesma máquina). Gabarito da Prática 2:
- 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.