Supero

Microsserviços – Uma abordagem prática

“… o estilo de arquitetura de microsserviços é uma abordagem que desenvolve um aplicativo único como uma suíte de pequenos serviços, cada um executando seu próprio processo e se comunicando através de mecanismos leves, muitas vezes em uma API com recursos HTTP. Esses serviços são construídos em torno de capacidades de negócios e funcionam através de mecanismos de deploy independentes totalmente automatizados. Há o mínimo possível de gerenciamento centralizado desses serviços, que podem ser escritos em diferentes linguagens de programação e utilizam diferentes tecnologias de armazenamento de dados.”  Martin Fowler

Seguindo este conceito descrito por Fowler, foi possível a implementação de aplicativos, que viabilizam o atendimento de demandas globais, distribuindo com alto nível de confiabilidade.

Aplicativos como streaming de vídeos proporcionados pela Netflix, atingem cerca de 30% de todo o consumo de internet nos EUA. Este benefício alcançado por meio de adoção de microsserviços, encontra-se entre as três principais vantagens dessa arquitetura:

  • Forte divisões entre módulos: cada serviço é especializado em somente um domínio de negócio, facilitando manutenção e atendimento mais eficaz à necessidade para qual foi implementado,
  • Deployment independente: utiliza a característica de isolamento de serviço, onde permite deployments de aplicação sem a necessidade que outros serviços, ou mesmo a aplicação, precise estar offline e
  • Diversidade de tecnologia – devido ao isolamento de serviço, permite que por um protocolo de comunicação comum, geralmente HTTP, possibilita a independência de linguagem de desenvolvimento, podendo utilizar das vantagens individuais para melhor performance na execução de suas tarefas.

Como em outras abordagens de arquitetura, para um bom compreendimento e aplicação de seu conceito é imprescindível responder três perguntas básicas: O que é? Como fazer? Como manter?

O que é?

A arquitetura de microsserviços constitui na decomposição de um domínio específico de negócios em serviços(aplicações) executando de forma interdependente e coordenada.

Para os desenvolvedores, torna-se melhor o entendimento dessa arquitetura com base no velho paradigma de orientação a objetos. As abstrações realizadas pela componentização do sistema em forma de classes e interfaces, utilizadas na representação de um modelo específico de negócio, assemelham-se à abstração deste mesmo domínio em forma de serviços.

Como fazer?

Embora já existam alguns patterns, não há uma convenção de representação de um modelo para essa arquitetura, apenas algumas características comuns observadas entre aplicações conhecidas. Ou seja, não há um método padrão de implementação para uma aplicação de microsserviços, pois depende, exclusivamente, da expertise dos arquitetos e equipe envolvida para que se consiga uma  abstração ideal do modelo proposto, baseando-se em técnicas, cases e bibliotecas consolidadas no mercado.

Como manter?

Um dos grandes desafios enfrentados no desenvolvimento de microsserviços é a complexidade operacional. Com o crescimento da complexidade da aplicação, a manutenção de seu ciclo de vida exige, cada vez mais, o emprego de um novo papel, o DevOps, responsável pelo monitoramento em todas as fases da construção do software, integração, teste, liberação para implantação e gerenciamento de infraestrutura.

Por se tornar um conceito popular e largamente adotado, a arquitetura de microsserviços já conta com um modelo de governança bastante maduro e padrões que se estendem desde a aplicação de integração contínua até orquestração de microsserviços em ambientes virtualizados.

Independente da arquitetura escolhida para um projeto de software, ainda são determinantes para o sucesso ou fracasso fatores como a qualidade, equipe e o quão colaboram entre si e com especialistas do domínio.