Arquitetura de microsserviços em aplicações WEB

Diversos softwares que antes eram exclusivos para desktop, já possuem sua versão disponível na internet. Isto ocorre muito por conta da popularização da internet e da significativa melhoria nos meios de conexão. Assim aplicações web que antes apenas apresentavam conteúdo estático como textos e imagens, hoje se transformaram em complexas ferramentas, que podem prover diversas funcionalidades conforme a demanda.

Exemplo disso são aplicações como: Sistemas ERP, sistemas bancários, sites de compra e venda, rede sociais, editores de texto, vídeo e imagem, portais de notícias e entretenimento entre outros. Estes serviços podem ter um número elevado de usuários, pois para utilizá-los a pessoa necessita de somente um dispositivo com acesso à internet. Também estes serviços demandam de grande poder computacional para seu funcionamento, por serem sistemas que realizam tarefas complexas. Com isso a arquitetura de microsserviços vem trazer soluções em escalabilidade, desempenho e estabilidade para aplicações.


O que é arquitetura de Software?

Arquitetura de software são definições e diretrizes que determinam e especificam o significado e os relacionamentos entre os componentes de um sistema. E o planejamento do sistema a ser desenvolvido. Envolve itens que fazem parte do sistema, os relacionamentos entre estes itens, as moderações a esses relacionamentos, focando nos itens e focando no sistema em geral. Assim se tem uma visão básica do papel da arquitetura na criação de uma aplicação.

Arquitetura de microsserviços

O termo microsserviços representa um estilo de arquitetura de software. O objetivo da arquitetura de microsserviços é criar sistemas mais flexíveis, escaláveis e de simples manutenção. Em microsserviços, uma aplicação é dividida em pequenas partes ou seja pequenas aplicações que funcionam de forma independentes mas não isoladas. Cada pequena parte, executa apenas uma tarefa específica. 

Como funciona a arquitetura de microsserviços?

Normalmente em uma aplicação, temos a arquitetura monolítica. Nesta arquitetura é criado um grande software, que pode ou não ser dividido em módulos mais que em si é somente uma aplicação. Peguei como exemplo a imagem abaixo, ela mostra bem uma aplicação que utiliza a arquitetura monolítica.

Como podem ver é somente uma aplicação dividida em módulos internos. Agora na imagem abaixo temos a mesma aplicação em uma arquitetura de microsserviços.

Como podem ver se trata da mesma aplicação, mas ao invés de ser somente uma aplicação dividida em módulos internos, temos várias aplicações pequenas interligadas que interagem entre si para formar uma grande aplicação. Estes exemplos foram pegos no e-book Microservices Reference Architecture do NGINX.

Vantagens da arquitetura de microsserviços

A arquitetura de microsseriços traz várias vantagens, a primeira delas é o melhor isolamento de falhas. Caso algum microsserviço da aplicação web falhe, o mesmo não afetará toda a aplicação, mais somente a funcionalidade específica daquele serviço. Um dos principais conceitos na engenharia de resiliência é o anteparo. Um serviço da aplicação falha, mais essa falha não acontece em cascata. Assim é possível isolar a falha e o resto do sistema continua trabalhando normalmente.

Outra vantagem é a heterogeneidade tecnológica, é eliminado a necessidade de se utilizar apenas um segmento tecnológico. Os desenvolvedores ficam mais livres para variar nas tecnologias utilizadas em serviços diferentes. Com um software feito por diversos serviços, temos a opção de escolher tecnologias diferentes em cada um. Isso possibilita selecionar a tecnologia mais adequada para cada serviço, ao invés de escolher uma tecnologia, que tende se adaptar a todos os serviços.

Mais uma vantagem é a escalabilidade da aplicação. Dimensionar a aplicação e a integrar com serviços de terceiros, se torna uma tarefa mais fácil. Com um software grande e monolítico, é necessário escalar tudo junto, mesmo que somente uma funcionalidade específica do sistema que necessite do aumento no desempenho. No sofware grande temos de lidar com tudo como uma peça só. Com serviços pequenos, é possível saber qual serviço precisa de escala.

Temos também como vantagem a fácil implantação. Aplicar uma alteração em um software monolítico, pode ser uma tarefa tanto complexa. Em uma aplicação monolítica, que possui milhares e milhares de linhas, a mudança de uma simples linha requer que o aplicativo seja implantado,  para liberar a alteração. Dependendo do cenário, esta implantação pode ser de alto risco para o software. Assim a arquitetura de microsserviços diminui este risco para a aplicação. Com a arquitetura de microsserviços, é possível realizar uma mudança em um serviço e fazer sua implantação, independente do restante do sistema.

Outra vantagem é a compossibilidade. A arquitetura de microsserviços, nós possibilita consumir uma funcionalidade de diversos lugares e para diversos propósitos. Assim temos um melhor reaproveitamento de código.

 Por último temos também, o fato que para um desenvolvedor novo na organização, fica mais fácil de entender a funcionalidade de um serviço. São muitas as vantagens de se utilizar uma arquitetura de microsserviços. Entre elas está incluso uma defasagem técnica menor, mais velocidade e produtividade do programador, e competência nos testes.

Finalizando

Neste artigo realizei somente uma introdução breve a arquitetura de microsserviços em aplicações web. Apresentei um pouco sobre a arquitetura e algumas de suas vantagens. Para utilizar a arquitetura de microsserviços, recomendo que seja feito um grande estudo pois assim como ela tem boas vantagens, também traz  grandes riscos e complexidades.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *