Microservices após o hype – O que é? Qual a motivação? E eu realmente preciso disso? – Parte 03

Nesta série de artigos, discutimos o que são microservices, as suas vantagens e limitações. Caso você ainda não tenha lido os artigos anteriores, basta ir até a Parte 01 e Parte 02.

Neste último artigo, de uma série de três, vamos discutir se precisamos mesmo de microservices. Também iremos discutir como dar início a uma implementação ou restruturação de uma arquitetura para a arquitetura baseada em microservices.

5) Precisamos de microservices?

O fundamento da abordagem SOA é manter controle da organização e da complexidade do negócio distribuindo-os.

Quando se separa projetos de software, a complexidade é reduzida em alguns pontos. Porém, em contrapartida, há um custo extra em alguns outros pontos, como ter um sistema distribuído.

É possível ter um monolítico organizado, escalável, possível de evoluir, mas isso irá requerer muita disciplina durante o tempo todo.

A arquitetura de microservices, quando implementada no ambiente errado, poderá trazer somente desvantagens. No final, pode-se ter uma arquitetura pior do que a convencional.

Então, primeiro, é necessário responder as seguintes perguntas antes de adotar microservices:

  • Você tem problemas os quais a arquitetura de microservices resolveria?
  • No seu ambiente de trabalho, há todos os requisitos necessários para se adotar uma arquitetura de microservices?

E não esqueça que uma arquitetura é uma ferramenta que nós usamos e não um dogma que temos de seguir indiscutivelmente. Se uma solução híbrida for melhor para seu contexto, adote alguns dos conceitos relacionados a microservices para alguns casos e não para outros.

6) Como faço para chegar lá?

Uma vez decidido pela arquitetura de microservices, precisa-se encontrar uma maneira de começar.

Não há bala de prata, mas algumas abordagens destacam-se.

Nível difícil: a partir do zero

A situação mais atrativa é criar um novo sistema do zero, sem nenhum impedimento tecnológico.

Infelizmente, construir microservices do zero é a situação mais complicada:

  • É complicado determinar os limites nos quais os diferentes projetos estarão delimitados, pois ainda não é claro como os sistemas irão evoluir;
  • Como já foi dito, as evoluções tem custo elevado devido ao refactoração transversal de projetos

Nível fácil: uma interface para um monolítico

Um caso mais simples é reestruturar um monolítico. A partir de uma revisão da atual organização e estrutura do monolítico, faz-se os cortes nos sistemas para criar os microservices.

O objetivo não é cortar o projeto e diversos pequenos projetos, mas:

  • Uma, ou no máximo algumas, aplicações centrais ("core") consistentes entre si;
  • Ter microservices que estarão em fase de ajuste, alguns poderão ser realocados ou removidos.

corte

Para quebrar um monolítico, deve-se agrupar os módulos funcionais de maneira consistente e transfomá-los em projetos.

Esta operação é facilitada quando tem-se aplicações bem estruturadas em camadas técnicas, blocos de negócios e organizada. As melhores práticas de desenvolvimento permitem ter um monolítico que está pronto para ser convertido em microservices. Do contrário, será necessário atividades de investigação para entender melhor o contexto da aplicação e como delimitá-lo.

A automação de testes é essencial para limitação dos riscos. Sem testes, é necessário considerar a aplicação como um legado e usar as técnicas apropriadas para remover o débito técnico.

Antes de iniciar o processo de "cortes" de um monolítico, é necessário entender a estrutura dos dados e como os dados estão distribuídos pelos diversos domínios funcionais.

Finalmente, é importante não ser dogmático com relação a essa abordagem. Se, no decorrer da evolução de um negócio, projetos que antes eram distintos passarem a convergirem, o correto é fazer o "merge" desses projetos. Isso não implica em uma falha na abordagem de microservices, mas uma maturidade da plataforma, que é capaz de se adaptar às mudanças de negócio.

Chegamos ao fim da nossa série de artigos. Se você não leu os artigos anteriores, basta acessá-los nestes links, parte 01 e parte 02.

Você já utiliza a arquitetura de microservices em seu trabalho? Teve quais dificuldade? Quais foram os aprendizados até o momento? Seu comentário é bem-vindo.