Páginas filhas
  • DEAI1-3217 Componentização do suporte ao AMQP no Datasul

Objetivo

Este spike tem o objetivo de verificar de que maneira o suporte ao protocolo AMQP no Datasul pode ser tratado como um componente, a ser executado de maneira separada do ERP, bem como de forma integrada ao mesmo.

Premissas

A componentização do suporte ao AMQP no Datasul deve considerar as seguintes premissas:

  • O suporte ao AMQP é uma feature em desenvolvimento, e por isso, deve ser adotada pelos clientes sob demanda, ou seja, deve vir desativada por padrão.
  • Deve ser executada separadamente do container Java do ERP, para permitir, por exemplo, distribuição de carga de trabalho e isolamento de processos.
  • Entretanto, também deve permitir a execução de forma integrada ao container Java do ERP, nos casos onde a facilidade de gerenciamento seja a necessidade primária.
  • O cliente deve poder instalar a feature através do console de atualização do ERP, ou de outra ferramenta que a TOTVS venha a disponibilizar.

Considerações

Situação atual

Atualmente a implementação do suporte ao AMQP no Datasul está disponível somente para o Novo Framework e gera um artefato do tipo Web Archive (WAR), para execução no container Web Apache Tomcat, escrito em Java, e um artefato do tipo Progress Library (PL), para execução no AppServer Progress.

O componente WAR (totvseai-mb.war) tem um tamanho total de 27 Mb e traz em suas dependências o framework SpringBoot. Este framework é o responsável pela maior parte do tamanho do artefato.

O componente PL (totvseai-mb.pl) tem um tamanho total de 254 Kb.

Todos os componentes executam integrados ao ERP. É possível retirá-los da instalação, entretanto pode ocorrer erro, principalmente na camada Progress.

Situação proposta

A proposta de componentização para o suporte do AMQP no Datasul sugere que o componente WAR seja decomposto em 3 artefatos:

  • Um artefato core, contendo as principais classes do suporte ao AMQP. Este artefato seria independente da forma de operação.
  • Um artefato standalone, contendo as classes e dependências necessárias para executar o suporte ao AMQP de forma separada do ERP. O artefato core seria uma das dependências deste artefato.
  • Um artefato embedded, contendo as classes e dependências para permitir que o suporte ao AMQP execute embutido no container do ERP. Este também dependeria do artefato core.

O diagrama abaixo descreve a estrutura da decomposição e as principais dependências dos artefatos. Demonstra também o relacionamento com o artefato Progress.

Conforme se pode ver no diagrama, quando a execução for standalone, será necessário prover algumas configurações em arquivo, como por exemplo, a URL do AppServer Progress a conectar. Quando a execução for embedded, as propriedades serão fornecidas pelo container Java onde o ERP estiver rodando.

Resultados preliminares

Para verificar qual seria a melhor abordagem a adotar para a componentização, foi necessário realizar uma prova de conceito (PoC), que gerou os seguintes resultados:

  • Componente core: totvseai-mb-core.jar, com tamanho de 18 Kb.
  • Componente standalone: totvseai-mb-standalone.jar, com tamanho de 20 Mb, devido a dependência do SpringBoot, que incorpora uma versão reduzida do Apache Tomcat. Para execução deste componente, basta a linha de comando seguinte: java -jar totvseai-mb-standalone.jar. Além disso, ter a pasta config contendo o arquivo application.properties com as propriedades server.port e totvs.appserver.
  • Componente embedded: totvseai-mb-embedded.jar, com tamanho de 12 Mb. As propriedades necessárias serão fornecidas pelo ERP.

As classes contidas nos componentes podem ser vistas no diagrama a seguir:

Expedição dos componentes

Em relação à expedição dos componentes, o GCAD de Joinville foi acionado para obter informações sobre como disponibilizar os componentes para os clientes, obedecendo as premissas apontadas neste documento. O retorno obtido informa que está em andamento uma iniciativa que permitirá a instalação sob demanda de partes do ERP. Entretanto, como é um assunto em desenvolvimento até a presente data, será necessário um contato futuro com a equipe para verificar os procedimentos exatos a serem tomados.

Em anexo, o e-mail solicitando um posicionamento da equipe e a resposta.

Próximos Passos

Como ações efetivas a serem realizadas, tem-se as seguintes:

  • Oficialização da estrutura definida na PoC. O arquivo anexo contem os fontes criados ou alterados para o spike.
    totvseai-mb-spike.zip
  • Alteração do processo de criação de aplicativos externos para só permitir incluir aplicativos com canal AMQP quando o componente totvseai-mb.pl estiver presente no PROPATH do AppServer Progress.
  • Conversar com a equipe do GCAD para conhecer a fundo a nova ferramenta de implantação do novo framework e sugerir as alterações necessárias para permitir a instalação do suporte ao AMQP no Datasul sob demanda e nos dois formatos: standalone e embedded.
  • Após as definições com a equipe do GCAD, incluir os componentes do suporte ao AMQP no processo de expedição oficial do novo frame Datasul.

  • Sem rótulos