Arquitetura de Informação

1 fev, 2018

Arquitetura e microsserviços comparada à arquitetura monolítica

Publicidade

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), 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 fazem 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. Sejam 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

 

***

Este artigo foi publicado originalmente em: https://www.concrete.com.br/2018/01/19/microsservicos-comparando-com-a-arquitetura-monolitica/