Pular para conteúdo

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:

  1. Desktop/Laptop: Focados em produtividade pessoal (Ex: Windows, macOS, Linux).
  2. Mobile: Otimizados para toque e eficiência energética (Ex: Android, iOS).
  3. Servidores: Projetados para alta disponibilidade e rede (Ex: Ubuntu Server, Windows Server).
  4. 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.

# Ver qual é o nome do sistema operacional
uname -a

# Listar arquivos na pasta atual
ls -l

# Ver quanto de memória está livre
free -h

# Sair do terminal
exit

📝 Exercícios de Fixação

  1. Identificação: Qual SO você está usando neste momento? Ele é do tipo Desktop ou Mobile?
  2. Multitarefa: O que acontece se o SO não gerenciar bem a memória RAM ao abrir muitos programas?
  3. 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.

  1. Abra o bloco de notas.
  2. Liste: Nome do SO, Versão, Quantidade de RAM instalada e Processador.
  3. Salve como meu_sistema.txt e 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:

  1. Client HTTP (Postman/Insomnia): Para testar endpoints sem precisar de um frontend.
  2. Docker: Para "empacotar" seus serviços e garantir que rodem em qualquer máquina.
  3. Git/GitHub: Para versionamento e colaboração.
  4. 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:

  1. Instalar o Visual Studio Code (ou IntelliJ CE).
  2. Instalar o Postman ou a extensão Thunder Client no VS Code.
  3. Instalar o Docker Desktop.
  4. 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:

  1. Explique o conceito de "Escalabilidade Horizontal" no contexto de microsserviços.
  2. Qual a função de um API Gateway em um sistema distribuído?
  3. 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! 🏗️