9 Replies Latest reply on Oct 15, 2013 2:18 PM by adrianoschmidt

    Automatizar deploy de aplicações

    neylorsousa

      Senhores, gostaria de abrir este tópico para saber como vocês trabalham a parte de deploy de aplicações em um ambiente com alta disponibilidade, tanto com JBoss 5 como JBoss 7. Voces aconselham sempre o deploy manual mesmo ou conseguiram automatizar o deploy? Exemplo, retira uma instância do balance, realizar deploy, checa se foi realizado de fato, volta para o balance.

       

      Podem compartilhar a experiência de vocês por gentileza?

        • 1. Re: Automatizar deploy de aplicações
          luan.cestari

          Oi =)

           

          Cara eu tenho uma idéia de solução usando um Web Server como HTTPD como Load Balancer e dois ou mais JBoss atrás. Basicamente você teria que configurar algumas coisinhas (como stick session e outras coisas) para as sessoes se manterem em um servidor e depois usar uns hacks para forçar que novas sessões fossem criadas somente em um nó, depois de migrar todas as sessões de um nós X, você poderia realizar o Deploy (Via CLI usando AS 7 com Maven e algum CI tipo Jenkins) que você não teria nenhum downtime.

           

          Att.

          Luan

          • 2. Re: Automatizar deploy de aplicações
            mauriciomag

            Oi Neylor tudo bom ?

             

            Cara acredito que a solução do Luan seja a mais utilizada atualmente. Eu mesmo gosto muito no JBoss 7 utilizar o CLI  + Maven + Jenkins para Deploy e Integração Contínua.

            Se estiver com a session replication o processo todo fica até transparente para o usuário.

             

            Abraços

            • 3. Re: Automatizar deploy de aplicações
              mauriciomag

              Uma Boa maneira de "forçar" a sessão em um servidor --> http://www.mastertheboss.com/jboss-cluster/sticky-session-configuration-in-eap-6-as-7

              • 4. Re: Automatizar deploy de aplicações
                adrianoschmidt

                Também sempre utilizo JBoss 7 com CLI + Maven + Jenkins...


                No Jenkins você pode configurar passo a passo... parar um jboss.. deploy.. sobe... testa.. para o outro...

                • 5. Re: Automatizar deploy de aplicações
                  ataxexe

                  Eu vou na mesma linha do pessoal. A diferença é que eu, assim como o pessoal do Hibernate, não gosto do Maven. No meu caso eu uso o gradle no lugar dele.

                   

                  A forma de fazer o deploy pode variar um pouco dependendo do tipo de aplicação ou da atualização. Algumas delas poderão exigir uma janela (caso não seja admissível que um usuário esteja rodando a versão "desatualizada" no momento do processo). Ah! E eu sempre paro o servidor em vez de fazer um redeploy para evitar os famosos estouros de perm gen.

                   

                  Tudo isso parece muito burocrático quando não temos load balancers e clusters, mas mesmo se tratando de um solitário JBoss, vale a pena automatizar o deploy.

                  • 6. Re: Automatizar deploy de aplicações
                    neylorsousa

                    Adriano você pode me passar os plugins e as referências de como realizar esta configuração?

                    • 7. Re: Automatizar deploy de aplicações
                      adrianoschmidt

                      Qual sua duvida exatamente Neylor?

                       

                      Você tem o Jenkins instalado? Esse é o primeiro passo..

                       

                      Depois faça ele compilar sua aplicação...

                      Depois faça ele deployar sua aplicação...

                       

                      Você pode fazer o jenkins parar o jboss.. limpar pastas temporárias.. subir..

                       

                      Tente seguir estas ideias e qualquer dúvida é só avisar!

                       

                      Abraço!

                      • 8. Re: Automatizar deploy de aplicações
                        neylorsousa

                        Adriano já possuo o Jenkins instalados.

                         

                        A dúvida é como fazer o Jenkis realizar os procedimentos que falou com o JBoss (parar, limpar pastas temporárias, realizar deploy, subir). Ele vai utilizar um plugin com o maven ou tem plugins no Jenkis para fazer isso funcionar? Ressalto que o ambiente onde vou realizar o deploy é balanceado, ou seja, tenho que fazer o rollout da aplicação. Possui alguma referência que eu poça seguir?

                        • 9. Re: Automatizar deploy de aplicações
                          adrianoschmidt

                          Vou te dar umas ideias aqui, depois você pode ir melhorando e adaptando ao seu ambiente..

                           

                          - na máquina onde está o jenkins você vai precisar do jboss

                          - abra um propt de comandos e pare o jboss via linha de comando pelo jboss-cli ( ./jboss-cli.sh ... shutdown ) não lembro o comando exato de cabeça agora..

                          - crie um novo job no junkins

                          - crie um step neste job e escolha "rodar comando do linux" ou ""rodar comando do windows"

                          - cole o comando que você executou para dar shutdown no jboss

                           

                          você vai fazer a mesma coisa para fazer deploy, por exemplo, via CLI você consegue fazer deploy também.. o mesmo script que você roda no prompt você colocará no jenkins

                          para limpar as pastas temporárias você pode rodar comando do sistema operacional mesmo (rm rmdir)

                           

                          existem plugins do maven para jboss... existem plugins do jboss para o jenkins...

                           

                          você tem que verificar qual é a melhor solução para o seu caso..

                           

                          abraço!!

                          Adriano Schmidt

                          www.localhost8080.com.br