Sobre
Turmas
Projetos
Time
Materiais
Artigos
Aulas
PT
EN
Materiais
Materiais
· Backend
7. Modelagem e Arquitetura de Software
Como pensar e implementar um sistema
14 min de leitura
→
Anterior
6. Outros Estilos de API
Próximo
8. Infraestrutura de APIs
→
Nesta página
7.0. Visão Geral: Modelagem e Arquitetura
O que você vai aprender neste módulo?
As Fundações
A Estrutura Macro (Deployment)
A Estrutura Micro (Código)
A Comunicação (Documentação)
Por que isso é importante?
7.1. Requisitos funcionais e não funcionais
Requisitos Funcionais (O "O Quê")
Requisitos Não Funcionais (O "Como")
A Sopa de Letrinhas: SLA, SLO e SLI
Trade-offs: O Teorema CAP
7.2. Limites, contexto e responsabilidades
O que é um Bounded Context?
Exemplo: A entidade "Cliente"
Mapeamento de Contextos (Patterns)
Anti-Corruption Layer (ACL)
7.3. Coesão e acoplamento
Acoplamento (Coupling) -> QUEREMOS BAIXO
Tipos de Acoplamento (Do pior para o melhor)
Exemplo de Refatoração: Do Alto para o Baixo Acoplamento
Coesão (Cohesion) -> QUEREMOS ALTA
Exemplo de Baixa Coesão (God Class)
O Conceito de "Connascence" (Conascença)
7.4. Monólitos, monólitos modulares e microserviços
Monólito (O Clássico)
Microserviços (A Distribuição)
O Pior dos Mundos: O Monólito Distribuído
Estratégia de Migração: Strangler Fig Pattern
Checklist: Você é alto o suficiente para andar neste brinquedo?
7.5. Comunicação síncrona e assíncrona
Comunicação Síncrona (Request/Response)
Comunicação Assíncrona (Event-Driven)
Modos de Falha e Backpressure
Pattern: Transactional Outbox
7.6. Padrões arquiteturais em APIs
MVC (Model-View-Controller) vs Clean Architecture
Clean Architecture: A Regra da Dependência
Exemplo de Estrutura de Pastas (Python)
O Fluxo de Controle vs Fluxo de Dependência
7.7. Modelos de documentação arquitetural (C4)
Nível 1: Context (O Mapa Mundi)
Nível 2: Container (O Mapa da Cidade)
Nível 3: Component (O Mapa do Bairro)
Nível 4: Code (A Planta da Casa)
Docs as Code (Structurizr)
7.8. Registros de decisão arquitetural (ADR)
O Ciclo de Vida de um ADR
Modelo de um ADR (Template Completo)