Categoria

Arquitetura de Software e Sistemas Distribuídos

Estratégias de service mesh com Istio e Envoy
Arquitetura de Software e Sistemas Distribuídos

Estratégias de service mesh com Istio e Envoy

O service mesh é uma camada de infraestrutura dedicada a gerenciar a comunicação entre serviços em ambientes de microsserviços. No modelo tradicional, cada serviço precisa implementar lógica de descoberta, balanceamento, resiliência e segurança. Com o service mesh, essas responsabilidades são delegadas a proxies leves (sidecars) que interceptam todo o tráfego de entrada e saída.

05/05/2026
Estratégias de testes em arquiteturas de microservices
Arquitetura de Software e Sistemas Distribuídos 05/05/2026

Estratégias de testes em arquiteturas de microservices

A pirâmide de testes clássica, proposta por Mike Cohn, precisa ser adaptada para arquiteturas de microsserviços. Em vez de uma pirâmide com três camadas, trabalhamos com cinco: testes unitários, de componente, de integração, de contrato e ponta a ponta (E2E). Cada camada possui granularidade e custo de manutenção distintos.

Estratégias de versionamento de eventos em event sourcing
Arquitetura de Software e Sistemas Distribuídos 05/05/2026

Estratégias de versionamento de eventos em event sourcing

Event sourcing impõe um desafio fundamental: eventos são registros imutáveis e históricos. Quando a lógica de negócio evolui, o schema dos eventos precisa mudar, mas os eventos antigos não podem ser alterados. Sem uma estratégia de versionamento, sistemas quebram ao tentar desserializar eventos antigos com schemas novos.

Event-driven architecture na prática: quando eventos resolvem e quando complicam
Arquitetura de Software e Sistemas Distribuídos 05/05/2026

Event-driven architecture na prática: quando eventos resolvem e quando complicam

A arquitetura orientada a eventos (EDA) difere fundamentalmente do modelo tradicional request-response. Enquanto em sistemas REST um serviço A chama diretamente o serviço B e aguarda uma resposta síncrona, na EDA um produtor publica um evento em um barramento e segue seu fluxo — os consumidores interessados reagem de forma assíncrona.

Event sourcing explicado com exemplos concretos em Node.js
Arquitetura de Software e Sistemas Distribuídos 05/05/2026

Event sourcing explicado com exemplos concretos em Node.js

Event sourcing é um padrão arquitetural onde o estado atual de uma aplicação é derivado de uma sequência imutável de eventos passados. Em vez de armazenar o estado atual de uma entidade (como em CRUD tradicional), cada alteração significativa é registrada como um evento.

Event Sourcing: quando o estado atual não é suficiente
Arquitetura de Software e Sistemas Distribuídos 05/05/2026

Event Sourcing: quando o estado atual não é suficiente

Sistemas tradicionais baseados em CRUD (Create, Read, Update, Delete) operam sob uma premissa perigosa: o estado atual é suficiente para compreender o sistema. Quando um registro é atualizado, o estado anterior é simplesmente sobrescrito. O banco de dados contém apenas o último valor, não a trajetória que levou até ele.

Feature flags: entregue código com confiança antes de ligar a feature
Arquitetura de Software e Sistemas Distribuídos 05/05/2026

Feature flags: entregue código com confiança antes de ligar a feature

Feature flags (ou toggles) são mecanismos que permitem ativar ou desativar funcionalidades em tempo de execução, sem necessidade de novo deploy. O propósito central é separar o momento de deploy (quando o código vai para produção) do momento de release (quando a funcionalidade fica disponível para os usuários).

Distributed tracing: entendendo o caminho de uma requisição em microsserviços
Arquitetura de Software e Sistemas Distribuídos 05/05/2026

Distributed tracing: entendendo o caminho de uma requisição em microsserviços

Em sistemas monolíticos, rastrear uma requisição é trivial: um único processo, um único log, uma única métrica. Em arquiteturas de microsserviços, uma única requisição pode atravessar dezenas de serviços independentes, cada um com seus próprios logs e métricas. Logs isolados mostram o que aconteceu em cada serviço, mas não revelam a ordem exata dos eventos, o tempo gasto em cada etapa ou onde exatamente uma falha ocorreu. Métricas agregadas, como latência média ou taxa de erro, escondem os outli

Domain-Driven Design: introdução e aplicação prática
Arquitetura de Software e Sistemas Distribuídos 05/05/2026

Domain-Driven Design: introdução e aplicação prática

Domain-Driven Design (DDD) é uma abordagem de desenvolvimento de software que coloca o domínio do negócio no centro do processo de design. Surgiu como resposta ao problema da complexidade acidental — aquela que criamos ao modelar soluções técnicas que não refletem fielmente a realidade do negócio — em oposição à complexidade essencial, que é inerente ao próprio domínio.

Durable execution com Temporal: workflows que sobrevivem a falhas e reinícios
Arquitetura de Software e Sistemas Distribuídos 05/05/2026

Durable execution com Temporal: workflows que sobrevivem a falhas e reinícios

Em sistemas distribuídos, falhas não são exceções — são a regra. Um servidor pode cair no meio de uma transação, uma chamada de rede pode expirar, ou uma exceção inesperada pode interromper o processamento de um pedido. Em cenários críticos como processamento de pagamentos, aprovisionamento de infraestrutura ou orquestração de ETL, essas falhas podem causar perda de dados, estados inconsistentes e retrabalho manual.