Pular para o conteúdo principal

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)​

PadrãoResumoEtiquetas
Monolithic ArchitectureMonolithic 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 ArchitectureMicroservice 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ãoResumoEtiquetas
Decompose by Business CapabilityDecompose 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 SubdomainDecompose 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 ServiceSelf-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 TeamService 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ãoResumoEtiquetas
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ãoResumoEtiquetas
Database per ServiceNo 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 DatabaseNo 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 ReplicaEm 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 CompositionEm 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 EventUm 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ãoResumoEtiquetas
Transactional OutboxO 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 TailingO Transaction Log Tailing é uma forma de implementar o message relay do Transactional Outbox.Reliability Performance Efficiency
Polling PublisherO Polling Publisher é uma forma de implementar o message relay do Transactional Outbox.Reliability Operational Excellence

Testing (3)​

PadrãoResumoEtiquetas
Consumer-driven Contract TestNo 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 TestO Consumer-side Contract Test verifica que o cliente de um serviço consegue se comunicar com ele.Reliability Operational Excellence
Service Component TestO 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ãoResumoEtiquetas
Multiple Service Instances per HostNeste 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 HostCada 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 VMO 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 ContainerO 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 DeploymentO 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 PlatformO 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ãoResumoEtiquetas
Microservice ChassisO 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 TemplateO 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ãoResumoEtiquetas
Remote Procedure InvocationRemote 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
MessagingNo 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 ProtocolO 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ãoResumoEtiquetas
API GatewayO 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ãoResumoEtiquetas
Client-side DiscoveryNo 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 DiscoveryNo 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 RegistryO Service Registry é um banco de dados de serviços, suas instâncias e suas localizações.Reliability Operational Excellence
Self RegistrationNo 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 RegistrationNo 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ãoResumoEtiquetas
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ãoResumoEtiquetas
Access TokenAccess 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ãoResumoEtiquetas
Log AggregationEm 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 MetricsCada 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 LoggingO 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 TracingEm 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 TrackingQuando 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 ChangesProblemas em produção costumam surgir logo depois de uma mudança.Operational Excellence Reliability

UI Design (2)​

PadrãoResumoEtiquetas
Server-side Page Fragment CompositionEm 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 CompositionEm 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