Padrões de design dos microsserviçosDesign patterns for microservices

O objetivo dos microserviços é aumentar a velocidade das versões dos aplicativos, decompondo o aplicativo em serviços autônomos pequenos que podem ser implantados de forma independente.The goal of microservices is to increase the velocity of application releases, by decomposing the application into small autonomous services that can be deployed independently. Uma arquitetura de microserviços também traz alguns desafios.A microservices architecture also brings some challenges. Os padrões de design mostrados aqui podem ajudar a mitigar esses desafios.The design patterns shown here can help mitigate these challenges.

Padrões de design de microserviços

O embaixador pode ser usado para descarregar tarefas comuns de conectividade de cliente, como monitoramento, registro em log, roteamento e segurança (como TLS) de forma independente de linguagem.Ambassador can be used to offload common client connectivity tasks such as monitoring, logging, routing, and security (such as TLS) in a language agnostic way. Os serviços embaixadors geralmente são implantados como um sidecar (veja abaixo).Ambassador services are often deployed as a sidecar (see below).

A camada anticorrupção implementa uma fachada entre aplicativos novos e herdados, para garantir que o design de um novo aplicativo não seja limitado por dependências em sistemas herdados.Anti-corruption layer implements a façade between new and legacy applications, to ensure that the design of a new application is not limited by dependencies on legacy systems.

Os back-ends para front-ends criam serviços de back-end separados para diferentes tipos de clientes, como desktops e móveis.Backends for Frontends creates separate backend services for different types of clients, such as desktop and mobile. Dessa forma, um único serviço de back-end não precisa lidar com os requisitos conflitantes de vários tipos de clientes.That way, a single backend service doesn't need to handle the conflicting requirements of various client types. Esse padrão pode ajudar a manter cada microserviço simples, separando as preocupações específicas do cliente.This pattern can help keep each microservice simple, by separating client-specific concerns.

O bulkhead isola recursos críticos, como pool de conexões, memória e CPU, para cada carga de trabalho ou serviço.Bulkhead isolates critical resources, such as connection pool, memory, and CPU, for each workload or service. Usando o bulkheads, uma única carga de trabalho (ou serviço) não pode consumir todos os recursos, privando outros.By using bulkheads, a single workload (or service) can't consume all of the resources, starving others. Esse padrão aumenta a resiliência do sistema ao evitar falhas em cascata causadas por um serviço.This pattern increases the resiliency of the system by preventing cascading failures caused by one service.

A agregação de gateway agrega solicitações a vários microserviços individuais em uma única solicitação, reduzindo a informação entre consumidores e serviços.Gateway Aggregation aggregates requests to multiple individual microservices into a single request, reducing chattiness between consumers and services.

O descarregamento de gateway permite que cada microserviço descarregue a funcionalidade do serviço compartilhado, como o uso de certificados SSL, em um gateway de API.Gateway Offloading enables each microservice to offload shared service functionality, such as the use of SSL certificates, to an API gateway.

O Roteamento de gateway roteia solicitações para vários microserviços usando um único ponto de extremidade, para que os consumidores não precisem gerenciar muitos pontos de extremidade separados.Gateway Routing routes requests to multiple microservices using a single endpoint, so that consumers don't need to manage many separate endpoints.

O sidecar implanta componentes auxiliares de um aplicativo como um contêiner ou processo separado para fornecer isolamento e encapsulamento.Sidecar deploys helper components of an application as a separate container or process to provide isolation and encapsulation.

O Estrangulador dá suporte à refatoração incremental de um aplicativo, substituindo gradualmente partes específicas de funcionalidade por novos serviços.Strangler supports incremental refactoring of an application, by gradually replacing specific pieces of functionality with new services.

Para obter o catálogo completo dos padrões de design de nuvem no Centro de Arquitetura do Azure, consulte padrões de design de nuvem.For the complete catalog of cloud design patterns on the Azure Architecture Center, see Cloud Design Patterns.