Skip to content
Arquitetura de Microsserviços x Monolítica: Vantagens e desvantagens

Quais as diferenças entre Arquitetura Monolítica e Microsserviços, suas vantagens e desvantagens.

Quando falamos em desenvolvimento e arquitetura de um sistema, muito se escuta sobre arquitetura monolítica e de microsserviços.

A proposta da arquitetura de microsserviços é desenvolver sistemas mais flexíveis, escaláveis e de simples manutenção, que é o contrário da arquitetura monolítica.

Neste artigo nós vamos entender um pouco de cada uma dessas arquiteturas e as vantagens e desvantagens de cada uma delas.

 

Arquitetura Monolítica x Arquitetura de Microsserviços

 

O que é Arquitetura Monolítica?

A arquitetura monolítica é um sistema único, ou seja, todas as funções estão em um único pacote a ser distribuído ao cliente. Sua principal característica é acoplamento de módulos de diferentes abordagens, ou seja, é possível acessar código de módulos distintos sem a necessidade de realizar integrações.

 

Vantagens da Arquitetura Monolítica

  • Estruturação simplificada: por ser um projeto único, a estruturação é a mesma para todas as partes do sistema;
  • Poucos recursos tecnológicos: um sistema monolítico requer menos recursos tecnológicos, em geral necessitando de dois ou três recursos, como por exemplo, servidor de aplicação, servidor de banco de dados e servidor de e-mail;
  • Um único profissional técnico: apesar de não recomendado, mas uma aplicação monolítica pode ser desenvolvida utilizando apenas um profissional, dado o contexto em que, apresentação e processamento podem ser feitos utilizando uma única linguagem de programação;
  • Baixa integração: não há necessidade de realizar integração entre módulos distintos dentro do mesmo sistema, tais “integrações” são feitas dentro do código-fonte;

 

Desvantagens da Arquitetura Monolítica

  • Manutenção: a aplicação se torna cada vez maior, o código será cada vez mais difícil de entender e o desafio de fazer alterações rápidas e ter que subir para o servidor só cresce;
  • Linha de código: uma linha de código que subiu errada pode quebrar todo o sistema e ele ficar totalmente inoperante;
  • Difícil de testar: dado o alto acoplamento dos objetos de negócio, realizar testes é complexo, pois as funções e características acabam por ser contaminar com necessidades de outros módulos do sistema;
  • Difícil de escalonar: Por ser uma aplicação única, o escalonamento só pode ser feito do sistema como um todo, isso significa, escalonar inclusive partes do sistema que estão super-dimencionadas;
  • Linguagens de programação: não há flexibilidade em linguagens de programação. Aquela que for escolhida no início do projeto terá que ser seguida, sempre. Se o desenvolvimento de uma nova funcionalidade exigir outra linguagem de programação, um sistema novo deverá ser criado somente para esta funcionalidade e posteriormente ser integrado ao sistema atual.

 

O que é Arquitetura de Microsserviço?

Quando falamos de arquitetura de microsserviços, falamos em uma coleção de serviços ou sistemas distribuídos. Ou seja, separa-se as partes em domínios independentes.

A ideia da arquitetura de microsserviços é separar estes domínios de forma que se tornem únicos dentro do contexto do sistema final e, subsequente sejam integrados à medida que a aplicação necessite da sua funcionalidade, com isso, um sistema utilizando a arquitetura de microsserviços, são vários pequenos sistemas especializados interligados.

Vantagens da Arquitetura de Microsserviços

  • Altamente testável: por conter apenas regras negócio especificas do microsserviços realizar testes é mais fácil e objetivo;
  • Independência e agilidade: os deploys de cada microsserviço são totalmente independentes e mais rápidos, além da possibilidade de automação de inúmeras tarefas deste processo;
  • Simplicidade e Objetividade: os serviços são pequenos e limitam-se a resolver um determinado problema dentro de um sistema maior, dessa forma, seu código é simples e objetivo;
  • Escalonamento por demanda: é possível escalonar somente os pontos dentro de um sistema em que há maior demanda por consumo de recursos.
  • Foco no negócio: é possível dividir cada serviço em equipes, focadas em trabalhar nas demandas de negócio para seu respectivo serviço.
  • Linguagem de programação: é possível criar cada microsserviço em uma linguagem de programação diferente.

 

Desvantagens da Arquitetura de Microsserviços

  • Estruturação complexa: dado seu conceito distribuído, a estruturação do projeto é mais complexa que na monolítica, demandando integrações mesmo para funcionalidades simples;
  • Definição da abrangência do microsserviço: a divisão dos serviços deve ser feita com muita atenção e cuidado, “nunca se chegará à divisão perfeita, pois, neste modelo, o alinhamento ao negócio é que dita as possibilidades de divisões ou redivisões”;
  • Múltiplos profissionais: diferentemente do sistema monolítico, em uma arquitetura de microsserviços, será difícil utilizar somente um profissional, no geral, é necessário uma equipe que contemple os conhecimentos de front-end, back-end, DevOps e negócio, e em alguns casos, empresas maiores, há necessidade do conhecimento de compliance e segurança.
  • Vários recursos tecnológicos: dada sua estruturação complexa, diversas ferramentas são necessárias para publicar e executar um sistema em microsserviço;

 

Principais diferenças entre a arquitetura de microsserviços e a monolítica.

Agora que já sabemos um pouco mais sobre o que é a arquitetura de microsserviços e a arquitetura monolítica, vamos entender quais as principais diferenças entre elas.

 

Governança

A arquitetura monolítica tem um nível de complexidade de coordenação muito menor que a arquitetura de monosserviços. Porém, apesar disso, como tudo é desenvolvido em um único código, um pequeno problema pode causar a queda completa do serviço.

Já quando falamos em microssistemas, isso não acontece, permitindo o uso de funcionalidades que não sejam afetadas por o que está em manutenção.

 

Prazo do projeto

Quando falamos em tempo, a arquitetura monolítica leva vantagem. Isso porque, por conta da complexidade da arquitetura de microsserviços, os processos envolvem mais tempo de execução.

 

Atualização

Nesse caso, ao usar a arquitetura monolítica, toda vez que ocorrer uma atualização, o sistema aumenta e fica mais complexo, exigindo uma reinicialização de todo o sistema que pode causar uma perda temporária de alguma funcionalidade. 

Por causa disso, a arquitetura de microsserviços acaba sendo uma melhor opção, já que as atualizações e melhorias não são capazes de interferir em funcionalidades já existentes.

 

Complexidade

Como dito anteriormente, conforme as atualizações vão acontecendo, a arquitetura monolítica vai ficando cada vez maior e isso traz complexidade ao código-fonte. Já nos microsserviços mantém-se a complexidade de código-fonte inalterada, porém a medida que novos microsserviços são adicionados ao sistema a complexidade de gestão destes aumentará.

 

Conte com a A.R. Phoenix para desenvolver seus softwares e plataformas multicloud para microsserviços. Tire suas dúvidas sobre esse tipo de arquitetura com nosso time de especialistas

Continue sua leitura!