Concrete Logo
Hamburger button

Arquitetura de Microsserviços comparada à Arquitetura Monolítica

  • Blog
  • 19 de Janeiro de 2018

O que tenho ouvido hoje nas rodas de conversa entre desenvolvedores é que, na maioria das vezes, as soluções para a arquitetura de sistemas são os microsserviços. Como um bom profissional (sem falsa modéstia rs), entro em conversas para aprender e depois pesquisar sobre, para aí então criar minha própria opinião a respeito de algo.

Antes de entrar no assunto de arquitetura de sistemas de Monolíticos e Microsserviços é necessário entender o que é um serviço. Serviço é um pedaço de software que na maioria das vezes é uma interface exposta ao usuário que por fim requisita algo a um banco de dados ou realiza algum tipo de processamento das informações recebidas. Essas características podem ser encontradas em ambas as arquiteturas citadas acima.

Hoje, tenho a oportunidade de trabalhar em uma arquitetura moderna, não a que se usa atualmente, muito menos aquela arquitetura de projetos monolíticos.

Mas… quais são as características de um sistema monolítico?

Vale lembrar que um sistema monolítico é a arquitetura padrão de muitos projetos atuais cujo sistema engloba em um único projeto, todos os seus módulos, como login, pedidos e produtos. Por exemplo, um sistema de compra sem restrição de tamanho e uma gama enorme de código, mas que não para de crescer e acaba virando uma bagunça de pacotes e classes.

Esses problemas nos faz gastar mais tempo desenvolvendo uma funcionalidade; perde-se muito tempo procurando o que vamos aproveitar do sistema, assim como o alto acoplamento entre módulos e serviços. Uma falha no desenvolvimento pode afetar todos os sistemas, sem contar que o processo de implantação e integração contínua é um desafio, já que a questão de escalabilidade requer a duplicação de todo o sistema.

Características de Microsserviços

Hoje, a principal vantagem de se utilizar Microsserviços é a necessidade de fazer mudanças de forma rápida, tanto no desenvolvimento quanto em tecnologias. Diferente de um projeto comum que possui apenas uma stack para desenvolver todo o sistema, Microsserviços nos proporciona um multi-stack.

Por ser uma arquitetura de pequenos projetos com apenas um foco, ela nos proporciona mais segurança, ou seja, se uma parte para de funcionar, por exemplo, isso não afeta o restante do projeto. Entrega e implantação não é mais um problema, já que uma alteração não afeta todo o sistema e sim somente o módulo específico.

Os benefícios que temos com Microsserviços são menor tempo de desenvolvimento; implementação mais rápida por não ter mais um acoplamento com o projeto como um todo (o que traz facilidade para frequentes atualizações e implementações de novas funcionalidades); a distribuição de sistemas e banco de dados (que provê uma segurança maior); alta escalabilidade; melhor performance; além de a tecnologia certa para a resolução de um problema possibilitando também um time distribuído.

A arquitetura de Microsserviços nos permite uma alta coesão, ter apenas um foco com uma única responsabilidade nos dá mais segurança e código fácil de ser reescrito que traz uma certa flexibilidade. A arquitetura ainda propõe ser um sistema resiliente, abrangente a falhas com outras formas de tratar o que está sendo pedido, e contornando o problema com uma melhor solução. Seja elas falhas tratadas com exceções, atrasos e/ou indisponibilidade.

Um projeto em Microsserviços deve ser observável para manter a saúde do sistema com logs status e erros, tendo partes de logins e monitoramento centralizado. O que facilita a resolução dos problemas.

Referências

https://www.thoughtworks.com/pt/insights/blog/microservices-nutshell

https://app.pluralsight.com/player?course=microservices-architecture&author=rag-dhiman&name=microservices-architecture-m2&clip=0&mode=live

https://airbrake.io/blog/software-design/domain-driven-design

https://github.com/guuhworship/spring-cloud/blob/master/hello-client/src/main/java/com/techprimers/stock/helloclient/resource/HelloResource.java

https://www.youtube.com/watch?v=6wvVANQ6EJ8

É desenvolvedor Java e gostaria de trabalhar em um time ágil e multidisciplinar? Mande um email para trabalheconosco@concrete.com.br.