O que é um Monólito?
A palavra monólito faz referência a um monumento formado por um único bloco de pedra e isso nos explica muita coisa!
Um software que adota uma arquitetura Monolítica tem todo seu código e funcionamento concentrados em um só processo. Logo, todas as funções do negócio estão dividindo os mesmos recursos de uma mesma máquina.
Vantagens
Novos desenvolvedores vão ter uma maior facilidade de entender o projeto, pois todo o código se concentra em um único lugar.
O desenvolvimento inicial é mais fácil e rápido. Além de, enquanto pequeno, possuir baixa complexidade.
Desvantagens
Acarreta a uma difícil manutenção no futuro, quando ao alterar parte de uma funcionalidade é criado um efeito cascata (que pode causar comportamentos inesperados) em outras funções ligadas de alguma forma. Afinal, há uma alta dependência de componentes do código.
Seu principal ponto negativo: escalabilidade. Ou melhor, a falta dela... Por todo o funcionamento estar integrado, não podemos escalar uma função individualmente, é necessário que todo o produto se expanda em conjunto.
O que é um Microsserviço?
Um sistema que utiliza uma arquitetura de Microsserviços é composto por partes menores. Enquanto o Monólito é uma grande e única pedra, aqui temos diversas pedrinhas.
Nessa categoria de software vamos ter um código dividido em vários projetos que se comunicam entre si formando o produto final. Assim, cada serviço é criado de acordo com um conjunto de regras de negócio específicas, implementado de forma independente.
Vantagens
A manutenção se torna mais fácil por se trabalhar com partes menores de código e que não vão gerar problemas nos outros serviços do sistema.
Cada parte do software pode ser desenvolvida com a tecnologia que melhor se encaixa nela, sem a necessidade de ter o projeto todo usando uma única linguagem, por exemplo.
Fazer o deploy de um microsserviço é muito mais simples, facilitando a chegada de atualizações à produção.
A escalabilidade está presente, de forma que se torna possível expandir apenas os microsserviços desejados conforme a necessidade daquele momento.
Desvantagens
Como temos um sistema distribuído, deve haver alguma forma de conectá-lo e trabalhar nisso traz uma dificuldade adicional ao projeto.
O aprendizado é dificultado para desenvolvedores que entrarem no projeto ao longo de sua criação tendo que compreender o funcionamento de diversos serviços.
Suas diferenças
Acredito que agora você já tenha entendido o conceito dessas arquiteturas e caso não, podemos resumir "Monólito vs Microsserviços" como "Centralizado vs Descentralizado". De um lado temos um grande bloco de código e, em outro, pequenos blocos interligados por conexões.
Ao olhar as vantagens e desvantagens de cada arquitetura entendemos que:
Enquanto Monólito é fácil de um novo integrante do time aprender, o Microsserviços pode complicar o aprendizado, inclusive na maneira que foi escolhida fazer a ligação entre os serviços.
Monólitos são eficientes para POCs (Prove of Concept) por terem baixa complexidade inicial. Porém, como não possuem boa escalabilidade, caso queira levar o projeto a frente faz sentido convertê-lo para microsserviços.
Prestar manutenção em um Monólito é mais trabalhoso, enquanto nos microsserviços a independência do código leva vantagem.
Conclusão
Se você está na dúvida entre qual arquitetura seu produto deve utilizar, acredito que uma boa alternativa é aproveitar o melhor dos dois mundos, iniciando o sistema com a utilização de uma arquitetura monolítica e tornando-a descentralizada quando a necessidade de escalabilidade chegar.
Comments