A melhor maneira de implantar / atualizar o código de produção da web

6

Qual é o melhor método para implantar ou atualizar o código de um ambiente de desenvolvimento para um de produção ao vivo?

Estou acostumado a usar o bom e velho filezila para primeiro; delete, em seguida, faça o upload do novo código para o servidor de produção, mas isso traz vários problemas, sendo o tempo de inatividade o principal.

Eu também estive pensando em usar um VCS como o Mercurial ou o git. Esse é o melhor método para enviar código ao vivo?

Obrigado por qualquer insight.

    
por Allister 08.01.2012 / 21:43

3 respostas

2

Usar o VCS distribuído como mercurial, git ou bzr é uma boa ideia.

Você pode ter uma filial separada para produção (ou até mesmo uma filial para um cliente em particular no caso de personalizações).

Benefícios que vejo:

  • fácil de aplicar uma correção
  • fácil de reverter se necessário
  • histórico de alterações
  • se alguém fez um ambiente de produção fixo, você verá que
por 08.01.2012 / 22:04
3
Independentemente do seu ecossistema de desenvolvimento (Rails, Java) ou VCS (GIT, SVN), o aspecto mais crítico da implementação do seu código em qualquer ambiente é a integração contínua .

Aqui estão algumas coisas a serem consideradas:

  • Mantenha um repositório de fontes. Bastante óbvio. Eu trabalho em uma loja Java e usamos o SVN. Independentemente do VC que você usa, é importante poder marcar / version seu código para garantir que você implemente o código correto entre os ambientes. Lembre-se de que você não está implantando do desenvolvimento à produção, mas sim extraindo o código do controle de origem para uma máquina de compilação e criando um pacote específico para cada um dos seus ambientes.
  • Automatize o processo de criação. Implementamos nossos aplicativos como arquivos WAR e usamos Ant para criar nossos pacotes de implantação.
  • Execute testes de unidade durante a criação. É importante abortar a implantação no caso de testes de unidade com falha.
  • Use um servidor de integração contínua. Usamos a Hudson e obtivemos grande sucesso com ela. Isso nos permite não apenas implantar em todos os ambientes (DEV, SIT, UAT, PROD) com um único clique, mas também agendar construções e implementações ao longo do dia para garantir que todo o processo de entrega seja saudável.

Dependendo do seu ambiente de produção, implementar isso pode ser bastante trivial ou bastante complexo. Aqui estão mais alguns recursos para você começar:

Ambos os recursos devem fornecer ideias suficientes para criar seu próprio processo.

    
por 08.01.2012 / 23:42
1

Nós usamos um repositório Git acoplado ao Webistrano.

O Git permite que os desenvolvedores gerenciem seu código de forma descentralizada e com todas as vantagens de um VCS.

O Webistrano permite que os desenvolvedores ou gerentes apropriados enviem o código para uma plataforma de desenvolvimento e depois para a plataforma de produção, basta clicar em uma interface da web. É uma ferramenta projetada para ambientes de RoR, mas funcionará com um pouco de personalização em praticamente qualquer ambiente. Outra vantagem do Webistrano é que ele permite reversões fáceis em caso de falhas de implementação, o que é um recurso muito interessante.

Como sysadmin, não posso mais viver sem o webistrano. Isso me permite parar de me preocupar com desenvolvedores (ou administradores de sistemas!) Fazendo coisas estúpidas em servidores de produção durante a implementação. É automatizado e direto. Uma outra grande vantagem é que os desenvolvedores não precisam de um administrador de sistema para enviar o código de forma limpa, basta clicar junto.

Mais informações sobre o Webistrano: aqui .

    
por 08.01.2012 / 22:16