Categoria

Arquitetura de Software

Vertical Slice Architecture: organizando por feature
Arquitetura de Software

Vertical Slice Architecture: organizando por feature

A Vertical Slice Architecture (Arquitetura de Fatias Verticais) surge como uma resposta direta aos problemas de manutenibilidade e escalabilidade que arquiteturas tradicionais em camadas (layered architecture) impõem em projetos de médio e grande porte. Seu princípio fundamental é simples, mas poderoso: organizar o código por features de negócio em vez de por camadas técnicas.

05/05/2026
Ubiquitous Language: o vocabulário compartilhado
Arquitetura de Software 05/05/2026

Ubiquitous Language: o vocabulário compartilhado

Ubiquitous Language — ou Linguagem Ubíqua — é o vocabulário compartilhado entre especialistas de domínio e desenvolvedores, utilizado de forma consistente em todas as conversas, documentação e código-fonte de um sistema. Não se trata de um simples glossário técnico, mas de uma linguagem viva que reflete o modelo mental do domínio.

Service discovery e load balancing
Arquitetura de Software 05/05/2026

Service discovery e load balancing

Em arquiteturas de microsserviços, os serviços precisam se comunicar entre si para processar requisições. Em um ambiente dinâmico, onde instâncias são criadas e destruídas constantemente (escalonamento horizontal, falhas, deploys), saber onde cada serviço está executando é um problema central. Service discovery é o mecanismo que permite localizar dinamicamente os endereços de rede de serviços disponíveis, sem depender de configurações estáticas.

Sharding de banco de dados
Arquitetura de Software 05/05/2026

Sharding de banco de dados

Sharding é a técnica de particionar horizontalmente um banco de dados em múltiplos fragmentos independentes chamados shards. Cada shard contém um subconjunto dos dados e opera como um banco de dados separado. A motivação principal é superar as limitações de escalabilidade vertical — quando um único servidor não consegue mais lidar com o volume de dados ou o throughput de operações.

Shared kernel: quando compartilhar modelo entre contextos
Arquitetura de Software 05/05/2026

Shared kernel: quando compartilhar modelo entre contextos

O Shared Kernel é um padrão de mapeamento de contextos (Context Mapping) do Domain-Driven Design que define um subconjunto compartilhado do modelo de domínio entre dois ou mais bounded contexts. Diferentemente de outros padrões de integração, o Shared Kernel pressupõe que o acoplamento é não apenas aceitável, mas desejável — desde que seja explícito, controlado e limitado a um núcleo semanticamente estável.

Strangler Fig: migrando de monolito para microserviços
Arquitetura de Software 05/05/2026

Strangler Fig: migrando de monolito para microserviços

O padrão Strangler Fig foi inspirado no comportamento de uma figueira estranguladora, que cresce ao redor de uma árvore hospedeira, gradualmente a envolvendo e substituindo. Na arquitetura de software, o padrão propõe uma migração incremental de um sistema monolítico para microsserviços, substituindo funcionalidades antigas por novas implementações até que o monólito original seja completamente "estrangulado".

Schema registry: governança de contratos de eventos
Arquitetura de Software 05/05/2026

Schema registry: governança de contratos de eventos

Em arquiteturas orientadas a eventos, produtores e consumidores evoluem de forma independente. Sem governança, um produtor pode alterar o formato de um evento sem aviso, quebrando consumidores downstream. O cenário típico de falha:

Serverless: funções como serviço e seus trade-offs
Arquitetura de Software 05/05/2026

Serverless: funções como serviço e seus trade-offs

No contexto da Arquitetura de Software, o termo Serverless não significa ausência de servidores, mas sim a abstração completa do gerenciamento de infraestrutura. O desenvolvedor se concentra exclusivamente no código da aplicação, enquanto o provedor de nuvem provisiona, escala e mantém os servidores automaticamente.

Repositories no DDD
Arquitetura de Software 05/05/2026

Repositories no DDD

O Repository Pattern é um dos pilares do Domain-Driven Design (DDD) proposto por Eric Evans. Seu propósito fundamental é fornecer uma abstração de persistência que permita ao domínio operar sem conhecer os detalhes de como os dados são armazenados e recuperados. O Repository atua como uma "coleção em memória" de objetos de domínio, escondendo a complexidade do armazenamento subjacente.

Retry policies com backoff exponencial e jitter
Arquitetura de Software 05/05/2026

Retry policies com backoff exponencial e jitter

Em sistemas distribuídos, falhas são inevitáveis. Uma requisição pode falhar por timeout de rede, concorrência em banco de dados, reinicialização temporária de um serviço ou pico de carga. Essas são falhas transitórias — tendem a desaparecer após curto intervalo. Já falhas permanentes (como recurso inexistente ou permissão negada) não são resolvidas com repetição.