IGTI Blog

O futuro de EAI com a ascendência dos Micro Serviços

Conteúdo revisado em fev/20 

Será o fim do uso de ESBs com a metodologia arquitetural de Micro Serviços?

O que é micro serviço?

Não existe ainda uma definição formal sobre o estilo arquitetural de micro serviços, o que se tem são descrições de características comuns que normalmente são encontradas nesse modelo. De acordo com Martin Fowler as características mais comuns entre arquiteturas de micro serviços são:

  • Componentização via serviços – A aplicação é dividida em serviços independentes e autônomos, ou seja, não possuem dependência de terceiros para funcionar. Isso não quer dizer que não precisem se comunicar com outras interfaces de serviços ou bibliotecas, que dizer, que o serviço é autônomo dentro da sua capacidade de negócio.
  • Organização em torno das capacidades de negócios – De acordo com descrições comuns desse estilo arquitetural, todos os micro serviços devem se concentrar única e exclusivamente em um único escopo de capacidades de negócio, ou seja, deve respeitar e atender apenas as regras de negócio comuns entre áreas afins.
  • Ideia de produtos e não projetos – Com micro serviços, se constrói o conceito de trabalho de times em torno de produtos para atender demandas de negócios com continuidade evolutiva e não mais, participações pontuais em projetos com início e fim onde toda a equipe é desmembrada e alocada em outros projetos.  
  • Endpoints inteligentes e comunicação sem inteligência – A comunicação dentro da estratégia arquitetural de micro serviços, difere bastante de arquiteturas monolíticas ou orientada a serviços. É proposto que a inteligência esteja apenas nos nodos (serviços) e a comunicação seja a aresta (protocolo de comunicação) que liga os nodos, ou seja, diferentemente de outras metodologias arquiteturais que aplicam inteligência na comunicação, micro serviços propõe que isso esteja disponível apenas nos serviços, que a comunicação entre os mesmos seja burra e simples adotando o conceito de hypermedia.
  • Governança descentralizada e gerenciamento de dados – A descentralização da governança e gerenciamento de dados vem como uma forte estratégia na metodologia de micro serviços e entra como um contraponto ao EAI onde suas estratégias de governança e gerenciamento de dados nesta matéria são consensualmente centralizadas via ferramentas middleware que funcionam como um hub central.
  • Infraestrutura automatizada e design para falhar – Trabalhar com a metodologia de micro serviços sem pensar em estruturas automatizadas e projetar produtos tolerantes a falhas torna inviável a adoção da mesma. É imprescindível que ferramentas que promovam testes automatizados, deploys automáticos, infraestruturas baseadas em containers, controle de versão, entre outros, façam parte do dia a dia de qualquer time de desenvolvimento, pois sem isso, se torna insustentável o gerenciamento de serviços uma vez que os mesmos são descentralizados e autônomos.
  •  Design evolucionário – O design de um micro-serviço deve ser visto como algo que pode sempre evoluir. Seu caráter de sistema isolado e independente lhe garante em alguns casos, facilidades para atender da melhor maneira e com a tecnologia mais adequada, aquilo que se propõe a fazer em termos de regras de negócio

O que é EAI?

EAI (Enterprise Application Integration) é uma referência de estratégias computacionais e aos princípios de arquitetura de sistemas utilizados no processo de Integração de Aplicações Corporativas. Esse processo de integração é definido por meio de padrões que foram criados para resolver uma variedade de problemas recorrentes da integração.

Como citado anteriormente, tratam-se de referências estratégicas para resolver problemas de integração recorrente, por isso, não podem ser considerados como parte de um ESB como muitos enxergam ainda. As estratégias de EAI, podem estar presentes em qualquer estratégia de integração, desde que forneça uma solução eficiente e efetiva para tal.

O que EAI tem a ver com Micro Serviços?

Para a dúvida que paira sobre os conceitos de EAI morrerem com a ascendência de micro serviços? A resposta é não! Os padrões EAI foram largamente adotados em barramentos de ferramentas ESB completamente inflexíveis, porém hoje a adoção de um ESB deve ter sua utilização voltada para uma infraestrutura, completamente distribuída, flexível e escalável, onde se pode realizar build, deploy e monitorar todo tipo de micro-serviço de forma ágil e eficiente.

A ideia é continuar usando o ESB com estratégias de EAI para aquilo que foi construído para fazer. Integração, orquestração, roteamento, processamento de eventos, etc, porém voltado para micro serviços.

Hoje pode se dizer que se deve buscar o uso de um ESB com estratégias EAI orientadas a serviços e não mais orientadas ao próprio ESB.

Além disso é possível usar o ESB para serviços de gateway para segurança, políticas de execução e exposição de micro serviços como APIs abertas. Dessa forma o serviço de gateway vai evitar que você disponha de muitas horas de programação para construir algo que gerencie a integração de seus serviços de aplicação e recursos na nuvem por exemplo.

Comunicação eficiente com micro serviços

Dessa forma, a proposta para EAI juntamente com ESB é que esses deixem de ser um barramento e se tornem um servidor de eventos de tempo real, onde são recebidos muitos eventos de diferentes fontes em real para reagir proativamente.

O ESB deixa de ser o hub central para comunicação entre os serviços e passa a ser um nó na composição de serviços que fornece auxílio em tempo real para os outros serviços.

O futuro

EAI e micro serviços não são inimigos, mas sim amigos! É possível que as estratégias de EAI implementadas via um middleware ESB trabalhem em conjunto com estratégias arquiteturais de micro serviços. É válido lembrar que os padrões de integração são perfeitamente aplicáveis fora da ferramenta ESB, pois estratégias como enriquecimento de mensagens, filtros, agregadores, entre outros ainda cabem e muito bem dentro da estratégia de micro serviços.

Professor autor: Thiago Moreira