Profissional do ramo empresarial em um escritório digitando em um notebook com uma mão enquanto olha para um celular na outra mão

Microsserviços e a arquitetura de microsserviços

Os microsserviços são usados para criar aplicativos baseados em nuvem que estão implantados em um modelo distribuído. Eles são altamente escaláveis e normalmente demandam menos tempo e esforço de construção e manutenção quando comparados à arquitetura monolítica.

Os microsserviços implantam rapidamente na nuvem

  • A arquitetura de microsserviços é uma metodologia de design pensada para a implantação rápida e atualização de aplicativos baseados em nuvem.

  • Os microsserviços normalmente operam de forma independente, muitas vezes em contêineres que estão frouxamente acoplados por uma interface padrão.

  • Os benefícios dos microsserviços incluem a velocidade de implantação, a facilidade de atualização e o suporte para escala e complexidade aumentadas.

author-image

Por

O que são os microsserviços?

Os microsserviços são módulos leves e frouxamente acoplados que podem servir de blocos de construção de aplicativos complexos baseados em nuvem. Embora os microsserviços individuais possam funcionar de forma independente, eles são frouxamente acoplados sob uma interface unificada.

A arquitetura de microsserviços é considerada uma substituição moderna e flexível ao modelo de desenvolvimento mais tradicional da arquitetura monolítica.

Em uma arquitetura monolítica, geralmente há um servidor físico ou virtualizado alocado para cada aplicativo e esses servidores estão sempre em execução. A escala e disponibilidade do aplicativo são aspectos completamente dependentes do hardware, que é uma entidade fixa.

Os microsserviços, por contraste, podem operar várias instâncias em um único servidor ou em vários servidores, à medida que os recursos escalam dinamicamente para dar suporte às demandas da carga de trabalho. Os microsserviços individuais são frequentemente organizados em contêineres para melhorar a portabilidade e a escalabilidade.

As diferentes características dos microsserviços

Como um processo de desenvolvimento, o quadro de microsserviços é dotado de certas características que são comuns, mas não universais.

Essas características incluem:

  • Componentes. Os microsserviços são tipicamente compostos por componentes de software discretos que são substituíveis e atualizáveis. Essa arquitetura tem implicações para a tecnologia de gerenciamento em nuvem, porque cada um dos microsserviços deve ser provisionado, monitorado e atualizado separadamente.
  • Serviços. Os componentes compreendem serviços que estão disponíveis para a comunicação sob demanda, mas podem não estar ativos continuamente entre solicitações ou chamadas.
  • Implementação independente. No geral, os componentes individuais de serviço operam de forma independente uns dos outros dentro do quadro de microsserviços. Se um componente for modificado ou atualizado, há pouco impacto em outros serviços e componentes, especialmente em comparação com uma arquitetura monolítica mais tradicional.
  • Segurança. A comunicação entre microsserviços é frequentemente criptografada com a segurança da camada de transporte mútuo (mTLS) para proteger os dados de malware e invasões durante trânsitos.
  • Conteinerização. Os microsserviços são frequentemente implantados em contêineres para portabilidade e escalabilidade adicionais.

As arquiteturas de microsserviços tornam os aplicativos mais escaláveis e aceleram seu desenvolvimento, permitindo mais inovação e agilizando o tempo de comercialização de novos recursos.

—Amazon Web Services (AWS)

Benefícios dos microsserviços e aplicativos em nuvem

Os microsserviços continuam ganhando popularidade devido à flexibilidade inata de sua arquitetura na nuvem. De fato, um estudo recente realizado pela Intel revelou que 83% de todos os novos aplicativos nativos em nuvem e soluções SaaS estão usando microsserviços. 1

Um dos maiores benefícios dos microsserviços é a velocidade e a flexibilidade da implantação. À medida que os aplicativos em nuvem e as cargas de trabalho continuam crescendo em escala e escopo, torna-se cada vez mais difícil e demorado adaptar as arquiteturas monolíticas para atender às novas demandas. Os microsserviços são desagregados, de modo que seu desenvolvimento, implantação e manutenção podem ser gerenciados em um modelo distribuído.

Por exemplo: várias equipes de desenvolvimento independentes podem ser responsáveis por um ou mais microsserviços. A distribuição da responsabilidade facilita a reorganização da função DevOps de acordo com os recursos de negócios de cada unidade. Isso pode levar à modernização de todo o processo de desenvolvimento e eliminação dos isolamentos.

Os microsserviços também apresentam alguns desafios de implantação. Os módulos individuais podem ser executados em sistemas diferentes para atender a uma demanda, o que pode provocar inconsistência de desempenho entre um módulo e o seguinte.

Da mesma forma, a latência pode se tornar um problema para alguns microsserviços, como quando há picos de demanda. Esses problemas podem ser geralmente resolvidos promovendo um excesso de abastecimento de recursos para acomodar os picos da demanda.

Como os microsserviços são desagregados, uma falha de serviço que afeta um módulo pode causar pouca ou nenhuma interrupção nos demais. Isso é um benefício, mas uma falha em um serviço também pode gerar desafios.

Por exemplo: pode ser difícil depurar um serviço com falha uma vez que ele pare de funcionar. Uma solução possível é coordenar a infraestrutura e monitorar todos os processos e fluxos de dados com antecedência. Esses protocolos de monitoramento podem se beneficiar dos coletores de telemetria habilitados por hardware e das unidades de monitoramento de desempenho (PMUs) incorporadas em plataformas em nuvem baseadas em tecnologia Intel®.

Como a arquitetura de microsserviços funciona

Em uma arquitetura de microsserviços, um aplicativo complexo é desagregado em recursos discretos que podem ser desenvolvidos e operados de forma independente. Os microsserviços individuais se comunicam entre si, muitas vezes através das APIs, e estão frouxamente conectados, mas cada microsserviço pode ser desenvolvido, implantado e atualizado separadamente.

A implantação de microsserviços geralmente segue um de três padrões:

  1. Nativos da nuvem. Alguns aplicativos e serviços já estabelecidos e de alto volume começam como microsserviços e permanecem na nuvem. De acordo com a International Data Corporation (IDC), cerca de 56% dos microsserviços são nativos da nuvem, enquanto os 44% restantes se originaram como aplicativos herdados.2
  2. Refactor and shift. Essas implantações começam no local ou em um data center na borda e passam por uma refatoração para se adaptar à arquitetura de microsserviços baseada na nuvem. A refatoração pode incluir o remapeamento de bancos de dados e outros recursos associados à arquitetura monolítica para que eles sejam emparelhados aos microsserviços correspondentes.
  3. Lift and shift. Algumas organizações migram seus aplicativos para uma arquitetura de microsserviços sem fazer a refatoração, em uma transição simples que consiste em “lift and shift”.

Microsserviços e DevOps

A natureza desagregada da arquitetura de microsserviços muitas vezes leva as equipes de DevOps a adotarem uma abordagem multifuncional no desenvolvimento de aplicativos.

Ao invés de desenvolver aplicativos de softwares em uma pilha, com uma equipe designada para trabalhar no firmware e outra no middleware, e uma terceira encarregada das interfaces de usuário, por exemplo, é mais provável que o esforço de desenvolvimento dos microsserviços se organize em torno de recursos empresariais.

De certa forma, os processos de desenvolvimento e a organização das equipes de DevOps podem reproduzir a própria estrutura de microsserviços, com suas unidades semi-independentes e autolimitadas que interagem livremente, transcendendo barreiras e isolamentos.

É muito importante para todos os interessados entender que a modernização de um aplicativo monolítico em uma arquitetura de microsserviços é uma jornada épica e que pode durar muitas iterações. É necessário que arquitetos e desenvolvedores avaliem de perto vários aspectos do monolito e elaborem uma abordagem de migração para cada um deles.

Protegendo os microsserviços

Como os microsserviços são frequentemente concebidos para interagir uns com os outros, é importante proteger os dados enquanto eles estão em uso em cada extremo da interação ou em trânsito entre esses dois pontos.

A criptografia com segurança de camada de transporte mútua (mTLS) é uma solução comum que ajuda a reduzir o risco de invasão e malware para os dados em cada equipamento e durante o trânsito. O objetivo do mTLS é criptografar cada solicitação feita por cada microsserviço. Essa abordagem holística da segurança forma a base de um ambiente de confiança zero, onde cada microsserviço, usuário e conexão deve ser verificado e autorizado de forma independente.

Nem sempre é necessário incluir a autenticação e a criptografia em cada microsserviço individual. Para evitar redundâncias, muitos desenvolvedores implantam um serviço de malha. A malha atua como uma camada de infraestrutura ou instância de proxy na arquitetura de microsserviços para ajudar a proteger, controlar e monitorar as comunicações.

Os protocolos de segurança podem exigir uma potência de computação significativa, o que pode levar à retenção de recursos e à demora na entrega de microsserviços. Para acelerar os algoritmos de criptografia e ajudar a reduzir a latência, desenvolvedores de microsserviços podem implantar a Intel® Data Protection Technology (Intel® DPT).

A Intel® DPT inclui o Intel® Advanced Encryption Standard – New Instructions (Intel® AES-NI), as Intel® Secure Key Instructions e o Intel® Digital Random Number Generator (Intel® DRNG) para a criação rápida de senhas de criptografia.

Essas proteções avançadas e algorítmicas são otimizadas para os recursos de segurança integrados dos processadores escaláveis Intel® Xeon®. Por exemplo: as extensões Intel® Advanced Vector Extensions 512 (Intel® AVX-512) e as inovações algorítmicas, como a criptografia simétrica, o hash seguro e a costura de função, oferecem melhorias importantes de desempenho para criptografia.

Esses e outros recursos de segurança habilitados por hardware são oferecidos pelos principais provedores de serviços em nuvem em instâncias alimentadas pelos processadores escaláveis Intel® Xeon®.

Exemplos de arquitetura de microsserviços e seu quadro evolutivo

À medida que os aplicativos em nuvem continuam crescendo em escala e escopo, os desenvolvedores dependem cada vez mais dos microsserviços para criar aplicativos complexos e multifuncionais e escalá-los rapidamente para acomodar modelos de uso em transformação.

Para cada implantação baseada em microsserviços, há tipicamente serviços de componentes múltiplos e frouxamente conectados que funcionam separadamente. Esses componentes modulares trabalham juntos para criar um aplicativo ou uma experiência de usuário integrada.

Em alguns aplicativos baseados em microsserviços, nos quais as experiências dos usuários podem ser diferenciadas de acordo com as características do grupo, um benefício do uso dos microsserviços é a possibilidade de compartilhar e reusar o código. Essa abordagem elimina a necessidade de criar e manter múltiplas instâncias do mesmo serviço. Se uma das experiências diferenciadas exigir personalização, microsserviços adicionais podem ser incorporados.

Por exemplo: aplicativos populares de compartilhamento de carona são baseados em microsserviços, mas motoristas e passageiros têm experiências de usuário distintas. O gerenciamento de motoristas, rastreamento de localização, perfil de passageiros e processamento de pagamento estão entre os microsserviços diferentes que juntos dão suporte às interfaces dos usuários e motoristas em seus respectivos dispositivos portáteis. Todas as interfaces compartilham a mesma marca, mas algumas das funcionalidades podem ser diferentes para cada grupo.

Uma arquitetura de microsserviços também é um ambiente comum para lojas de e-commerce. A recomendação de um produto e os processos de checkout podem ser desenvolvidos e implantados como microsserviços individuais, mas o comprador teria a experiência de ambos os processos dentro da interface e ambiente da loja virtual.

Quando usar microsserviços

Uma solução de microsserviços pode ajudar a migrar e escalar aplicativos ao reduzir as soluções mais complexas nas partes que a compõem. Cada microsserviço é desenvolvido e implantado de forma independente e vários microsserviços operam juntos como uma entidade livremente integrada.

As organizações estão mais suscetíveis a usar microsserviços quando desenvolvem uma nova solução nativa na nuvem. Elas também podem implantar microsserviços quando uma arquitetura monolítica existente se torna claramente incapaz de atender às suas necessidades de mudança.

A transição para uma arquitetura de microsserviços pode levar a mudanças na organização e na estrutura das próprias equipes de DevOps. Com o tempo, as equipes podem se alinhar com seu novo foco multifuncional nos recursos empresariais, ao invés de se isolar e reproduzir as camadas funcionais da pilha de tecnologia.

Perguntas frequentes

Perguntas frequentes

Os microsserviços são módulos leves que podem servir como blocos de construção de aplicativos complexos baseados na nuvem. Embora os microsserviços individuais possam funcionar de forma independente, eles são frouxamente acoplados sob uma interface unificada.

Os microsserviços podem ser implantados de forma rápida e fácil, se comparados às arquiteturas monolíticas. A estrutura de microsserviços também escala facilmente para acomodar cargas de trabalho cada vez mais complexas e modelos de uso expandidos.