Microservices Patterns
Catálogo pessoal baseado no microservices.io, de Chris Richardson. Cada padrão tem descrição, problemas que resolve, quando usar, trade-offs, etiquetas (pilares do Well-Architected Framework) e um diagrama Mermaid.
Padrões marcados com ★ são compartilhados com outro catálogo: este catálogo aponta para o documento original, revisado com o conteúdo desta fonte.
Total: 53 padrões em 15 grupos. Etiquetas: Pilares do Well-Architected Framework.
Grupos
- Architectural Style (2)
- Service Boundaries (4)
- Refactoring to Services (2)
- Service Collaboration (8)
- Transactional Messaging (3)
- Testing (3)
- Deployment (6)
- Cross-cutting Concerns (3)
- Communication Styles (4)
- External API (2)
- Service Discovery (5)
- Reliability (1)
- Security (1)
- Observability (7)
- UI Design (2)
Architectural Style (2)
| Padrão | Resumo | Etiquetas |
|---|---|---|
| Monolithic Architecture | Monolithic Architecture estrutura a aplicação como um único componente implantável, apoiado por um único banco de dados. | Operational Excellence Performance Efficiency Cost Optimization |
| Microservice Architecture | Microservice Architecture estrutura a aplicação como dois ou mais serviços implantáveis de forma independente e fracamente acoplados. | Reliability Operational Excellence Performance Efficiency Security |
Service Boundaries (4)
| Padrão | Resumo | Etiquetas |
|---|---|---|
| Decompose by Business Capability | Decompose by Business Capability define os serviços a partir das capacidades de negócio, isto é, das coisas que a organização faz para gerar valor, como gestão de pedidos, catálogo, estoque ou entrega. | Operational Excellence Reliability |
| Decompose by Subdomain | Decompose by Subdomain define os serviços a partir dos subdomínios do Domain-Driven Design (DDD), que representam as áreas distintas do negócio. | Operational Excellence Reliability |
| Self-contained Service | Self-contained Service projeta um serviço para responder a uma requisição síncrona sem precisar esperar por nenhum outro serviço. | Reliability Performance Efficiency |
| Service per Team | Service per Team estabelece que cada serviço pertence a exatamente uma equipe, que tem a responsabilidade exclusiva de alterá-lo. | Operational Excellence Performance Efficiency |
Refactoring to Services (2)
| Padrão | Resumo | Etiquetas |
|---|---|---|
| Strangler Application ★ | O padrão Strangler Fig migra um sistema legado de forma incremental, substituindo funcionalidades específicas, uma a uma, por novas aplicações e serviços. | Reliability Cost Optimization Operational Excellence |
| Anti-Corruption Layer ★ | O Anti-Corruption Layer (camada anticorrupção) é uma fachada ou camada de adaptação colocada entre subsistemas que não compartilham a mesma semântica. | Operational Excellence |
Service Collaboration (8)
| Padrão | Resumo | Etiquetas |
|---|---|---|
| Database per Service | No padrão Database per Service, os dados persistentes de cada serviço são privados a ele e só podem ser acessados por meio da sua API. | Reliability Performance Efficiency Operational Excellence |
| Shared Database | No padrão Shared Database, todos os serviços utilizam um único banco de dados. | Reliability Operational Excellence |
| Saga ★ | O padrão Saga mantém a consistência de dados em sistemas distribuídos ao dividir uma operação de negócio que envolve vários serviços em uma sequência de transações locais. | Reliability |
| Command-side Replica | Em uma arquitetura com Database per Service, um serviço que executa um comando muitas vezes precisa de dados que pertencem a outro serviço. | Performance Efficiency Reliability |
| API Composition | Em uma aplicação com microsserviços e Database per Service, os dados estão espalhados em bancos privados, e consultas que combinam informações de vários serviços deixam de ser um simples join. | Performance Efficiency |
| CQRS ★ | O CQRS (Command Query Responsibility Segregation) separa as operações que alteram dados (commands) das operações que leem dados (queries), usando modelos distintos para cada lado. | Performance Efficiency |
| Domain Event | Um evento de domínio (Domain Event), conceito vindo do Domain-Driven Design, é um fato relevante para o negócio que ocorreu no domínio, como PedidoCriado ou CreditoReservado. | Reliability Operational Excellence |
| Event Sourcing ★ | Em vez de guardar apenas o estado atual dos dados e sobrescrevê-lo a cada alteração (modelo CRUD), o Event Sourcing registra toda a sequência de ações aplicadas a uma entidade como eventos imutáveis em um armazenamento somente de acréscimo (append-only), o event store. | Reliability Performance Efficiency |
Transactional Messaging (3)
| Padrão | Resumo | Etiquetas |
|---|---|---|
| Transactional Outbox | O Transactional Outbox resolve o problema de atualizar o banco de dados de um serviço e, ao mesmo tempo, enviar uma mensagem ou evento a um message broker de forma atômica. | Reliability Operational Excellence |
| Transaction Log Tailing | O Transaction Log Tailing é uma forma de implementar o message relay do Transactional Outbox. | Reliability Performance Efficiency |
| Polling Publisher | O Polling Publisher é uma forma de implementar o message relay do Transactional Outbox. | Reliability Operational Excellence |
Testing (3)
| Padrão | Resumo | Etiquetas |
|---|---|---|
| Consumer-driven Contract Test | No Consumer-driven Contract Test, os desenvolvedores de cada serviço consumidor escrevem um conjunto de testes (contratos) que descreve o que esperam da API de um serviço provedor. | Reliability Operational Excellence |
| Consumer-side Contract Test | O Consumer-side Contract Test verifica que o cliente de um serviço consegue se comunicar com ele. | Reliability Operational Excellence |
| Service Component Test | O Service Component Test é um conjunto de testes que exercita um único serviço em isolamento, tratando-o como uma caixa-preta acessada por sua API. | Reliability Operational Excellence Cost Optimization |
Deployment (6)
| Padrão | Resumo | Etiquetas |
|---|---|---|
| Multiple Service Instances per Host | Neste padrão, instâncias de serviços diferentes são executadas no mesmo host, que pode ser físico ou virtual. | Cost Optimization Operational Excellence |
| Service Instance per Host | Cada instância de serviço é implantada em seu próprio host, que pode ser uma máquina física ou virtual. | Reliability Security Operational Excellence |
| Service Instance per VM | O serviço é empacotado como uma imagem de máquina virtual e cada instância é implantada como uma VM separada. | Reliability Security Operational Excellence |
| Service Instance per Container | O serviço é empacotado como uma imagem de contêiner (por exemplo, Docker) e cada instância é executada como um contêiner. | Operational Excellence Performance Efficiency Cost Optimization |
| Serverless Deployment | O serviço é implantado em uma infraestrutura que esconde qualquer conceito de servidor, seja físico, virtual ou contêiner. | Cost Optimization Operational Excellence Performance Efficiency |
| Service Deployment Platform | O padrão propõe usar uma plataforma de implantação, isto é, uma infraestrutura automatizada para implantar aplicações. | Operational Excellence Reliability Cost Optimization |
Cross-cutting Concerns (3)
| Padrão | Resumo | Etiquetas |
|---|---|---|
| Microservice Chassis | O Microservice Chassis é um framework compartilhado que serve de fundação para todos os serviços de uma organização. | Operational Excellence Reliability Security |
| Externalized Configuration ★ | O padrão External Configuration Store move as informações de configuração para fora do pacote de implantação da aplicação, levando-as para um repositório centralizado. | Operational Excellence |
| Service Template | O Service Template é um modelo de código-fonte que os desenvolvedores copiam para iniciar um novo serviço. | Operational Excellence Security |
Communication Styles (4)
| Padrão | Resumo | Etiquetas |
|---|---|---|
| Remote Procedure Invocation | Remote Procedure Invocation (RPI) é o estilo de comunicação em que um cliente envia uma requisição a um serviço usando um protocolo síncrono de requisição/resposta, como se estivesse invocando um procedimento remoto. | Reliability Performance Efficiency Operational Excellence |
| Messaging | No padrão Messaging, os serviços se comunicam trocando mensagens por canais de mensagens, de forma assíncrona. | Reliability Performance Efficiency Operational Excellence |
| Domain-specific Protocol | O padrão Domain-specific Protocol propõe que a comunicação entre serviços, ou entre clientes e serviços, use um protocolo próprio do domínio do problema, em vez de um protocolo genérico de requisição/resposta ou de mensageria. | Performance Efficiency Operational Excellence |
| Idempotent Consumer ★ | O padrão Idempotent Consumer projeta consumidores de mensagens de forma que processar a mesma mensagem mais de uma vez produza exatamente o mesmo efeito que processá-la uma única vez. | Reliability |
External API (2)
| Padrão | Resumo | Etiquetas |
|---|---|---|
| API Gateway | O API Gateway é o ponto de entrada único entre os clientes e os microsserviços de uma aplicação. | Performance Efficiency Security Operational Excellence |
| Backend for Front-end ★ | O padrão Backends for Frontends (BFF) propõe criar um serviço de backend separado para cada interface de frontend (por exemplo, aplicação web, app mobile, dispositivos embarcados), em vez de usar um único backend de propósito geral para todas elas. | Reliability Security Performance Efficiency |
Service Discovery (5)
| Padrão | Resumo | Etiquetas |
|---|---|---|
| Client-side Discovery | No Client-side Discovery, o cliente de um serviço (outro serviço ou um API gateway) é responsável por descobrir onde estão as instâncias disponíveis. | Performance Efficiency Reliability |
| Server-side Discovery | No Server-side Discovery, o cliente envia suas requisições a um roteador (também chamado de load balancer) em um endereço bem conhecido. | Reliability Operational Excellence |
| Service Registry | O Service Registry é um banco de dados de serviços, suas instâncias e suas localizações. | Reliability Operational Excellence |
| Self Registration | No Self Registration, cada instância de serviço é responsável por se registrar no Service Registry, informando seu host e endereço IP ao iniciar. | Reliability Operational Excellence |
| 3rd Party Registration | No 3rd Party Registration, um componente separado, o registrador (registrar), cuida de registrar cada instância no Service Registry quando ela inicia e de removê-la quando desliga. | Reliability Operational Excellence |
Reliability (1)
| Padrão | Resumo | Etiquetas |
|---|---|---|
| Circuit Breaker ★ | O Circuit Breaker bloqueia temporariamente o acesso a um serviço ou recurso remoto quando as falhas passam de um limite. | Reliability Performance Efficiency |
Security (1)
| Padrão | Resumo | Etiquetas |
|---|---|---|
| Access Token | Access Token é o padrão em que a identidade de quem faz a requisição é transportada por um token seguro, em vez de cada serviço reautenticar o cliente. | Security Reliability |
Observability (7)
| Padrão | Resumo | Etiquetas |
|---|---|---|
| Log Aggregation | Em uma arquitetura de microsserviços, cada instância de serviço escreve seus próprios logs (erros, avisos, informações e depuração) em um formato padronizado. | Operational Excellence Reliability |
| Application Metrics | Cada serviço é instrumentado para coletar estatísticas sobre suas operações individuais, como contagem de requisições, taxa de erros, latências e uso de recursos. | Operational Excellence Reliability Performance Efficiency |
| Audit Logging | O padrão registra as ações dos usuários (quem fez o quê, quando e sobre qual recurso) em um armazenamento de dados próprio, como um banco de dados. | Security Operational Excellence |
| Distributed Tracing | Em microsserviços, uma única requisição externa costuma percorrer vários serviços, cada um executando operações como consultas a banco de dados ou publicação de mensagens. | Operational Excellence Performance Efficiency Reliability |
| Exception Tracking | Quando uma requisição falha, uma instância de serviço lança uma exceção com mensagem de erro e stack trace. | Reliability Operational Excellence |
| Health Check API ★ | A aplicação expõe endpoints de saúde (por exemplo, /health via HTTPS ou o protocolo padrão de health checking do gRPC) que ferramentas externas consultam em intervalos regulares. | Reliability Operational Excellence Performance Efficiency |
| Log Deployments and Changes | Problemas em produção costumam surgir logo depois de uma mudança. | Operational Excellence Reliability |
UI Design (2)
| Padrão | Resumo | Etiquetas |
|---|---|---|
| Server-side Page Fragment Composition | Em uma arquitetura de microsserviços com equipes organizadas por capacidade de negócio ou subdomínio, cada equipe também é dona da experiência do usuário relacionada ao seu serviço. | Performance Efficiency Operational Excellence |
| Client-side UI Composition | Em uma arquitetura de microsserviços com equipes organizadas por capacidade de negócio ou subdomínio, cada equipe também é responsável pela experiência do usuário do seu serviço. | Performance Efficiency Operational Excellence |
Por etiqueta
Reliability (38)
Microservice Architecture, Decompose by Business Capability, Decompose by Subdomain, Self-contained Service, Strangler Application, Database per Service, Shared Database, Saga, Command-side Replica, Domain Event, Event Sourcing, Transactional Outbox, Transaction Log Tailing, Polling Publisher, Consumer-driven Contract Test, Consumer-side Contract Test, Service Component Test, Service Instance per Host, Service Instance per VM, Service Deployment Platform, Microservice Chassis, Remote Procedure Invocation, Messaging, Idempotent Consumer, Backend for Front-end, Client-side Discovery, Server-side Discovery, Service Registry, Self Registration, 3rd Party Registration, Circuit Breaker, Access Token, Log Aggregation, Application Metrics, Distributed Tracing, Exception Tracking, Health Check API, Log Deployments and Changes
Security (9)
Microservice Architecture, Service Instance per Host, Service Instance per VM, Microservice Chassis, Service Template, API Gateway, Backend for Front-end, Access Token, Audit Logging
Cost Optimization (7)
Monolithic Architecture, Strangler Application, Service Component Test, Multiple Service Instances per Host, Service Instance per Container, Serverless Deployment, Service Deployment Platform
Operational Excellence (41)
Monolithic Architecture, Microservice Architecture, Decompose by Business Capability, Decompose by Subdomain, Service per Team, Strangler Application, Anti-Corruption Layer, Database per Service, Shared Database, Domain Event, Transactional Outbox, Polling Publisher, Consumer-driven Contract Test, Consumer-side Contract Test, Service Component Test, Multiple Service Instances per Host, Service Instance per Host, Service Instance per VM, Service Instance per Container, Serverless Deployment, Service Deployment Platform, Microservice Chassis, Externalized Configuration, Service Template, Remote Procedure Invocation, Messaging, Domain-specific Protocol, API Gateway, Server-side Discovery, Service Registry, Self Registration, 3rd Party Registration, Log Aggregation, Application Metrics, Audit Logging, Distributed Tracing, Exception Tracking, Health Check API, Log Deployments and Changes, Server-side Page Fragment Composition, Client-side UI Composition
Performance Efficiency (24)
Monolithic Architecture, Microservice Architecture, Self-contained Service, Service per Team, Database per Service, Command-side Replica, API Composition, CQRS, Event Sourcing, Transaction Log Tailing, Service Instance per Container, Serverless Deployment, Remote Procedure Invocation, Messaging, Domain-specific Protocol, API Gateway, Backend for Front-end, Client-side Discovery, Circuit Breaker, Application Metrics, Distributed Tracing, Health Check API, Server-side Page Fragment Composition, Client-side UI Composition