Novo! Magic xpi “Project Hot Swap”

Conheça o novo recurso de “Hot Swap” para atualização de projetos, do Magic xpi 4.13.5

A recém-lançada versão 4.13.5 do Magic xpi, entre outras novidades, traz um recurso especial para atualização de projetos em ambiente de alta disponibilidade: o HOT SWAP.

O objetivo é diminuir a quase zero o tempo de parada dos projetos, por conta de suas atualizações e upgrades.

Veja como funciona.

 

Inicialmente, vamos considerar um projeto de integração que está provendo um webService REST.

Vamos usar um exemplo simples, onde algumas informações são recebidas e o webService retorna um “+OK“:

 

Com este projeto em execução, qualquer cliente pode consumir este serviço, enviar dados e receber o devido retorno:

 

Agora, vamos considerar a necessidade de alteração de regra de negócio do projeto e sua atualização em ambiente de “produção“.

Mantendo a simplicidade do exemplo, vamos apenas alterar a resposta do webService, para “+OK (versão 2)“:

 

E após fazermos a compilação do projeto, temos a nova versão pronta para atualizar no ambiente de destino.

Agora, vem a novidade: a partir desta versão 4.13.5, o processo de “build” do projeto produz um novo atalho e uma nova pasta chamados “hotswap“:

 

o novo “atalho“:

%XPI_HOME%\Runtime\MgxpiCmdl.bat start-servers -startup-config-file "%PROJECTS_HOME%\<nome_projeto>\<nome_projeto>\hotswap\start.xml" -space-name "MAGIC_SPACE" -swap "true"

é uma versão alternativa do atalho “start“, onde é solicitado para iniciar este projeto em modo “swap“, como um novo nome e uma nova configuração de inicialização.

e a nova “pasta“:

 

é onde ficam versões alternativas dos arquivos:

IFS.ini
START.xml

que permitem justamente esta inicialização em modo “swap“.

 

O que é o modo “swap” de execuçao dos projetos ?

 

Após a atualização da pasta do projeto no ambiente de destino, e sem realizar a “parada” do projeto que está em execução, podemos usar este atalho “hotswap” para proceder a atualização ‘a quente’ do projeto.

Nese momento, a nova versão entra em execução com outro nome:

<nome_projeto>_swap

E as duas versões ficam em execução ao mesmo tempo:

 

Porém,  a versão “antiga” (<nome_projeto>) para automaticamente de executar novas integrações e atender novas demandas de triggers, processando apenas o que já estava pendente em sua fila (messages).

De forma transparente, todas os novos processos de integração passam a ser executados pela versão “nova” (<nome_projeto>_swap)  do projeto:

 

e após algum tempo, quando a fila de mensagens da versão anterior é zerada, essa versão anterior é finalizada e nova versão fica soberana no grid, tendo o seu sufixo “_swap” removido:

 

Ou seja:

  • A versão “nova” entra em execução, com o sufixo _swap no nome do projeto
  • A versão “antiga” desconsidera as novas demandas de integração
  • A versão “nova” assume as novas demandas de integração
  • A versão “antiga” finaliza suas pendências
  • A versão “antiga” sai de cena
  • A versão “nova” segue executando, sem o sufixo _swap no nome do projeto

 

Pareceu simples?

É simples mesmo 😎

 

Fique ligado no Blog MagicBR, para mais dicas.

Manoel Frederico Silva – Gerente de Tecnologia e Evangelista MAGIC – Magic Brasil
Manoel Frederico Silva – Evangelista MAGIC – Magic Brasil

 

Para receber os artigos do Blog Magic Brasil em primeira mão no seu email, registre-se aqui

 

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *