🚀 Capítulo 05: Arquitetura de Software (Tema: Minecraft)

NOTE

Este capítulo utiliza a temática de Minecraft para explicar a Arquitetura de Software. Antes de colocar os blocos, planeje a estrutura para que o seu castelo gigante não desabe quando você tentar mudar uma parede!


1. 🎯 Objetivo da Aula

Compreender o conceito de Arquitetura de Software, a diferença entre Arquitetura e Design, e os principais estilos arquiteturais (Monólito e Microsserviços).

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

No jogo Minecraft, você pode construir qualquer coisa.

  • Se você quiser construir uma cabana pequena, você simplesmente vai colocando os blocos de madeira e em 2 minutos está pronta.
  • Mas se você quiser construir um Castelo Gigante, com pontes levadiças, fossos e dezenas de salas, você não pode simplesmente começar a empilhar blocos.

Se você construir o castelo inteiro como um único bloco de pedra maciço (Um Monólito) e depois decidir que quer mudar o encanamento de redstone que passa no meio dele, você terá que quebrar metade do castelo! Se você construir em módulos separados (Microsserviços), onde a torre de guarda é independente da cozinha, você pode reformar a cozinha sem medo de a torre cair! No software é a mesma coisa: a arquitetura define as grandes decisões que são difíceis de mudar depois. Seu desafio é ser o arquiteto do castelo!


🧠 Fundamentos: A Teoria Traduzida

🏛️ O que é Arquitetura de Software?

São as decisões de alto nível sobre a estrutura do sistema. Envolve a escolha das tecnologias, como os componentes se comunicam e as regras que o sistema deve seguir.

🧱 Monólito vs. Microsserviços:

1. Arquitetura Monolítica (O Bloco Único):

Todo o sistema (banco de dados, login, vendas, relatórios) é construído como um único e gigantesco bloco de código.

  • Vantagem: Muito fácil e rápido de começar a construir. Ótimo para equipes pequenas.
  • Desvantagem: Se o sistema crescer demais, ele fica pesado. Se der um erro na parte de relatórios, o site inteiro de vendas pode cair!

2. Arquitetura de Microsserviços (As Casinhas Separadas):

O sistema é dividido em pequenos programas independentes que conversam entre si pela rede. Um programa cuida só do Login, outro só das Vendas, outro só do Estoque.

  • Vantagem: Se o sistema de estoque cair, os clientes ainda conseguem fazer login e navegar no site. É muito fácil de escalar!
  • Desvantagem: Muito mais complexo de planejar, testar e manter. Exige uma equipe maior e mais madura.

4. 📖 Exemplo Guiado: Arquitetura vs. Design

Muitas pessoas confundem esses dois termos:

  • Arquitetura (O Arquiteto): Foca nas grandes decisões. Ex: “Vamos usar Microsserviços e banco de dados SQL”. (Difícil e caro de mudar depois).
  • Design (O Decorador): Foca nos detalhes internos. Ex: “Essa função aqui vai usar um loop do tipo for ou while?“. (Fácil de mudar sem quebrar o resto do sistema).

5. 🛠️ Prática Obrigatória 1: Escolhendo a Arquitetura

Qual arquitetura (Monólito ou Microsserviços) você recomendaria para as seguintes empresas? Justifique.

  1. Uma pequena padaria de bairro que quer um site simples apenas para mostrar o cardápio e receber pedidos por WhatsApp.
  2. A empresa Netflix, que possui milhões de usuários assistindo a vídeos ao mesmo tempo no mundo todo e precisa que o sistema de streaming continue funcionando mesmo se a parte de cobrança der problema.

6. 🛠️ Prática Obrigatória 2: O Custo do Erro Arquitetural

Imagine que você escolheu guardar todas as fotos dos usuários dentro de um banco de dados relacional comum. O sistema cresceu e agora o banco de dados está gigante e travando. Mudar essa decisão agora vai exigir reescrever metade do sistema.

  1. Por que as decisões de arquitetura devem ser tomadas com muito cuidado no início do projeto?

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

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

8. 📂 Estrutura de Pastas

extra_engenharia_de_software/
├── capitulos/
│   ├── capitulo_05_arquitetura.md
│   └── codigos/
│       └── cap05/
│           └── diagrama_arquitetura.txt

💡 Checkpoint de Lógica

Não existe “arquitetura perfeita”, existe a arquitetura certa para o problema certo. Usar microsserviços para um projeto simples é desperdício de tempo e dinheiro!

10. 🔥 Desafio de Fixação

Pesquise o que significa o termo API Gateway no contexto de uma arquitetura de microsserviços.

🔑 Gabarito de Código/Fórmulas

Gabarito da Prática 1:

  1. Monólito. Por ser um sistema simples e com poucos acessos, um monólito é mais barato, mais rápido de construir e atende perfeitamente à necessidade da padaria sem adicionar complexidade desnecessária.
  2. Microsserviços. Como a escala é global e o sistema não pode cair de jeito nenhum, dividir em microsserviços permite que a Netflix atualize partes do sistema de forma independente e garanta alta disponibilidade. Gabarito da Prática 2:
  3. Porque as decisões de arquitetura são as mais difíceis e caras de serem alteradas depois que o sistema está construído. Uma escolha errada no início pode custar meses de trabalho para ser corrigida no futuro.

Capitulo Anterior | Proximo Capitulo