Os primeiros passos na arquitetura de Microservices

14 de janeiro de 2019 Por Ramon Durães

A demanda por software tem crescido ano a ano em função da evolução do próprio mercado que passou a depender cada vez mais de tecnologia para ser mais eficiente e gerar negócios respondendo ao impulso da Transformação Digital. No passado empresas de software eram aquelas que construíam aplicativos para comercialização e hoje mudou completamente essa lógica tornando qualquer empresa uma empresa de software.

A estratégia de arquitetura Microservices é uma abordagem moderna para se projetar aplicações adequadas a essa nova era digital “Cloud Native” permitindo modelar os processos de negócio baseados em conceitos de resiliência, alta disponibilidade e sistemas distribuídos além das práticas tradicionais consolidadas em arquitetura de software indo desde a tradicional abordagem a orientação a objetos a práticas como S.O.L.I.D, Clean Code, TDD e outras iniciativas.

No mundo de Microservices você consegue, por exemplo ter até equipes de trabalho independentes por serviço pelo fato que um principio fundamental é a independência do serviço. Dessa forma você tem mais benefícios como escalar uma porção especifica do seu software reduzindo o seu custo computacional de cloud assim como trocar uma parte do software sem quebrar o restante do projeto como acontece no mundo monolítico.

O primeiro passo em um projeto de Microservices consiste na jornada de mapeamento do domínio com o objetivo de definir as fronteiras do software e ter uma separação clara da responsabilidade de cada serviço. Para essa modelagem utilizamos o Domain Driven Design (DDD) que contribui para uma interação amigável entre a equipe de desenvolvimento e os representantes das áreas de negócio.

O segundo passo e muito importante é entender que o banco de dados é irrelevante e deixar de construir o software pelo banco de dados passando a investir o tempo no valor de negócio a ser entregue. Os Microservices são independentes por padrão e por isso cada serviço terá o seu banco de dados isolado permitindo inclusive a persistência poliglota. Dessa forma é necessário quebrar o paradigma sobre o armazenamento dos dados visto que cada Microservices terá as informações relativas exclusivamente a aquele domínio de negócio.

O terceiro passo presente na abordagem de Microservices em sistemas distribuídos é o conceito de serviços stateless sem armazenamento de estado e a estratégia event driven architecture com implementação de comunicação assíncrona em um barramento de mensageira para comunicação entre os serviços.

Você precisa ter em mente que conforme a carga que chegar no serviço você terá uma instância ou milhares de um mesmo serviço e significa que um processo pode iniciar em uma instância e terminar em uma outra replica.

Na arquitetura de Microservices você precisará implementar uma estratégia de Saga Pattern para gerenciar a transação distribuída entre os serviços. Nesse modelo diferente do monolítico que tudo era em um único ponto agora precisamos orquestrar seja usando a abordagem orquestrada ou coreografada uma transação entre vários Microservices.

Em resumo a abordagem de Microservices permite aos desenvolvedores a oportunidade de construir aplicações distribuídas, escaláveis e aderentes ao momento do mercado que demanda por soluções modernas de software para atender a evolução do negócio.

A transição do monolítico para não é um caminho simples pela necessidade de se estudar e quebrar paradigmas tradicionais na modelagem e comportamento do software. Com o passar do tempo essa abordagem deixar de ser algo diferente e se torna um senso comum nas equipes de desenvolvimento.

Para saber mais:

Microservices in Practice
3 common pitfalls of microservices integration—and how to avoid them

Para apoiar os clientes na modernização das aplicações nós oferecemos a metodologia DevPrime ®, um Stack com aceleradores, consultoria e acompanhamento na 2PC.

Ramon Durães, CEO 2PC
Microsoft MVP