O monolito, microsserviços e computação sem servidor: prós e contras

A escolha entre o monolito, os microsserviços e a arquitetura sem servidor para o seu produto é essencial para atender às necessidades do negócio e garantir uma experiência positiva ao usuário final. Como escolher certo?

Quando um novo produto de software precisa ser escrito, os desenvolvedores precisam pensar na arquitetura do produto de antemão. A implantação de um produto monolítico permitirá alcançar as metas de negócios? Talvez fosse melhor dividir o aplicativo em vários microsserviços que interagem por meio de APIs? Ou, melhor ainda, talvez devêssemos usar alguns serviços de computação sem servidor, como o Azure Functions ou o AWS Lambda, e simplesmente implantar nosso código e não nos preocuparmos com a arquitetura subjacente de forma alguma? Vamos dar uma olhada em cada uma dessas possibilidades e seus prós e contras.

Arquitetura de aplicativos Monolith: desenvolvimento complexo, operações simples

Aplicativos monolíticos são os mais antigos. A maioria das soluções legadas corporativas é construída usando arquitetura monolítica e, apesar de todas as piadas sobre a codificação no topo do dinossauro, essas soluções têm uma vantagem inegável: elas ainda funcionam e fazem bem o seu trabalho.
Mesmo sendo percebidas como enormes caixas pretas com entranhas desconhecidas, essas soluções têm algoritmos de gerenciamento claros, um número restrito de portas de interação externas e comportamento previsível.

Sua maior falha é a complexidade de atualizá-los, já que o desenrolar da confusão de código deixada pelo processo de desenvolvimento original pode ser literalmente impossível. Isso pode ser devido à ausência de desenvolvedores iniciais ou devido ao código ser escrito usando uma estrutura abandonada há muito tempo, etc.

Assim, a maior desvantagem dos monólitos herdados é a maior vantagem deles ao mesmo tempo. Eles são limitados e podem representar um número limitado de problemas que possuem um número limitado de soluções. Isso torna a operação previsível e relativamente simples.

Microservices: desenvolvimento simples, operações complexas

Quando em vez de uma solução monolítica você tem um monte de microsserviços interconectados, as coisas parecem ficar muito mais fáceis. Cada componente pode ser desenvolvido, testado e implantado por uma equipe separada, pode ser dimensionado horizontalmente com facilidade e pode ser reutilizado como parte de outros produtos. Os recentes avanços na funcionalidade e popularidade dos contêineres Docker e da plataforma de orquestração de contêineres Kubernetes tornam o uso de microsserviços para entrega de software muito mais conveniente e viável.

As desvantagens do uso dos microsserviços incluem a maior complexidade do desenvolvimento de cada componente para poder responder às solicitações dos outros componentes; maior complexidade de executar as operações do sistema; aumento das demandas operacionais de garantir o processo de CI / CD, etc. Um dos desafios mais difíceis para muitas empresas é o fato de que, para usar a arquitetura de microsserviço de maneira eficiente para um produto de software, a empresa deve empregar uma equipe de DevOps experiente ou optar por DevOps-as-a-Service de algum provedor de serviços gerenciados .

Computação sem servidor: escreva o código, o CSP cuida do resto

A computação sem servidor permite executar quaisquer funções (daí o nome para as ofertas do Google, Microsoft e IBM – Funções do Google Cloud , Funções do Azure e Funções de Nuvem da IBM ) que você pode precisar sem se preocupar com a infraestrutura – os servidores, seus softwares e ferramentas e dimensionamento vem com a oferta. Você simplesmente escreve o código e o executa, a plataforma cuida do resto. Embora isso possa ser uma simplificação excessiva, o uso de computação sem servidor pode ser extremamente benéfico para a realização de tarefas únicas ou processos auxiliares.

Considerações finais sobre o monolito, microsserviços e computação sem servidor

Estas 3 abordagens não são contraditórias, elas devem ser consideradas apenas uma escolha de ferramentas. Se o seu produto é relativamente simples e pode ser executado com eficiência como um monólito – faça isso, não complique demais a situação dividindo-a em microsserviços. Se você precisar de um código para ser executado após o acionamento por um determinado evento e não desejar prestar atenção desnecessária ao suporte da infraestrutura para isso – aproveite os recursos da computação sem servidor. Se você precisar ser capaz de recombinar as partes do seu produto ou atualizá-las separadamente – a arquitetura de microsserviço dá uma mãozinha. Assim, achamos que os verdadeiros vencedores desta competição são os desenvolvedores, que agora simplesmente têm mais ferramentas à sua disposição.

Esperamos que este artigo seja uma leitura interessante e tenha invocado algumas considerações. Você tem uma experiência de dividir o monolito em microservices para compartilhar? Ou você usa computação sem servidor para um grande proveito? Por favor, compartilhe seus pensamentos e idéias sobre o assunto! Se você precisar de alguma ajuda para configurar os microsserviços e a computação sem servidor, ou qualquer outro serviço DevOps – basta nos informar , estamos sempre felizes em ajudar!

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *