O que são microsserviços?

Os microsserviços descrevem uma abordagem de arquitetura nativa da nuvem para o desenvolvimento de software que estrutura um aplicativo a partir de serviços frouxamente acoplados em comunicação uns com os outros por meio de APIs ou protocolos de mensagens. Cada serviço é autônomo e independente e executa um processo exclusivo. À medida que os desenvolvedores buscam criar aplicativos dimensionáveis e resilientes, os microsserviços se tornam cada vez mais populares.

 

Microsserviços explicados

Os microsserviços, também conhecidos como arquitetura de microsserviços, são um tipo de arquitetura de software usado no desenvolvimento de aplicativos nativos da nuvem. Os aplicativos projetados por esse design compreendem componentes de implantação pequenos, independentes e fracamente acoplados que, juntos, fornecem os recursos do aplicativo.

Cada serviço na arquitetura de microsserviços executa uma função comercial distinta e se comunica com outros microsserviços por meio de interfaces bem definidas, principalmente usando APIs Rest.

Ao contrário do aplicativo monolítico desenvolvido como uma única unidade, os microsserviços permitem que os desenvolvedores criem módulos que podem ser desenvolvidos, testados e implantados de forma independente, o que acelera o tempo de lançamento no mercado. Como a natureza de desacoplamento dos microsserviços permite que os desenvolvedores enviem novos códigos e funcionalidades com mais frequência do que seria possível, os aplicativos modernos são capazes de acompanhar a evolução das necessidades dos clientes.

Mais de três quartos das empresas migraram para microsserviços, substituindo seus aplicativos monolíticos hospedados em servidores da Web individuais por aplicativos nativos da nuvem em contêineres distribuídos em um cluster de servidores host.

 

Da arquitetura orientada a serviços aos microsserviços

A arquitetura orientada a serviços (SOA) existe desde o início dos anos 2000 como uma forma de criar sistemas grandes e distribuídos, decompondo-os em serviços menores e pouco acoplados. A arquitetura de microsserviços surgiu como uma evolução natural da SOA.

O conceito de microsserviços foi apresentado por Fred George em um workshop de 2011 sobre arquitetura de software. George estava tentando resolver problemas de escalabilidade com SOA enquanto trabalhava em um site de comércio eletrônico e teve a ideia de criar serviços pequenos e autônomos..

A arquitetura de microsserviços adotou os princípios de orientação de serviço da SOA e os refinou para aplicativos modernos nativos da nuvem. Os serviços de granulação grossa da SOA se tornaram "micro" serviços granulares de granulação fina, o que os tornou altamente eficientes e proporcionou a flexibilidade de combinar uma pilha de tecnologia com um determinado serviço. A arquitetura de microsserviços reduziu até mesmo a carga de comunicação ao substituir as pesadas APIs SOAP por opções mais leves, como APIs REST ou filas de mensagens.

Os microsserviços logo ganharam popularidade entre os arquitetos de software, e empresas como Netflix, Amazon, The Guardian e Spotify começaram a adotar essa arquitetura.

A arquitetura de microsserviços é a base para os benefícios associados ao aplicativo moderno e nativo da nuvem.

Figura 1: A arquitetura de microsserviços é a base para os benefícios associados ao aplicativo moderno e nativo da nuvem

 

Benefícios dos microsserviços

Os microsserviços fornecem uma estrutura para a criação de aplicativos nativos da nuvem que podem se adaptar aos requisitos comerciais em constante mudança. Os inúmeros benefícios decorrem da arquitetura do aplicativo.

Agilidade

A arquitetura de microsserviços se presta ao desenvolvimento e à implantação independentes. Ao contrário dos aplicativos monolíticos, em que a alteração de uma linha de código envolve a atualização de todo o aplicativo, os desenvolvedores podem modificar ou substituir serviços sem afetar o sistema distribuído. A capacidade de implantar serviços individuais facilita a adição de novos recursos ou a reversão de alterações em um aplicativo.

Escalabilidade

Dimensionar um aplicativo inteiro não é o ideal. Com os microsserviços, apenas os componentes que exigem escala são dimensionados. Os desenvolvedores podem abordar um serviço individual conforme necessário, o que, em última análise, facilita um melhor desempenho sob cargas pesadas, o uso eficiente de recursos e menores custos de infraestrutura.

Escolha

Na arquitetura de microsserviços, o aplicativo nativo da nuvem não compartilha uma pilha e um banco de dados comuns. Os desenvolvedores podem escolher as ferramentas que preferem e as tecnologias para atender aos requisitos distintos de serviços individuais.

Integração

Os desenvolvedores podem escrever microsserviços em qualquer linguagem e conectá-los a microsserviços programados em qualquer linguagem. Além disso, os microsserviços podem ser executados em qualquer plataforma, o que os torna disponíveis para integração com sistemas legados.

Reutilização de código

A arquitetura de microsserviços permite que os desenvolvedores criem serviços modulares que podem ser reutilizados em vários aplicativos. Ao trabalhar com componentes reutilizáveis, os programadores reduzem o tempo de desenvolvimento e melhoram a qualidade do código, pois investem em uma cultura de "escrever uma vez, reutilizar com frequência".

Tolerância a falhas

A arquitetura de microsserviços promove a resiliência. Com serviços projetados para operar de forma autônoma, a falha de um único serviço raramente desliga o aplicativo, como tende a acontecer com aplicativos monolíticos.

Colaboração

A arquitetura de microsserviços permite que as equipes trabalhem em diferentes serviços simultaneamente, o que se traduz em um tempo de colocação no mercado mais rápido. Embora os desenvolvedores tomem decisões sem precisar se coordenar com outras equipes, os microsserviços também promovem a colaboração entre equipes, pois cada equipe é responsável pelo desenvolvimento e manutenção de uma parte do todo. Isso pode levar a um melhor alinhamento com as metas comerciais e a um uso mais eficiente dos recursos.

Iteração contínua

O aplicativo criado com microsserviços foi desenvolvido para evoluir. Os desenvolvedores podem implantar rapidamente os microsserviços principais como um produto mínimo viável e atualizar o aplicativo à medida que as equipes concluem serviços adicionais. Novas tecnologias podem ser incorporadas ao projeto à medida que surgem. O aplicativo baseado em microsserviços permanece em processo, movendo-se continuamente em direção à perfeição teórica.

 

Quando usar microsserviços

Embora os microsserviços baseados em contêineres ofereçam muitos benefícios, eles nem sempre são a arquitetura de aplicativo certa a ser escolhida. Ao tomar decisões de engenharia de software, pense em suas metas para o aplicativo, bem como nos obstáculos de desenvolvimento e nas necessidades que o senhor prevê em vista da vida útil do aplicativo. Os microsserviços funcionam melhor com aplicativos complexos. Os cenários para considerar o uso de microsserviços incluem:

Aplicações de grande porte

Se o senhor estiver criando um aplicativo grande e complexo, os microsserviços permitirão dividir o aplicativo em partes gerenciáveis, facilitando o desenvolvimento, a implantação e a manutenção.

Complexidades da linha do tempo

A arquitetura de microsserviços pode acomodar serviços independentes com diferentes taxas de desenvolvimento. Mesmo que um serviço sofra um atraso inesperado, o projeto pode continuar sem implicações globais no cronograma de desenvolvimento do aplicativo.

Atualizações frequentes

A arquitetura de microsserviços é ideal para aplicativos que exigem atualizações frequentes, pois os serviços independentes permitem que os desenvolvedores modifiquem o módulo em vez do aplicativo.

Alta escalabilidade

Se o seu aplicativo precisa lidar com um alto volume de tráfego ou precisa ser dimensionado rapidamente, os microsserviços são essenciais. Isso ocorre principalmente se o senhor precisar escalonar partes específicas do aplicativo, em vez de escalonar o aplicativo inteiro.

Várias equipes

Se o senhor tiver várias equipes de desenvolvimento trabalhando no mesmo aplicativo, os microsserviços o ajudarão a manter a agilidade e a eficiência. Cada equipe pode trabalhar em seu microsserviço, usando a pilha de tecnologia que funciona para eles, sem se preocupar com o restante do aplicativo.

Arquitetura descentralizada

Se quiser criar um aplicativo com uma arquitetura descentralizada, os microsserviços são autônomos e podem ser implantados em diferentes locais, mesmo entre diferentes provedores de serviços em nuvem.

Nuvem híbrida

Se o senhor estiver planejando uma arquitetura de nuvem híbrida, em que alguns serviços continuarão sendo executados no local e outros serão executados na nuvem, os microsserviços o ajudarão a gerenciar a complexidade do aplicativo.

Chamadas de API que representam solicitações de clientes roteadas pelo gateway de API para os endpoints dos microsserviços internos

Chamadas de API que representam solicitações de clientes roteadas pelo gateway de API para os endpoints dos microsserviços internos API gateway to the endpoints of the internal microservices.

 

Criação e implantação de aplicativos baseados em microsserviços

A arquitetura de microsserviços exige um planejamento cuidadoso. Certas tecnologias e práticas comuns ao ambiente de produção permitem que os desenvolvedores desenvolvam, mantenham e operem aplicativos baseados em microsserviços de forma eficaz.

DevOps

As práticas de DevOps, incluindo CI/CD, são essenciais para a abordagem de arquitetura dos microsserviços. Ao contrário dos aplicativos monolíticos, os microsserviços são sistemas distribuídos inerentemente complexos com várias partes móveis e pilhas de tecnologia independentes. Essa complexidade exige colaboração frequente entre as equipes de desenvolvimento e operações para garantir que os componentes sejam perfeitamente integrados.

As práticas de DevOps fornecem as ferramentas de colaboração, comunicação e automação necessárias para reunir efetivamente as equipes durante todo o ciclo de vida de desenvolvimento de software.

Entrega contínua

A entrega contínua anda de mãos dadas com os microsserviços, permitindo que os desenvolvedores lancem atualizações de software com frequência e confiabilidade, fazendo uso de ferramentas de automação de infraestrutura, como servidores de integração contínua, pipelines de implantação e estruturas de teste automatizadas para simplificar o processo de CI/CD.

A entrega contínua é especialmente importante para garantir que cada serviço possa ser atualizado e liberado independentemente dos outros microsserviços.

REST

Os microsserviços se comunicam com os microsserviços, e a maioria faz isso dentro de aplicativos da Web, o que torna o REST complementar. REST, ou Representational State Transfer, é um padrão de projeto arquitetônico para a criação de APIs RESTful, que permite que os serviços se comuniquem via HTTP em formatos padrão, como XML, HTML e JSON. Mas as APIs Rest são fundamentais para os aplicativos baseados em microsserviços por vários motivos.

As APIs Rest são leves e independentes de plataforma, o que significa que fornecem uma interface padronizada que permite que os microsserviços se comuniquem, independentemente de sua tecnologia subjacente. Como os requisitos contêm as informações necessárias para concluir a solicitação, as APIs Rest não exigem contexto armazenado no servidor. Eles podem lidar com grandes volumes de solicitações sem comprometer o desempenho, e os serviços em uma arquitetura de microsserviços baseada em REST podem evoluir de forma independente, comunicando-se de forma eficiente e sem estado.

Contêineres

Embora os microsserviços ofereçam às equipes a opção de escolher a linguagem e a estrutura de seus serviços, trabalhar com várias linguagens no mesmo pipeline de CD apresenta desafios. Os contêineres abstraem a variação entre os serviços, já que cada microsserviço se torna uma unidade autônoma, embalada com sua base de código, banco de dados e dependências. O pipeline de CD, agora homogêneo, pode realizar testes consistentes de cada contêiner.

Os serviços são capazes de interagir sem interferir uns com os outros quando separados por contêineres e, uma vez implantados, os contêineres fornecem um ambiente de tempo de execução leve e portátil que permite que os serviços funcionem de forma consistente em todas as plataformas. Ferramentas como Docker e Kubernetes são amplamente usadas para gerenciar microsserviços em contêineres.

Orquestrador de Kubernetes

Uma ferramenta de orquestração como o Kubernetes pode abstrair a infraestrutura subjacente e automatizar o gerenciamento, a implantação e a escala de contêineres em vários servidores. Sua extensibilidade também permite que os desenvolvedores e operadores usem suas ferramentas de software comercial e de código aberto preferidas, reduzindo o trabalho manual de gerenciamento de contêineres.

Sem servidor

A computação sem servidor é outra opção para implantar microsserviços. Asarquiteturas sem servidor usam plataformas de funções como serviço (FaaS) para criar unidades ainda menores de implantação e escalar sob demanda. Embora as arquiteturas sem servidor possam aumentar as dependências do fornecedor, elas oferecem custo operacional, complexidade e tempo de engenharia reduzidos.

 

Práticas recomendadas de microsserviços

O projeto de uma arquitetura de microsserviço exige planejamento e consideração cuidadosos. Para criar aplicativos bem-sucedidos baseados em microsserviços, os desenvolvedores devem observar as seguintes práticas recomendadas:

  • Design orientado por domínio: O design orientado por domínio (DDD) é uma abordagem de design que se concentra no domínio comercial e no comportamento do aplicativo. Ele ajuda os desenvolvedores a dividir o aplicativo em componentes menores e mais gerenciáveis, facilitando a criação, a implantação e a manutenção.
  • Limites do serviço: Ao projetar uma arquitetura de microsserviço, é essencial definir limites claros de serviço. Cada microsserviço deve ter uma responsabilidade bem definida.
  • Pequenos serviços: Mantenha os serviços "micro", concentrados em uma única responsabilidade. Perder de vista esse princípio fundamental sacrificará a capacidade de gerenciamento.
  • Design de API: Os microsserviços se comunicam por meio de APIs, portanto, use APIs consistentes, dimensionáveis e seguras que restrinjam o acesso aos dados a aplicativos, usuários e servidores autorizados.
  • Gerenciamento de dados descentralizado: Os aplicativos de microsserviços exigem uma variedade de opções de armazenamento e banco de dados. Cada microsserviço deve ter seu próprio armazenamento de dados. Essa abordagem ajuda a evitar inconsistências de dados e permite que o senhor dimensione cada microsserviço de forma autônoma. O senhor deseja que a equipe de desenvolvimento escolha o banco de dados de cada serviço para garantir que ele seja o mais adequado ao projeto.
  • Pipelines de CI/CD: A implementação da CI/CD o ajudará a encontrar e corrigir bugs rapidamente, o que é especialmente valioso com várias bases de código para gerenciar em uma arquitetura de microsserviços.
  • Resiliência intencional: Proteger o aplicativo contra desligamentos por falha de dependência. Não use chamadas de procedimento remoto (RPCs) entre microsserviços, se possível, e incorpore recursos como disjuntores para impedir falhas em cascata.
  • SOP: Desenvolver procedimentos operacionais padrão que definam convenções de codificação, estruturas de diretório e protocolos de comunicação. Seguir um conjunto de padrões resultará em microsserviços consistentes e gerenciáveis.

 

Adoção de microsserviços

eBay, Etsy, Uber - inúmeras empresas desmontaram seus aplicativos monolíticos e os refatoraram em arquiteturas baseadas em microsserviços para capitalizar vantagens em escala, agilidade nos negócios e ganhos financeiros.

As organizações que planejam fazer a transição para microsserviços devem primeiro adotar o DevOps, que o preparará para gerenciar as complexidades que encontrará. Em um nível básico, preveja os estágios descritos abaixo ao mapear seu projeto.

Identificar as capacidades de negócios

A primeira etapa da migração para a arquitetura de microsserviços é identificar os recursos ou capacidades comerciais que seu aplicativo precisa suportar. Isso o ajudará a definir o escopo do seu aplicativo e informará suas decisões sobre quais recursos devem ser priorizados para desenvolvimento, além de como esses microsserviços devem ser projetados e integrados uns aos outros.

Decompor o aplicativo monolítico

A maioria das organizações usa o design orientado por domínio ou a decomposição baseada em recursos para decompor seus aplicativos monolíticos.

Depois de identificar os recursos comerciais do aplicativo, defina os limites de serviço para cada microsserviço, garantindo que cada microsserviço tenha uma responsabilidade distinta e bem definida. O senhor deve mapear as dependências entre os recursos comerciais, os armazenamentos de dados e os sistemas externos. Com base nos contextos e dependências limitados, defina os microsserviços que substituirão o aplicativo monolítico.

Cada microsserviço, focado em um único recurso comercial, deve ter interfaces claras. Analise como as entidades de dados são acessadas e, por fim, considere como particionar os dados para reduzir as dependências entre os serviços.

Definir interfaces de serviço

Implementar as interfaces de serviço para cada microsserviço, garantindo que a interface reflita a responsabilidade exclusiva do microsserviço. O senhor pode usar diferentes técnicas, como APIs RESTful ou protocolos de mensagens, para definir as interfaces de serviço.

Implementar e testar os serviços

Dependendo dos requisitos e da experiência do senhor, escolha as linguagens de programação e as estruturas para implementar os serviços. Iterar o projeto conforme necessário, incluindo o teste de novas interfaces, protocolos de comunicação e armazenamentos de dados.

Containerize os serviços

Depois de implementar e testar os serviços, o senhor deverá colocá-los em contêineres usando tecnologias de contêineres, como o Docker ou o Kubernetes. A conteinerização permitirá que o senhor implante e gerencie os serviços de forma independente.

Automatize a implantação e a orquestração

Automatize a orquestração dos serviços usando ferramentas como o Kubernetes ou o Docker Swarm. Além de simplificar a implantação de serviços com eficiência, a automação por meio do Kubernetes ou do Docker melhorará a confiabilidade e a disponibilidade do aplicativo. Qualquer uma das plataformas pode detectar quando uma instância de serviço falha ou deixa de responder e tomar medidas para corrigir o problema. O Kubernetes, por exemplo, pode reiniciar instâncias com falha ou reprogramá-las para outros nós, enquanto o Docker pode migrar automaticamente o contêiner com falha para outro nó.

Monitorar e gerenciar os serviços

A decomposição de um aplicativo monolítico não é um processo único. Ele requer manutenção e atualizações à medida que os requisitos do aplicativo e de seus usuários evoluem. Monitore os novos microsserviços e acompanhe as principais métricas, como o tempo de resposta e a utilização de recursos.

 

Protegendo os microsserviços

Os aplicativos de microsserviços altamente distribuídos e nativos da nuvem introduzem complexidades de segurança. Em vez de um único ponto de entrada, eles vêm com dezenas, se não centenas, de possíveis pontos de vulnerabilidade, e cada um deles deve ser protegido. As APIs e as dependências de código representam apenas duas fontes de risco na superfície de ataque em expansão do aplicativo moderno.

Segurança de API e aplicativos da Web

Os aplicativos modernos consomem informações de várias fontes: solicitações padrão da Web, chamadas de API de dispositivos móveis, eventos na nuvem, comunicação de telemetria de dispositivos IoT, armazenamento na nuvem etc. Além disso, uma única solicitação da Web de um cliente (ou seja, tráfego norte-sul) pode gerar centenas de chamadas de API entre microsserviços internos (ou seja, tráfego leste-oeste).

A complexidade dos aplicativos da Web centrados em API exige estratégias dimensionáveis, flexíveis e de várias camadas que funcionem para qualquer tipo de carga de trabalho em qualquer tipo de ambiente ou arquitetura de nuvem. Proteger a interface da web de front-end do aplicativo nativo da nuvem não é suficiente. Os aplicativos nativos da nuvem exigem proteção da camada de aplicativos para APIs nativas da nuvem. A segurança de aplicativos Web e API (WAAS) é essencial.

Dependências de código e análise de composição de software

Os componentes de software de código aberto compõem aproximadamente 70% dos aplicativos nativos da nuvem. Embora isso agilize o desenvolvimento, muitos pacotes de código aberto e suas dependências contêm vulnerabilidades. Além disso, cada versão de um pacote OSS orientado por dependência pode alterar a funcionalidade crítica. Sem visibilidade total, as vulnerabilidades não são detectadas.

Ferramentas autônomas de análise de composição de software (SCA) revelam riscos de código aberto muito tarde no ciclo de vida do desenvolvimento, o que causa um acúmulo de vulnerabilidades que nem sempre podem ser resolvidas. Ferramentas separadas para SCA e segurança de IaC resultam em alertas ruidosos sem contexto e conhecimento dos riscos interconectados. Como as lacunas são inevitáveis sem a cobertura do tempo de execução e da carga de trabalho, é melhor proteger os aplicativos nativos da nuvem com segurança nativa da nuvemintegrada.

Code-to-Cloud CNAPP

Identificando e priorizando os riscos críticos de todo o aplicativo nativo da nuvem, uma plataforma de proteção de aplicativos nativos da nuvem (CNAPP) integra vários tipos de segurança para oferecer proteção abrangente de código para nuvem - gerenciamento de postura de segurança na nuvem (CSPM), proteção de carga de trabalho na nuvem, gerenciamento de direitos de infraestrutura na nuvem (CIEM), gerenciamento de postura de segurança do Kubernetes (KSPM), segurança de infraestrutura como código, WAAS, SCA e muito mais.

A liderança em segurança da nuvem que explora a melhor forma de proteger as necessidades de desenvolvimento rápido de aplicativos que empregam tecnologias nativas da nuvem, como contêineres, microsserviços e funções sem servidor, deve considerar a adoção de um CNAPP.

 

Perguntas frequentes sobre microsserviços

Todos os aplicativos nativos da nuvem são aplicativos de microsserviços, mas nem todos os aplicativos de microsserviços são nativos da nuvem. A arquitetura de microsserviços pode ser implementada no local ou na nuvem e não requer necessariamente tecnologias ou ferramentas específicas da nuvem.
Os microsserviços se comunicam por meio de APIs, e um gateway de API é frequentemente usado como uma camada intermediária, especialmente à medida que o número de serviços em um aplicativo aumenta. Localizado na borda externa de seus microsserviços, o gateway de API atua como um proxy para gerenciar todo o tráfego de entrada, fornecendo um único ponto de entrada e encaminhando todas as solicitações.
Um service mesh é uma camada dedicada de infraestrutura aplicada a um sistema baseado em microsserviços que permite que os desenvolvedores separem e gerenciem a comunicação entre serviços em uma arquitetura de microsserviços. A tecnologia de malha de serviços pode lidar com coisas como descoberta de serviços, balanceamento de carga e gerenciamento de tráfego, liberando os desenvolvedores para que se concentrem em escrever códigos em vez de gerenciar a infraestrutura.
Como os microsserviços são sistemas distribuídos com vários componentes e serviços, o registro e o monitoramento desempenham um papel essencial na preservação da integridade geral e do desempenho do sistema. Cada microsserviço gera um registro, que precisa ser agregado e analisado para identificar problemas no sistema.
Os microsserviços sem estado não mantêm informações de estado entre as solicitações. Projetados para serem autônomos, eles não dependem de dados armazenados anteriormente para lidar com as solicitações recebidas. Os microsserviços sem estado são mais fáceis de gerenciar e de escalar, mas podem exigir uma complexidade adicional para manter a consistência dos dados em várias solicitações. Os microsserviços sem estado costumam ser usados para tarefas simples e independentes, como validação ou autorização de dados, em que não são necessárias operações com estado.
Os microsserviços com estado são um tipo de microsserviço que mantém o estado de um aplicativo. Isso significa que o microsserviço tem acesso e pode modificar os dados que são mantidos entre as solicitações, o que pode incluir dados de sessão do usuário, conexões de banco de dados ou outras informações de estado. Os microsserviços com estado podem oferecer benefícios como melhor desempenho, melhor consistência dos dados e menor complexidade do design do aplicativo. No entanto, eles exigem gerenciamento adicional e podem ser difíceis de escalar horizontalmente.
Se um domínio representa um problema a ser resolvido - como acontece no design orientado por domínio (DDD) - o modelo de domínio é o modelo que implementa a solução para o problema.
O contexto delimitado representa um conjunto de recursos funcionais, um modelo de domínio, dentro do limite de um domínio. Em outras palavras, assim como um subdomínio é um segmento do domínio, um contexto limitado é um segmento da solução. Um microsserviço, portanto, é um contexto delimitado, mas nem todos os contextos delimitados são microsserviços. Os contextos limitados, na verdade, não são necessariamente isolados uns dos outros.
O rastreamento distribuído é uma técnica que permite aos desenvolvedores rastrear uma solicitação por meio de vários microsserviços e identificar quaisquer problemas no fluxo da solicitação. As ferramentas de rastreamento distribuído permitem que os desenvolvedores acompanhem o fluxo de solicitações pelo sistema e identifiquem quaisquer gargalos ou problemas no fluxo de solicitações.
As arquiteturas de microsserviços são projetadas e implementadas usando a linguagem de padrão de microsserviços. As linguagens de padrões incluem padrões para fornecimento de eventos, gerenciamento de dados, comunicação e muito mais.
Os padrões de descoberta de serviços ajudam os aplicativos e serviços a se encontrarem em um ambiente de microsserviços distribuídos. As instâncias de serviço mudam dinamicamente devido a dimensionamento, atualizações e falhas de serviço, e esses padrões fornecem mecanismos de descoberta para lidar com a transitoriedade. O balanceamento de carga pode usar padrões de descoberta de serviço usando verificações de integridade e falhas de serviço como gatilhos para reequilibrar o tráfego.
Os padrões de microsserviços adaptadores traduzem as relações entre classes ou objetos que, de outra forma, seriam incompatíveis. Um aplicativo que depende de APIs de terceiros pode usar um padrão de adaptador para garantir a comunicação entre o aplicativo e as APIs.
Os padrões de aplicativos Strangler ajudam a gerenciar o processo de refatoração de um aplicativo monolítico em microsserviços, substituindo lentamente partes do monolito por microsserviços.
Os padrões backend-for-frontend (BFF) identificam como os dados são buscados entre o servidor e os clientes. O BFF insere uma camada entre a interface do usuário e os recursos que a interface chama, o que permite que os desenvolvedores criem e ofereçam suporte a um tipo de backend por interface de usuário, usando as melhores opções para essa interface. Isso, por sua vez, melhora o desempenho do front-end, adaptando os recursos às necessidades da interface.
Os padrões de entidades e agregados classificam os dados de forma significativa. Por exemplo, um site de comércio eletrônico pode usar o padrão de entidade para representar produtos individuais e o padrão de agregado para representar pedidos, que são coleções de produtos encomendados por um comprador.
O armazenamento em cache é uma parte importante de muitos aplicativos de microsserviços, pois pode ajudar a melhorar o desempenho e reduzir a carga no backend. A maioria dos provedores de serviços em nuvem (CSPs) fornece um serviço de cache gerenciado a seus clientes.
O armazenamento de objetos é essencial para muitos aplicativos de microsserviços, pois permite o armazenamento e a recuperação de grandes arquivos e objetos de dados. A maioria dos CSPs oferece um serviço gerenciado de armazenamento de objetos que pode ser usado para armazenar e recuperar objetos para aplicativos de microsserviços.