Home / artigos / Microserviços, definições e características
A arquitetura de microsserviço é uma das abordagens mais recentes para o desenvolvimento de aplicativos de software corporativo. O conceito dessa arquitetura de software é discutido desde 2011 e vem se firmando rapidamente. No entanto, há muitas dúvidas sobre o que é microsserviço; quando, como e onde usá-lo.
A arquitetura de microsserviço é uma abordagem específica para desenvolver um único aplicativo como um conjunto de pequenos serviços, cada um deles executando em seu próprio processo e se comunicando com mecanismos leves. Esses serviços são desenvolvidos em torno de recursos de negócios e podem ser implantados de forma independente por meio de máquinas de implantação totalmente automatizadas. Há um mínimo de gerenciamento centralizado desses serviços, que podem ser desenvolvidos em diferentes linguagens de programação e usar diferentes tecnologias de armazenamento de dados.
Ou seja, são criados serviços básicos que oferecem a funcionalidade desejada quando combinados, em vez de desenvolver um aplicativo como um grande monólito.
Por que usar essa abordagem que parece muito mais complexa do que o modelo tradicional de desenvolvimento de aplicativos, cujas funcionalidades estão disponíveis em um único componente?
Existem três motivações principais para usar a abordagem de microsserviço ao construir aplicativos, e duas delas estão relacionadas à computação em nuvem.
Em primeiro lugar, a computação em nuvem favorece a escalabilidade dos aplicativos, implementando o conceito de elasticidade dinâmica, e os microsserviços permitem um ajuste ideal da variação dos recursos computacionais para se adequar à flutuação da demanda.
A facilidade de alocação e liberação de recursos de computação oferecidos pela computação em nuvem (como máquinas virtuais e contêineres) permite que os aplicativos se ajustem à demanda. Dessa forma, quando há um pico de uso (de um site ou aplicativo móvel, por exemplo), tudo o que você precisa é alocar mais recursos e acionar novas instâncias do aplicativo e, em seguida, liberar esses recursos quando o uso diminuir.
No caso de aplicativos construídos como monólitos, o acionamento de novas instâncias requer que todo o aplicativo (e todo o código referente às suas várias funcionalidades) seja replicado. No entanto, é mais comum que apenas algumas funcionalidades do aplicativo tenham demanda de pico. Por exemplo, em um aplicativo de conta corrente, a função de consulta de saldo é muito mais utilizada do que a solicitação de extratos bancários detalhados dos últimos seis meses.
Quando o aplicativo é construído combinando microsserviços e cada microsserviço é responsável por um conjunto específico de funcionalidades, apenas os microsserviços relacionados às funcionalidades mais utilizadas precisam ser replicados.
Dessa forma, a abordagem de microsserviços para construção de aplicativos economiza recursos computacionais - e reduz custos - ao permitir um ajuste mais preciso entre a curva de demanda e o uso desses recursos.
A segunda motivação para o uso de microsserviços está relacionada à exigência atual das empresas digitais de melhorar constantemente seus sistemas. Mudanças de funcionalidade de última hora, promoções, testes A / B, correção de erros ... Dado que a computação em nuvem, juntamente com a automação do processo de construção e implantação, agiliza o processo de disponibilização de novas versões de sistemas em um ambiente de produção, é frustrante recompilar e realizar testes exaustivos em sistemas muito grandes, o que retarda muito o processo de produção de uma nova versão de um aplicativo, especialmente se apenas uma pequena parte desse aplicativo tiver sido alterada. Os microsserviços permitem que você analise o problema e atualize apenas a funcionalidade alterada, sem ter que trabalhar no restante do aplicativo.
Além disso, é difícil manter a estrutura da aplicação ao longo do tempo, principalmente no que diz respeito à sua modularidade. Desta forma, a manutenção de grandes aplicações torna-se mais complexa, e freqüentemente as correções de uma determinada parte prejudicam outras funcionalidades, pois mudanças mínimas demandam cada vez mais tempo.
A terceira motivação para a adoção de microsserviços está relacionada à tolerância ao erro de um modelo distribuído. Em um único sistema, o erro de uma determinada funcionalidade geralmente torna o aplicativo indisponível como um todo. No modelo de microsserviço, o erro de uma determinada funcionalidade não significa que outras funcionalidades disponíveis sejam interrompidas, o que minimiza o impacto desse erro.
Os microsserviços têm propriedades fundamentais muito específicas, além de conceitos arquitetônicos característicos que permitem extrair os melhores resultados dessa abordagem de desenvolvimento de software.