Quais são os benefícios dos microsserviços e eles pagarão pelo seu negócio?

Publicados: 2022-01-12

O conceito de microsserviços, uma abordagem para projetar um aplicativo de software como um conjunto de pequenos serviços, existe desde pelo menos 2015. Oferecendo benefícios como implantação independente e escalabilidade de componentes, os microsserviços estão na moda hoje. Isso ocorre porque esses benefícios de microsserviços se traduzem em velocidades de desenvolvimento de software incrivelmente mais rápidas. Com os consumidores sendo rápidos em mudar suas preferências e comportamentos, os adotantes de microsserviços são capazes de acompanhar. A vida agora é ótima, dizem eles. Cerca de 56% das empresas participantes de uma pesquisa recente do IMB planejam adotar uma abordagem de microsserviços nos próximos 24 meses.

Quase 80% dos usuários atuais dizem que seus negócios provavelmente aumentarão o investimento em microsserviços. As vantagens dos microsserviços levaram Netflix, Amazon, eBay, Twitter e muitos outros gigantes da tecnologia a migrar da arquitetura monolítica para a arquitetura de microsserviços. Mas sua empresa deve usar microsserviços? Depende do contexto e se os prós dos microsserviços superam os contras do seu aplicativo. Este blog fornece uma visão geral de uma abordagem de microsserviços versus abordagem monolítica e cinco principais benefícios do uso de uma arquitetura de microsserviços. Ele também compartilha um pouco da experiência de microsserviços da ITRex e oferece dicas sobre quando as empresas devem (não) usar microsserviços. Mergulhe.

Definição e comparação de microsserviços com arquitetura monolítica

O que é uma arquitetura de microsserviços ? Um estilo de microsserviços é uma abordagem para desenvolver aplicativos de software nativos da nuvem como um conjunto de pequenos componentes ou serviços, que são projetados em torno de um único fluxo de trabalho de negócios e funcionam em conjunto. Essencialmente, os microsserviços fazem parte de uma mudança fundamental para o DevOps, uma cultura na qual as equipes de desenvolvimento e operações de TI cooperam estreitamente usando ferramentas de automação para entregar mais rapidamente.

Microsserviços:

  • são desenvolvidos de forma autônoma,
  • usam seu próprio banco de dados e podem ser escritos em diferentes idiomas,
  • comunicar via APIs com protocolos leves como HTTP, mediadores de mensagens ou streaming de eventos, e
  • executar uma funcionalidade de negócios específica.

Por exemplo, um aplicativo de comércio eletrônico baseado em microsserviços pode ter serviços independentes responsáveis ​​por imagens de produtos, gerenciamento de perfis de usuários, pesquisa, verificação de inventário, processamento de pagamentos e envio. O front-end (o lado do site voltado para o cliente) é desacoplado do back-end (o lado voltado para os negócios) para que seja possível personalizá-los e gerenciá-los separadamente. Se você pegar um exemplo da Amazon, uma arquitetura de microsserviços pode parecer esmagadora, se não aterrorizante.

No entanto, sem usar uma arquitetura de microsserviços, a Amazon dificilmente teria evoluído para uma das empresas mais valiosas do mundo (avaliada por um valor de mercado de US$ 1,694 trilhão em dezembro de 2021). A decisão de aproveitar os benefícios dos microsserviços foi tomada no início dos anos 2000, quando a Amazon entendeu que não estava conseguindo escalar na velocidade do crescimento da base de clientes devido ao desenvolvimento lento e problemas de codificação.

A Netflix despertou para os benefícios de uma arquitetura de microsserviços baseada em nuvem no final dos anos 2000, depois de não conseguir enviar DVDs aos clientes por alguns dias devido a uma enorme corrupção do banco de dados. Depois de dividir seu aplicativo em mais de 700 microsserviços, os engenheiros da Netflix podem hoje implantar código milhares de vezes por dia, permitindo que a empresa transmita cerca de 250 milhões de horas de conteúdo diariamente para mais de 200 milhões de membros em todo o mundo. Que arquitetura essas estrelas da tecnologia e muitas outras empresas usavam anteriormente, nos dias pré-nuvem? Eles usaram monólitos.

O que é uma arquitetura monolítica?

Um aplicativo monolítico é construído como uma única unidade que combina todos os componentes, incluindo uma interface de usuário do lado do cliente, operações do lado do servidor e um banco de dados. Normalmente, uma arquitetura monolítica:

  • tem uma única base de código para todas as funcionalidades,
  • é fortemente acoplado, e
  • usa dados centralizados.

Um aplicativo de comércio eletrônico desenvolvido usando uma abordagem monolítica consistiria em serviços front-end e back-end fortemente acoplados implantados como uma unidade, o que significa que quaisquer personalizações precisariam de alterações na base de código e na plataforma front-end (veja o diagrama abaixo para comparação).

As aplicações monolíticas estão longe de morrer. Na verdade, eles ainda podem ser uma boa escolha porque geralmente são mais fáceis e baratos de construir (pelo menos nos primeiros dias). No entanto, eles vêm com desvantagens. Uma alteração em uma parte, seja para fins de atualização ou dimensionamento, geralmente requer a reconstrução e a reimplantação de todo o sistema.

Da mesma forma, todo o sistema pode ser derrubado por uma parte com mau comportamento, o que significa que os monólitos são frágeis. Os monólitos também são difíceis de manter à medida que crescem, e a integração com ferramentas de terceiros também não é uma alegria. Essas desvantagens são difíceis de ignorar no ambiente de mercado disruptivo de hoje, no qual as empresas devem reagir rapidamente às mudanças para sobreviver e prosperar. Daí o burburinho sobre os benefícios dos microsserviços criados pelas equipes de DevOps.

5 principais benefícios dos microsserviços

1. Implantação independente

Essa talvez seja a vantagem mais importante dos microsserviços, pelo menos de acordo com Sam Newman, um dos pioneiros dos microsserviços. Fazer alterações em um aplicativo para melhorar o desempenho ou adicionar um novo recurso em resposta às necessidades emergentes do usuário é muito fácil com microsserviços independentes. Cada serviço pode ser modificado e atualizado sem tocar em todo o sistema. Eles também podem ser dimensionados independentemente um do outro se um recurso estiver sob muita carga devido ao excesso de solicitações. Por exemplo, você pode dimensionar apenas seu serviço de processamento de pagamentos se estiver recebendo mais pagamentos, sem aumentar o consumo de recursos por outros serviços. Dessa forma, o processo requer menos infraestrutura e gera economia de custos.

2. Raio de falha de explosão inferior

O baixo acoplamento de uma arquitetura de microsserviços também oferece outra vantagem dos microsserviços — melhor resiliência. Limites claros entre os serviços, juntamente com seu tamanho micro, limitam o impacto de novos lançamentos e garantem o isolamento de falhas. Uma falha em um serviço não desativa funcionalidades não relacionadas, com o restante do sistema permanecendo intacto e continuando a fornecer serviços aos usuários.

3. Isolamento de dados

Este é um terceiro benefício que os microsserviços oferecem se feitos corretamente. A soberania de dados por componente é um recurso essencial dos microsserviços. Uma arquitetura de microsserviços possibilita delinear claramente os serviços que tocam os dados, o que é fundamental, especialmente se a organização precisar cumprir os regulamentos de dados de saúde ou o GDPR.

4. Uso da tecnologia certa

Como os aplicativos monolíticos têm uma única base de código, é difícil personalizar uma abordagem tecnológica para cada funcionalidade e um compromisso é frequentemente procurado. Os microsserviços, por outro lado, são projetados em torno dos recursos de negócios por padrão, permitindo que as equipes escolham a melhor tecnologia disponível para uma funcionalidade específica para aproveitá-la ao máximo. Isso ocorre porque os microsserviços podem usar diferentes tecnologias ou linguagens de programação para diferentes componentes. Os microsserviços também simplificam a adoção da tecnologia mais recente ou a integração com ferramentas de terceiros conforme necessário. A ausência de dependência de fornecedor é outra vantagem de microsserviços naturalmente decorrente de sua arquitetura fracamente acoplada.

5. Eficiência

A abordagem de microsserviços permite que as empresas estabeleçam equipes pequenas e multifuncionais em torno de um serviço ou um conjunto de serviços que podem operar de maneira ágil. Esse modelo minimiza as transferências quando uma equipe precisa esperar que outra conclua sua tarefa, seja implantação ou teste, antes de iniciar seu trabalho. Sem dependência de outra equipe, a velocidade de desenvolvimento acelera. Os usuários estão relatando vários benefícios do uso de microsserviços, de acordo com a pesquisa do IMB com 1.200 executivos e desenvolvedores de TI. As vantagens de microsserviços mais importantes que eles sentiram incluem: 30% — Maior satisfação do cliente 29% — Melhor segurança dos dados da empresa/cliente 29% — Tempo de lançamento no mercado mais rápido 28% — Melhor desempenho do aplicativo 27% — Maior flexibilidade para escalar recursos ou queda de 26% — Maior produtividade dos funcionários Existem desafios com microsserviços? Bem, como diz uma citação popular, os microsserviços não são um almoço grátis. Leia.

A parte ruim dos microsserviços

1. Complexidade

A complexidade inerente dos microsserviços aumenta com o número de serviços. Essa complexidade é múltipla e atribuída ao seguinte:

  • O controle de cima para baixo nos níveis tecnológicos e operacionais é impossível
  • O teste é difícil e nunca haverá muita automação de teste
  • Implementar intercomunicações é complicado, então são necessários desenvolvedores talentosos
  • A quantidade de dados registrados é muito grande, o que pode levar à sua inconsistência
  • Problemas de compatibilidade podem surgir com novas versões
  • Há dificuldades em provisionar a quantidade certa de recursos

2. Custos

Os microsserviços oferecem às empresas mais opções para ganhar dinheiro, mas não para salvá-lo. Além do custo de contratação de desenvolvedores capazes de construir um ambiente de microsserviços complexo, há contas de nuvem e APIs. A boa notícia é que os custos contínuos podem ser significativamente otimizados, pois os microsserviços usam recursos sob demanda com base no pagamento conforme o uso.

3. Riscos de segurança

Metade dos entrevistados na pesquisa da IBM citou a segurança entre os principais desafios que enfrentaram em sua jornada de adoção de microsserviços. A segurança precisa ser incorporada desde o início, pois cada microsserviço tem seu próprio conjunto de pontos de entrada para se comunicar com outros por meio de vários níveis de infraestrutura, levando a uma maior exposição dos aplicativos a ataques. Além disso, dimensionar a infraestrutura aumenta o risco de perder o controle e a visibilidade dos componentes do aplicativo.

Quando (não) usar microsserviços

E, finalmente, nossa última pergunta: quando a arquitetura de microsserviços vale a pena? Embora o burburinho por trás dos microsserviços como um ajuste natural para aplicativos nativos da nuvem seja garantido, eles não devem ser seu estilo padrão. A literatura é simples: comece com um monólito e divida-o quando tiver problemas de escalabilidade ou consumo de recursos, ou qualquer outra coisa que justifique seguir o caminho dos microsserviços.

Aqui estão nossas principais dicas quando NÃO usar microsserviços:

1. Se você é uma startup, microsserviços são uma má ideia. Será mais sensato começar com um aplicativo monolítico e dividi-lo em componentes menores quando se tornar muito complicado para uma equipe de duas pizzas. O que você quer é executar experimentos baratos em vez de investir muito tempo, esforço e dinheiro na construção de uma arquitetura complexa para um produto cujo valor para o cliente ainda não foi validado. Os monólitos são uma maneira perfeita de testar (e descartar) MVPs para aprender rapidamente o que agregará valor aos seus clientes. Como Martin Fowler, outro respeitado guru de microsserviços, diz: i) Quase todas as histórias de microsserviços de sucesso começaram com um monólito que ficou muito grande e foi quebrado. ii) Quase todos os casos em que ouvi falar de um sistema que foi construído como um sistema de microsserviços do zero, acabou em sérios problemas. Observação: se o domínio do produto for incerto, você também não deve usar microsserviços quando estiver começando. Pode ser muito cedo para tomar decisões arquitetônicas complexas, e é provável que sua abordagem para configurar comunicações e limites esteja muito errada quando seu projeto amadurecer.

2. Microsserviços não são uma ótima opção para uma solução que não é complexa e pode ser mantida por uma equipe relativamente pequena. A implementação de uma arquitetura complexa de microsserviços para a ferramenta de agendamento de eventos da sua empresa pode realmente divertir seus desenvolvedores, mas valerá a pena todo o problema? Os microsserviços são, em primeiro lugar, projetados para resolver um problema: complexidade. Como afirma Martin Fowler, “nem mesmo considere microsserviços, a menos que você tenha um sistema complexo demais para ser gerenciado como um monólito”.

3. Não opte por microsserviços se seu aplicativo for muito pequeno para justificá-los. Seu gerenciamento de estoque ou sistemas de compras precisam ser convertidos em microsserviços se estiverem funcionando perfeitamente bem como deveriam? Mais uma vez, a ideia de usar microsserviços é dividir um aplicativo complexo em um conjunto de serviços menores. Decompor um código que já é pequeno e direto só teria o efeito de adicionar complexidade – agora você precisa navegar por todos os problemas de implantação, interoperabilidade e depuração com uma infinidade de artefatos em vez de implantar a unidade inteira à moda antiga.

OK, então, mas quando usar microsserviços para colher seus benefícios?

Os microsserviços fazem sentido quando qualquer uma das afirmações acima é falsa. Em outras palavras:

  • Quando seu produto evolui para algo complexo que precisa ser domado ou quando você deseja acompanhar as mudanças e adicionar recursos importantes que seriam impossíveis de implementar devido a gargalos da arquitetura monolítica.
  • Quando você está construindo um produto grande e complexo com um escopo definido do zero. Sempre que uma empresa deseja organizar dezenas de desenvolvedores para construir uma solução em grande escala com um conjunto claro de recursos, deve considerar a criação de equipes pequenas e multifuncionais, cada uma responsável por um único componente. Dessa forma, cada equipe pode trabalhar de forma independente, com pessoas dedicadas lidando com gerenciamento de API, pipelines de dados, esquemas e outros recursos.

Um exemplo justo e real do portfólio ITRex seria uma ferramenta interna de segurança cibernética que o cliente desejava converter em uma plataforma de segurança como serviço. Os microsserviços foram um ajuste natural para este projeto porque uma arquitetura monolítica simplesmente não pode fornecer a escalabilidade que uma solução SaaS precisa para atender ao crescente número de clientes ou flexibilidade para evoluir e ficar à frente dos hackers.

Outro projeto ilustrativo foi uma plataforma de big data com inteligência artificial para um varejista global. Nosso cliente queria uma solução independente de nuvem construída desde o início. Ficou claro desde o início que a plataforma lidaria com toneladas de dados e deveria ser projetada como escalável para atender a novas fontes de dados a serem adicionadas no futuro. Também tivemos que levar em consideração a necessidade de construir comunicações com vários serviços externos. Portanto, perceber os benefícios dos microsserviços neste projeto também foi uma estratégia natural. A arquitetura de microsserviços nos permitiu implantar esse sistema complexo sem problemas, usando o Kubernetes para orquestrar microsserviços e APIs.

E havia um espelho de fitness com inteligência artificial equipado com câmeras 3D e um modelo de ML que vinha com sensores de IoT conectados ao equipamento do usuário. Seus principais componentes, incluindo um painel de administração, um aplicativo Android e um sistema de gerenciamento de regras, foram construídos por diferentes equipes em diferentes estágios do projeto, cada um usando um código e arquitetura diferentes. Quando a complexidade de lidar com todos eles se tornou esmagadora, entendemos que precisávamos construir um back-end para gerenciamento centralizado. E nós os convertemos em microsserviços, redesenhando seu código e criando novos bancos de dados. Havia outros benefícios de usar uma abordagem de microsserviços, como evitar códigos ou funcionalidades duplicadas.

Portanto, em nossa experiência, é preferível usar microsserviços quando você precisar gerenciar volumes de dados crescentes, lidar com complexidades de interoperação ou garantir que seu sistema seja flexível o suficiente para evoluir com os negócios.

Nota final

A revolução dos microsserviços está se desenrolando à medida que as empresas estão percebendo as vantagens dos microsserviços para obter uma vantagem no mercado. Os benefícios dos microsserviços permitem que as organizações sejam ágeis e ágeis em meio à disrupção que se tornou o novo normal. Ser capaz de implantar software melhor e mais rápido os deixa prontos para qualquer coisa que venha depois de “o que vem a seguir”. Antes de seguir o exemplo, é importante que você saiba quais benefícios de microsserviços podem estar disponíveis para sua empresa e se o incômodo será justificado. Fora isso, os microsserviços podem fazer maravilhas.

Ainda confuso se sua empresa deve se apaixonar pelos benefícios dos microsserviços? Entre em contato com os consultores da ITRex. Nós vamos ajudá-lo a descobrir.


Originalmente publicado em https://itrexgroup.com em 10 de janeiro de 2022.