Rodrigo Kumpera Weblog

Meus achados sobre tecnologia

Deployment facil utilizando gracefull transition

January 26th, 2007 · No Comments

Nunca tinha visto um deployment tão tranquilo quanto o do atual projeto que trabalho, conseguimos fazer transição e manobras com o sistema no ar sem causar qualquer problema ao usuário final. O mais interessante é que a solução é tão simples que chega a ser supreendente.

Gracefull transition é quando os usuários são gradativamente transcionados para uma nova versão do sistema, conforme chegam novas requisições. O conceito é até simples, você mantem o atual sistema no ar, sobe em paralelo o novo e vai migrando os usuários conforme forem acessando o sistema.

Para implementar essa técnica, basta definir o endereço dos sistemas via nomes, isto é, criar aliases no /etc/host e garantir que ocorre um refresh periódico do cache de cada processo. Se um componente for escrito em Java, basta iniciá-lo com o parâmetro -Dsun.net.inetaddr.ttl=xxx, onde xxx é o tempo em segundos para expirar as entradas do cache. Feito isto, para fazer o chaveamento de uma versão para a outra basta trocar no arquivo de hosts para o IP da nova versão.

Por exemplo, temos uma aplicação web que invoca um webservice no endereço ws.app.intranet, este é um nome interno utilizado entre as aplicações. A atual versão roda no IP 10.0.0.1, a nova está no 10.0.0.2. Ao trocarmos o IP no arquivo de hosts para a versão mais recente, basta esperar alguns minutos até todas requisições estarem sendo direcionadas corretamente.

Você pode fazer isso utilizando múltiplos IPs na mesma máquina caso deseje atualizar componentes que se comuniquem localmente, se estiver utilizando apache na frente do seu servlet container, é uma maneira de atualizar sem causar impacto ao usuário final.

Tags: Programming

0 responses so far ↓

  • There are no comments yet...Kick things off by filling out the form below.

Leave a Comment