Monolito, Arquitetura em Camadas e Microsserviços

📌 Introdução

A evolução das arquiteturas de software mostra como as empresas buscam cada vez mais flexibilidade, escalabilidade e agilidade.
Do modelo monolítico às arquiteturas em camadas e, mais recentemente, aos microsserviços, a ideia é clara: dividir para conquistar, ganhando autonomia de equipes e resiliência em produção.


🧱 Monólito

Um monólito é uma aplicação única, onde todas as funções estão integradas em um único pacote.


🗂️ Arquitetura em Camadas

A arquitetura em camadas (como MVC ou hexagonal) surge para organizar melhor um monólito.
Ela separa responsabilidades em camadas distintas (ex.: interface, regras de negócio e dados), mas ainda mantém um único deploy.


🧩 Microsserviços

Os microsserviços levam a modularidade ao extremo: cada serviço é independente, com sua própria lógica, ciclo de vida e, muitas vezes, até banco de dados.
Eles se comunicam entre si via APIs ou mensageria e permitem que times diferentes trabalhem de forma autônoma.

🌟 Características principais

⚠️ Desafios a considerar


🎬 Exemplo prático (sistema de streaming)

Um sistema de streaming pode ser dividido em microsserviços como:

Esse desenho permite que cada serviço evolua de forma independente, trazendo agilidade e resiliência.


🌐 Mercado e Tendências

A adoção de microsserviços reflete não só uma decisão técnica, mas também uma mudança cultural.


✅ Conclusão

Microsserviços não são a solução mágica para todos os cenários. Eles funcionam bem quando existe:

Para contextos menores ou MVPs, muitas vezes é mais eficiente começar com um monólito bem estruturado e evoluir gradualmente.
O segredo está em alinhar estratégia de negócio + maturidade técnica.


Visão Geral


1. Monólito

O que é

Uma aplicação única, com todas as funcionalidades, que roda e é implantada como um bloco só.

Quando usar

Vantagens

Desafios

Boas práticas


2. Arquitetura em Camadas (Layered)

Estilo de organização interna que pode ser aplicado em monólitos ou microsserviços.

Camadas típicas

  1. Apresentação (UI/API): controllers, validações, DTOs.
  2. Aplicação/Serviços: orquestra casos de uso.
  3. Domínio (Core): entidades, regras de negócio, policies.
  4. Infraestrutura: persistência, mensageria, APIs externas.

Benefícios

Cuidados


3. Microsserviços

O que é

Conjunto de serviços pequenos, autônomos, donos do próprio banco e alinhados a subdomínios de negócio.

Quando faz sentido

Vantagens

Desafios

Boas práticas


4. Comparativo

Critério Monólito Camadas (estilo) Microsserviços
Time-to-market inicial Excelente n/a Bom
Complexidade Baixa Alta
Escalabilidade Fraca (escala tudo) Forte
Deploy independente Não Sim
Consistência Forte (ACID) Eventual (Sagas)
Equipe Pequena Média/Grande
Custos iniciais Baixos Altos
Evolução longo prazo Pode degradar Alta

5. Estratégias de Migração


6. Exemplo Prático (Streaming)

Monólito inicial

Microsserviços candidatos

Fluxo

Ingestão → evento “ArquivoDisponível” → Transcodificação → evento “VersõesProntas” → Catálogo → BFF → CDN/Entrega → Upload Social.


7. Anti-padrões


8. Checklists

Manter Monólito

Migrar para Microsserviços


Conclusão

3. Banco de dados com Microsserviços

🗄️ SQL (Relacional)

Os bancos relacionais, como PostgreSQL, MySQL e SQL Server, são ideais para sistemas que exigem integridade e transações seguras.

Características:

Quando usar:


🧠 NoSQL (Não Relacional)

Bancos como MongoDB, Cassandra e Redis oferecem flexibilidade e escalam facilmente em ambientes distribuídos.

Características:

Quando usar:


2. Teorema CAP

O Teorema CAP define três propriedades que todo sistema distribuído tenta equilibrar:

Elemento Descrição
🧭 Consistência (C) Todos os nós veem os mesmos dados ao mesmo tempo.
⚙️ Disponibilidade (A) O sistema sempre responde, mesmo em falhas.
🌍 Tolerância a Partições (P) O sistema continua operando mesmo que partes falhem.

💡 Nenhum sistema distribuído consegue garantir as três propriedades simultaneamente.
Por isso:


3. Estratégias em Microsserviços

🔹 Database per Service

Cada microsserviço deve ter seu próprio banco, evitando compartilhamento entre domínios.
Isso simplifica deploys, escalabilidade e manutenção.


🔹 CQRS (Command Query Responsibility Segregation)

Separa as operações de escrita (commands) das de leitura (queries).
Essa abordagem melhora o desempenho e permite otimizações específicas para cada tipo de operação.


🔹 Event Sourcing

Cada mudança de estado é registrada como um evento imutável.
A aplicação pode reconstruir seu estado a partir desses eventos, garantindo rastreabilidade e histórico.


🔹 Sagas

Coordenam transações distribuídas usando eventos assíncronos em vez de bloqueios.
Cada etapa é compensada caso algo falhe, garantindo consistência eventual sem 2PC.


4. Exemplos Práticos

🧾 Exemplo 1 — E-commerce

➡️ Cada módulo é autônomo, promovendo escalabilidade e consistência eventual.


🎬 Exemplo 2 — Plataforma de Streaming

➡️ Essa estrutura garante personalização e performance em alto volume de acessos.


5. Mercado e Tendências

A adoção de microsserviços cresce entre grandes empresas, impulsionada pela necessidade de agilidade, escalabilidade e independência de equipes.

🚀 Adoção Corporativa

⚙️ Persistência Poliglota (Polyglot Persistence)

Cada serviço pode escolher o banco mais adequado ao seu contexto:

🧰 Plataformas em alta

🤖 O Futuro

Microsserviços tendem a se integrar a:


Conclusão

Integrar bancos de dados em microsserviços é equilibrar autonomia com consistência.
Cada serviço deve possuir seus próprios dados, comunicar-se por eventos e adotar padrões como CQRS, Sagas e Event Sourcing.

Benefícios:

“Microsserviços não são apenas sobre código — são sobre dados bem distribuídos e controlados.”

A comunicação entre microsserviços é um dos pilares essenciais para o funcionamento de arquiteturas distribuídas.
Ela define como os serviços conversam entre si, como trocam informações, como reagem a eventos e como mantêm a consistência entre domínios diferentes.

Existem três modelos principais:

Cada modelo tem vantagens, desvantagens e cenários ideais.


1. Comunicação Síncrona

O que é

O serviço cliente faz uma requisição e espera pela resposta do servidor.
É o modelo clássico de comunicação — simples, direto e previsível.

Os dois protocolos mais comuns são:


🧩 REST / HTTP

Vantagens

Desvantagens

Exemplo (visão conceitual)

Cliente → GET /api/produtos → Servidor

⚡ gRPC

O que é

Tecnologia criada pelo Google para comunicações extremamente rápidas, baseada em:

Vantagens

Desvantagens


2. Comunicação Assíncrona

O que é

O cliente envia uma mensagem e não espera resposta imediata.
O servidor processa quando puder, usando filas ou streams.

Tecnologias mais comuns:


Vantagens

Desvantagens


Exemplo (conceitual)

Serviço A → envia mensagem → Fila → Serviço B processa quando possível


3. Comunicação via API Gateway

O que é

Um único ponto de entrada (gateway) que recebe, roteia e controla as requisições para os microsserviços internos.

Exemplo de gateways:


Vantagens

Desvantagens


4. Mercado, Cases e Tendências

A comunicação entre microsserviços está evoluindo rapidamente.
As empresas buscam modelos mais rápidos, resilientes e observáveis.

🔹 1. Hibridização — REST + Mensageria

A tendência mais forte hoje:

Exemplo prático:


🔹 2. Gateways inteligentes

Gateways modernos fazem muito mais do que roteamento:

Eles se tornaram parte essencial da camada de comunicação.


🔹 3. Observabilidade e Tracing Distribuído

Com dezenas de microsserviços conversando, rastrear chamadas é obrigatório.

Ferramentas:

Objetivos:


🔹 4. Crescimento do gRPC

Cada vez mais empresas usam gRPC para comunicação interna:

REST domina o front-end,
mas gRPC domina o back-end moderno.


Conclusão

A escolha do tipo de comunicação influencia diretamente:

Microsserviços não são apenas “vários serviços pequenos”:
a forma como eles conversam define a qualidade do sistema inteiro.