Como implementar o Continuous Delivery com o Java webapp?

5

Eu tenho lido sobre Entrega Contínua e parece incrível automatizar o processo de implantação. Eu tenho lido sobre as possibilidades de como fazer isso com o Java Webapps, mas normalmente ele acaba com o implemento do servidor de CI ou do maven plugin para o Tomcat SEM reiniciar o Tomcat usando a API de gerenciamento do Tomcats. Mas isso leva a problemas de OutOfPermGenSpace e, portanto, eu não usaria essas soluções para produção. Além disso, é um incômodo matar um Tomcat descontrolado.

Existe alguma tecnologia que facilite a implantação de aplicativos da Web Java na produção? Eu uso o maven para construir meus artefatos e implantar para o repositório nexus.

EDITAR:

Não estou tentando encontrar maneiras de evitar problemas de espaço do Permgen. Estou tentando implantar automaticamente para produção. Não deve haver etapas manuais além de escolher uma versão e clicar em um botão (ou fornecer um número de versão a um script de linha de comando). Quero descobrir se preciso criar esse tipo de configuração manualmente ou se há uma solução pronta para isso. Até agora, o LiveRebel parece ser a única solução até agora que não requer que eu implemente tudo sozinho.

    
por palto 11.12.2011 / 16:06
fonte

4 respostas

4

Isenção de responsabilidade: Sou um consultor não remunerado para o conselho consultivo de produtos deles.

Zero Turnaround tem produtos de custo muito baixo, chamados JRebel e LiveRebel, que resolvem a grande maioria dos problemas relacionados à implantação de arquivos WAR em hot-web. servidor como o Tomcat.

Como smp7d menciona corretamente, o JRebel é a versão da ferramenta de desenvolvimento dos dois.

Eles tendem a trabalhar no nível de código de bytes, evitando o sistema de carregamento de classes geralmente quebrado neste espaço.

    
por 11.12.2011 / 20:59
fonte
2

Você pode reiniciar o Tomcat e acabar com isso. Além disso, o Tomcat 7 supostamente resolveu problemas de PermGen ... embora eu não tenha tentado.

    
por 11.12.2011 / 20:16
fonte
1

Você só deve fazer a Entrega Contínua para um servidor de desenvolvimento. Veja a implementação de alterações em um aplicativo explodido neste servidor. Se isso não for adequado, aumente o tamanho do PermGen. Programe as reinicializações diárias do servidor para limpar a memória.

Marque e crie um pacote de implantação para o Integration Server e implemente somente quando solicitado. Isso deve ser coordenado com a equipe de testes de integração. Eu acho que mais de uma vez por dia é geralmente excessivo para esse ambiente.

A implantação do pacote de implantação testado do Integration Server para a Produção deve ser feita somente com aprovação. Isso geralmente precisa ser agendado para horas de folga.

EDIT: Em todos os lugares em que trabalhei, onde implantamos automatizadamente, foi feito manualmente. Tendem a haver problemas em relação a privilégios, aprovações, agendamentos, etc., que podem fazer com que um produto genérico não caiba bem em um ambiente específico. Em ambientes com vários servidores de carga balanceada, pode haver problemas adicionais.

EDIT2: Sempre defendi a implantação automatizada. Implantação contínua, como tenho experiência, é construir e implantar no check-in. Você não quer que a produção seja o destino da implantação. É uma boa maneira de garantir que as coisas sejam construídas no ambiente de destino e não apenas na área de trabalho dos desenvolvedores.

Recolher criações como implantar candidatos para testes adicionais e possível implantação de produção não é o que eu consideraria implantação contínua. Eu considero isso uma prática recomendada se a seleção e a migração forem automatizadas

    
por 11.12.2011 / 17:59
fonte
0

Acho que você poderia aumentar o szie PermGen (-XX: PermSize = 64M -XX: MaxPermSize = 128m), esse valor padrão é 64M. Se você não quiser aumentá-lo, poderá usar a ANT para implantar seu aplicativo da Web.

    
por 13.12.2011 / 02:24
fonte