Micro serviços: O que são e quando usar?

microservicos

Imagina um sistema complexo, com diversas ramificações. Os mesmos utilizadores para várias aplicações que a empresa tem. Neste contexto, cada aplicação teria os mesmo utilizadores repetidos pelas suas próprias base de dados.

De forma resumida, este tipo de sistema é chamado de “monolítico”. Uma estrutura como esta ainda é bastante usada pelo mercado. Felizmente começa a ser inserido cada vez mais uma arquitetura de Micro serviços, em contextos mais complexos, e quando existe partilha de informação entre diferentes aplicações.

O que é o sistema monolítico?

A utilização de um sistema monolítico implica um risco no desenvolvimento das aplicações. Sendo que este tipo de arquitetura acaba muito ligada entre as suas camadas, isto implica um esforço e risco na alteração ou implementação de novas funcionalidades. Especialmente quando várias aplicações acabam por partilhar de ferramentas semelhantes. Isto acaba por criar um “espelho” entre aplicações.

Desta forma o código acaba segregado e interligado a um nível que pode elevar demasiado a sua complexidade. Numa arquitetura de Micro serviços, esta complexidade é diluída por estes.

A arquitetura monolítica é baseada em camadas, formando um único bloco, em que se ligam até aos dados que necessitas de expor.

O que é um MicroServiço?

Como o nome indica, um MicroServiço tende a ser o mais simples e funcional possível. Cada um dos MicroServiços de uma aplicação tende a ter um objetivo próprio. Assim cada serviço torna-se mais leve, e fácil de incluir ou alterar novas “features”.

Vamos supor que um sistema em que estamos a trabalhar, tem várias aplicações que consomem os mesmos dados. Fará sentido que tenhamos diversos Micro Serviços, em que cada um possa tratar de uma determinada parte da aplicação (utilizadores, parte comercial, entre outros).

Podemos ter um MicroServiço que tome conta da parte dos utilizadores, logins e registos. Tal como podemos ter um MicroServiço que faça toda a gestão de produtos a venda na loja, por exemplo.

A ideia do MicroServiço é que torne o mais granulado possível a aplicação. Desta forma torna-se simples a divisão da parte de negócio, e das suas regras ligadas a cada parte do projeto.

Quando usar MicroServiços?

A utilização de MicroServiços pode ser usada em diversos momentos. Vale a pena ter em consideração, que cada um destes serviços funciona de forma isolada dos demais. Ainda que em alguns casos se comuniquem, isto permite que em caso de falha, apenas uma parte de toda a aplicação irá falhar, mantendo os demais MicroServiços a fornecer dados a aplicação.

Outra nota importante, é que o próprio deploy torna-se muito mais amigável. Isto acontece porque como cada aplicação está isolada, não será necessário efetuar deploy de toda a aplicação, apenas do MicroServiço alterado.

Dado que existe este isolamento, também o código acaba por ser mais simples e fácil de entender. Isto permite que sempre que existe adições a equipa, estes novos elementos tenham mais facilidade em perceber o funcionamento de um determinado MicroServiço.
Estando cada um isolado, isto também permite uma melhor qualidade no código, já que em teoria o MicroServiço tenha um código mais simples a sua funcionalidade especifica. Isto faz também que seja mais fácil de efetuar manutenção e mesmo incluir novas “features”.

Apesar de os MicroServiços serem uma mais valida, é preciso avaliar a aplicação como um todo, a sua necessidade e se realmente vale a pena implementar um sistema baseado em MicroServiços. É importante uma visão a longo prazo de toda a necessidade, para tomar uma decisão consciente, que não causa gastos futuros desnecessários.