Aula 01 - Introdução a Serviços e Microsserviços 🌐
Objetivo
Objetivo: Compreender a evolução das arquiteturas de software, diferenciar Monólitos de Microsserviços e entender o papel das APIs no ecossistema moderno de desenvolvimento.
1. O que são Serviços e Microsserviços? 🧩
No desenvolvimento moderno, um serviço é uma unidade funcional que entrega um valor específico (ex: processar um pagamento, enviar um e-mail).
🏛️ O Monólito
Historicamente, sistemas eram construídos como Monólitos: um único bloco de código onde tudo (interface, lógica, banco de dados) está fortemente acoplado.
- Vantagens: Simples de desenvolver inicialmente, fácil de testar localmente.
- Desvantagens: Difícil de escalar, uma falha em um módulo pode derrubar o sistema todo, barreira tecnológica (difícil mudar a linguagem após o início).
🏗️ Os Microsserviços
A arquitetura de Microsserviços decompõe a aplicação em serviços pequenos, independentes e focados em uma única responsabilidade (Single Responsibility Principle).
- Vantagens: Escalabilidade granular, resiliência (isolamento de falhas), liberdade tecnológica (cada serviço pode usar uma linguagem diferente).
- Desvantagens: Complexidade operacional, dificuldade em manter a consistência de dados, latência de rede.
Aula 01 - Fundamentos de Sistemas Operacionais 🖥️
Bem-vindo à nossa primeira aula! Hoje vamos entender o que é o "cérebro" do computador: o Sistema Operacional. Sem ele, o hardware seria apenas um amontoado de peças sem utilidade.
🧠 O que é um Sistema Operacional?
O Sistema Operacional (SO) é o conjunto de programas que gerencia recursos de hardware e fornece serviços aos programas de aplicativo. Ele atua como uma ponte entre o usuário e a máquina.
Conceito Chave
O SO é responsável por gerenciar a CPU, a memória RAM, o armazenamento (HD/SSD) e os dispositivos de entrada/saída (teclado, mouse, monitor).
📊 Visão Geral da Arquitetura
graph TD
User["👤 Usuário"] --> UI["🖥️ Interface (GUI/CLI)"]
UI --> App["📂 Aplicativos (Navegador, Word, Games)"]
App --> OS["⚙️ Sistema Operacional"]
OS --> HW["💻 Hardware (CPU, RAM, Disco)"]
style OS fill:#f96,stroke:#333,stroke-width:4px
🏗️ Tipos de Sistemas Operacionais
Existem diferentes tipos de SOs, cada um projetado para uma finalidade específica:
- Desktop/Laptop: Focados em produtividade pessoal (Ex: Windows, macOS, Linux).
- Mobile: Otimizados para toque e eficiência energética (Ex: Android, iOS).
- Servidores: Projetados para alta disponibilidade e rede (Ex: Ubuntu Server, Windows Server).
- Sistemas Embarcados: SOs simples "dentro" de dispositivos como micro-ondas ou painéis de carros.
⚙️ Funções Básicas
Abaixo, as principais tarefas que o seu computador realiza o tempo todo "por trás das cenas":
| Função | Descrição |
|---|---|
| Gerenciamento de Processos | Decide qual programa usa o processador e por quanto tempo. |
| Gerenciamento de Memória | Aloca espaço na RAM para que os programas possam rodar sem travar. |
| Sistema de Arquivos | Organiza como os dados são gravados e lidos no HD/SSD. |
| Interface com Usuário | Permite que você clique em ícones ou use o teclado. |
💻 Mão na Massa: Explorando o SO via Terminal
Embora a maioria use interfaces visuais, o terminal é a forma mais poderosa de interagir com o SO.
📝 Exercícios de Fixação
- Identificação: Qual SO você está usando neste momento? Ele é do tipo Desktop ou Mobile?
- Multitarefa: O que acontece se o SO não gerenciar bem a memória RAM ao abrir muitos programas?
- Conceitual: Explique com suas palavras a diferença entre Hardware e Software.
Dica do Professor
Tente abrir o Gerenciador de Tarefas (Ctrl + Shift + Esc no Windows) e observe as abas de Desempenho. Ali você vê o SO trabalhando em tempo real!
🚀 Mini-Projeto: Relatório de Sistema
Objetivo: Criar um documento simples identificando as características do seu computador atual.
- Abra o bloco de notas.
- Liste: Nome do SO, Versão, Quantidade de RAM instalada e Processador.
- Salve como
meu_sistema.txte guarde na sua pasta do curso.
3. A Economia das APIs 📡
API (Application Programming Interface) é a "ponte" que permite a comunicação entre esses serviços ou entre sistemas diferentes.
- REST: O padrão de mercado baseado no protocolo HTTP.
- Endpoints: URLs específicas que expõem funcionalidades (ex:
GET /produtos). - Contratos: Acordos sobre como os dados devem ser enviados e recebidos (geralmente via JSON).
4. Ferramentas Essenciais 🛠️
Para trabalhar com backend e APIs, você precisará de um "cinto de utilidades" moderno:
- Client HTTP (Postman/Insomnia): Para testar endpoints sem precisar de um frontend.
- Docker: Para "empacotar" seus serviços e garantir que rodem em qualquer máquina.
- Git/GitHub: Para versionamento e colaboração.
- Runtime: Node.js, Java (JDK) ou Python (dependendo do projeto).
5. Estrutura de um Projeto Moderno 📂
Diferente de um app mobile, um ecossistema de microsserviços geralmente é organizado em Mono-repos ou Multi-repos.
Visão de Pastas (Padrão Backend)
$ ls -R backend-master
auth-service/ (Nodejs)
├── src/
├── package.json
└── Dockerfile
catalog-service/ (Java/Spring)
├── src/
├── pom.xml
└── Dockerfile
api-gateway/ (Go)
└── main.go
6. Mini-Projeto: Configurando o Cinto de Utilidades 🚀
Sua missão é preparar o ambiente para o desenvolvimento backend:
- Instalar o Visual Studio Code (ou IntelliJ CE).
- Instalar o Postman ou a extensão Thunder Client no VS Code.
- Instalar o Docker Desktop.
- Garantir que o Git esteja configurado no seu terminal.
Veja o passo a passo detalhado na seção Configuração > Setup Backend.
7. Exercício de Fixação 🧠
Responda em seu caderno/arquivo de notas:
- Explique o conceito de "Escalabilidade Horizontal" no contexto de microsserviços.
- Qual a função de um API Gateway em um sistema distribuído?
- Por que a consistência de dados é um desafio maior em microsserviços do que em monólitos?
Próxima Aula: Vamos mergulhar na Arquitetura de Microsserviços e API Gateway! 🏗️