image

Acesse bootcamps ilimitados e +650 cursos pra sempre

60
%OFF
Article image
Anderson Franciscato
Anderson Franciscato08/05/2023 19:04
Compartilhe

A morte dos microserviços?

  • #Serverless
  • #AWS
  • #Microsserviços

Uma noticia hoje pegou muita gente de surpresa, a Amazon trocou ser servidor de microserviços para monolito, tá mas vamos lá o que é cada um?

Uma arquitetura monolítica é uma abordagem tradicional de desenvolvimento de software, em que todo o aplicativo é construído como uma única unidade, com todos os seus componentes (ou camadas) interconectados. Essa abordagem é relativamente simples de implementar, uma vez que todos os componentes estão em um só lugar, mas pode se tornar difícil de gerenciar e escalar à medida que o aplicativo cresce.

Por outro lado, uma arquitetura de microserviços é uma abordagem mais moderna em que o aplicativo é dividido em pequenos serviços independentes, cada um executando sua própria função específica e se comunicando com outros serviços por meio de APIs. Essa abordagem permite que cada serviço seja desenvolvido, implantado e dimensionado independentemente, o que torna o aplicativo mais flexível, escalável e fácil de gerenciar.

Para dar um exemplo prático, imagine uma loja online. Em uma arquitetura monolítica, todas as funcionalidades (como carrinho de compras, gerenciamento de pedidos, gerenciamento de estoque, etc.) seriam desenvolvidas como um único aplicativo, tornando-o um sistema grande e complexo. Já em uma arquitetura de microserviços, cada funcionalidade seria desenvolvida como um serviço independente, interagindo entre si por meio de APIs. Isso tornaria o sistema mais modular e fácil de gerenciar, além de permitir escalabilidade mais eficiente.

Vamos a outra parte importante. Vantagens e desvantagens de cada um .

Vantagens da arquitetura monolítica:

  • Simplicidade: É relativamente fácil construir e implantar um aplicativo monolítico, já que todas as partes estão em um só lugar.
  • Performance: Como todos os componentes estão em um só lugar, a comunicação entre eles é rápida e eficiente.
  • Facilidade de desenvolvimento: Uma vez que tudo está em um só lugar, é mais fácil para os desenvolvedores compreenderem como o aplicativo funciona como um todo.

Desvantagens da arquitetura monolítica:

  • Dificuldade de manutenção e evolução: Com o tempo, o aplicativo pode se tornar grande e difícil de gerenciar, dificultando a correção de bugs e a introdução de novas funcionalidades.
  • Escalabilidade limitada: À medida que o aplicativo cresce, pode ser difícil dimensioná-lo para lidar com um grande número de usuários ou transações simultâneas.
  • Riscos de falhas em cascata: Um problema em uma parte do aplicativo pode afetar todo o sistema, tornando-o menos resiliente a falhas.

Vantagens da arquitetura de microserviços:

  • Escalabilidade: Cada serviço pode ser dimensionado independentemente, o que permite que o sistema cresça de maneira mais eficiente e escalável.
  • Facilidade de manutenção e evolução: Como cada serviço é independente, é mais fácil corrigir bugs e introduzir novas funcionalidades sem afetar todo o sistema.
  • Resiliência: Falhas em um serviço não afetam necessariamente os outros serviços, tornando o sistema mais resistente a falhas.

Desvantagens da arquitetura de microserviços:

  • Complexidade: Como o sistema é dividido em vários serviços independentes, há mais componentes para gerenciar e monitorar, tornando-o mais complexo.
  • Overhead de comunicação: Como os serviços se comunicam por meio de APIs, pode haver overhead adicional na comunicação entre eles.
  • Desafios de integração: Integrar vários serviços em um aplicativo pode ser um desafio, especialmente quando há dependências complexas entre eles.

Em resumo, a escolha entre uma arquitetura monolítica ou de microserviços depende das necessidades e objetivos do projeto, bem como das capacidades e recursos da equipe de desenvolvimento. Ambas as abordagens têm vantagens e desvantagens, e a escolha certa dependerá das necessidades e prioridades específicas do projeto.

Outra parte importante é, quais grandes players do mercado usam cada coisa?

Arquitetura Monolítica:

  • Microsoft: fornece diversas ferramentas e tecnologias para desenvolvimento de aplicativos monolíticos, como o .NET Framework e o Visual Studio.
  • Oracle: oferece o Oracle Application Development Framework (ADF), uma plataforma para desenvolvimento de aplicativos empresariais monolíticos.
  • IBM: fornece soluções para desenvolvimento e implantação de aplicativos monolíticos, como o IBM WebSphere Application Server.

Arquitetura de Microserviços:

  • Amazon Web Services (AWS): oferece diversos serviços para implantação de arquiteturas de microserviços, como o Amazon Elastic Container Service (ECS), o Amazon Elastic Kubernetes Service (EKS) e o AWS Lambda.
  • Google Cloud Platform (GCP): fornece soluções para desenvolvimento e implantação de aplicativos de microserviços, como o Google Kubernetes Engine (GKE) e o Cloud Functions.
  • Microsoft Azure: oferece serviços e ferramentas para desenvolvimento e implantação de aplicativos de microserviços, como o Azure Kubernetes Service (AKS) e o Azure Functions.

É importante lembrar que existem diversas outras empresas que fornecem soluções para implementação de ambas as arquiteturas, e que a escolha da melhor solução dependerá das necessidades e objetivos específicos do projeto.

Dito e descrito tudo isso, chegaremos a uma especulação, a Amazon dona da AWS, uma das maiores provedoras de nuvem e microserviços do mercado, ao lado da GCP e Azure, trocar seus servidores para uma estrutura monolitica, e gerar uma economia de 90%, isso nos faz pensar em será mesmo que não comprar de inicio logo um servidor robusto e deixar tudo lá, e ficar dividindo tudo em microserviços, gerando grandes dificuldades inicialmente em suas comunicações entre eles, o que faz que você tenha que ter mais serviços, vale também lembrar que, para microserviços é recomendado que você tenha um banco de dados para cada parte do processo e que esse banco possa se comunicar com cada parte do aplicativo deixando tudo separado. A vantagem maior é claro é que se você perder uma parte, o processo todo não para de funcionar, entretanto se você perde o seu servidor monolítico que é apenas um só grande servidor, você perde sua aplicação até tudo voltar ao ar, e obvio, ao invés de backups por partes, você tem que fazer um total do servidor.

No fim das contas a nova decisão da Amazon nos ajuda a pensar no que realmente é melhor, e que na verdade tenhamos que usar o clássico dois passos para trás para dar três pra frente.

Compartilhe
Comentários (0)