O Microserviço Perfeito é um Mito — e Está Tudo Bem

Onde o Dev Se Queima: O Mito do Microserviço Imaculado

Microserviços entraram no hype como a bala de prata do século. O problema? A maioria dos times adotou isso como religião, não como estratégia. **O mito do microserviço perfeito nasce quando o time acha que fragmentar o monolito é sinônimo de evoluir.**

Na prática, o que acontece é:

  • explosão de deploys independentes (que nunca são tão independentes assim),
  • dívida técnica distribuída em N repositórios,
  • debug que atravessa rede, fila, gateway e meia dúzia de logs,
  • dependências acopladas por eventos “soltos” que ninguém mais consegue explicar.

DHH já falou sobre a romantização dos microserviços — até equipes gigantes, como Netflix, reviram excessos. Esse mito só continua vivo porque alimenta um desejo infantil de “arquitetura pura” que não existe nos negócios reais.

Como Resolver Sem Gourmetização: Arquitetura Orientada ao Contexto de Negócio

Não escolha microserviços — escolha limites. **Microserviço é uma consequência, não um objetivo.**

A abordagem pragmática é simples:

  • Identifique fronteiras de negócio (Bounded Contexts).
  • Modele primeiro no monolito com módulos autônomos.
  • Extraia serviços só quando há motivos reais: escala, deploy independente, autonomia de time.
  • Evite message brokers como muletas — evento é contrato, não gambiarra distribuída.

Como lembra o artigo “A sua ‘Boa Prática’ é o Tradeoff de Alguém”, toda estratégia tem custo — e usar Kafka/RabbitMQ sem necessidade cria mais ruído que valor.

Implementação de Senior: Um Corte Bem Feito no Monolito

Se for extrair um microserviço, extraia direito. Nada de criar serviços “fantasmas” que só replicam tabela ou só viram proxy de outro. Abaixo, um exemplo realista usando FastAPI, com OpenAPI funcional desde o início — contrato antes do código.


from fastapi import FastAPI
from pydantic import BaseModel

app = FastAPI(
    title="Order Pricing Service",
    description="Serviço isolado para cálculo de preços",
    version="1.0.0"
)

class PriceRequest(BaseModel):
    product_id: str
    quantity: int

class PriceResponse(BaseModel):
    total: float
    currency: str = "BRL"

@app.post("/calculate", response_model=PriceResponse)
def calculate_price(payload: PriceRequest):
    base_price = consulta_preco(payload.product_id)
    total = base_price * payload.quantity
    return PriceResponse(total=total)

# OpenAPI 100% automático — contrato garantido.

Esse serviço sozinho existe porque existe uma necessidade clara: cálculo de preço é um domínio separado, com regras que mudam rápido e precisam de deploy autônomo. Isso é extração com propósito — não fetiche arquitetural.

O Preço da Escolha: O Custo de Microserviços e o Custo de Não Usá-los

Optar por microserviços custa:

  • infra mais cara,
  • observabilidade obrigatória,
  • contratos rígidos,
  • pessoas mais experientes,
  • mais risco de erros distribuídos.

Não usar microserviços também custa:

  • monolitos que travam releases,
  • equipes grandes concorrendo no mesmo código,
  • escala do sistema inteira amarrada.

Ou seja: não existe resposta perfeita. Só existe contexto.

Direto das Trincheiras

  • Se um serviço novo precisa de quatro outros para funcionar, ele ainda é parte do monolito — só que distribuído.
  • Design de eventos sem versionamento vira a nova “tabela legado” — mas espalhada pela empresa.
  • Microserviço bom é aquele que você consegue reescrever em uma semana se der ruim.

Fontes Utilizadas

Artigo do DHH sobre a recuperação de microserviços : r/ruby,
A sua “Boa Prática” é o Tradeoff de Alguém – DEV Community

Obrigado por acompanhar essa reflexão até o fim!

Espero que esses pontos ajudem você a tomar decisões mais lúcidas no seu próximo sistema distribuído. Não deixe de conferir outros artigos no blog reymaster.dev.br, onde continuamos desmontando hypes com pragmatismo.

Valeu e até a próxima! 😉

Facebook
Twitter
LinkedIn
Banco de dados

Mensageria em Microssistemas: Quando Ela Entrega Valor — e Quando Só Aumenta Sua Dívida Técnica

A verdade nua e crua: muita gente coloca mensageria em microserviços porque viu num diagrama bonito no slide do arquiteto da moda. Só que hype não paga boleto — e muito menos salva sistema mal modelado. Aqui eu explico onde a mensageria realmente resolve dor de negócio, quando ela vira over-engineering e como implementar sem transformar sua stack em um zoológico distribuído impossível de manter.

Discussões

A Ilusão do Low‑Code: Quando a Promessa de Velocidade Destrói Sua Arquitetura

Low‑code funciona… até o dia em que você precisa entender o que realmente está acontecendo lá dentro. Como arquiteto nas trincheiras, já vi mais projetos ruírem por dependência cega em plataformas mágicas do que por falta de framework moderno. Neste artigo, vou direto à dor: o low‑code vende eficiência, mas frequentemente entrega dívida técnica embrulhada para presente. Hora de desmontar o hype e mostrar onde ele realmente funciona — e onde vira armadilha arquitetural.

Psicologia em Desenvolvimento de Software

IA Não é Bola de Cristal: Machine Learning Só Revela o Que Seus Dados Permitem

Como arquiteto nas trincheiras, vejo devs tratando IA como se fosse mágica. Não é. Machine Learning só amplifica padrões — inclusive os enviesados, sujos ou inúteis do seu dataset. Este artigo corta a “gourmetização” da IA e mostra, sem romance, o que modelos realmente aprendem, como isso afeta decisões de produto e por que muitos times criam dívida técnica emocional ao esperar que um algoritmo resolva falta de estratégia.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *