Da sua conta do StackOverflow, eu acho que você é uma loja de python.
Eu recomendo usar o BZR como seu VCS, mas isso é bastante irrelevante. Use o que você e seus desenvolvedores forem mais felizes.
Você deve ter (pelo menos) um servidor de desenvolvimento centralizado.
Isso deve conter uma cópia mestre do seu repositório, assim como diretórios iniciais para seus desenvolvedores.
Faça backups regulares desse servidor.
Use o rsnapshot para obter instantâneos em andamento dos dados. Talvez instantâneos de hora em hora, um backup externo noturno (o Amazon S3 tem um ótimo custo-benefício para isso!).
Faça um backup semanal para offline-medium (fita, DVD, HDD externo) e gire-os mensalmente.
Não se esqueça de testar a restauração!
Se você tem 2 servidores de desenvolvimento, você deve idealmente construí-los de forma idêntica com algo como o ubuntu preseed , ou RHEL / Centos Kickstart. Em seguida, crie os ambientes de servidor com o boneco . Isso economizará tempo a longo prazo, especialmente quando você chegar ao ponto de expansão.
Você poderia configurar a replicação em nível de sistema de arquivos com rsync entre os vários servidores de desenvolvimento, mas eu pessoalmente recomendaria usar um sistema de armazenamento em nível de bloco compartilhado, como GlusterFS
Adquira o hábito de escrever testes de unidade cedo. Mesmo que seja apenas para os módulos principais dos seus projetos. Integrar estes com um corredor de teste de unidade, diga PyUnit . Obtenha um analisador de cobertura de código para ajudá-lo a desenvolver testes eficazes. Integre seu ambiente de teste ao seu controle de origem com algo como Hudson ou Buildbot . Agora você pode ser notificado com qual desenvolvedor confirmou o código que quebrou a compilação.
Você deve ter um servidor de testes separado, que espelhe seu ambiente ao vivo. O ideal é que você tenha dois deles, um no escritório para testes locais e um no mesmo datacenter onde estão seus servidores públicos.
A razão para ter 2 é que você pode fazer implantações e testes rápidos no local, mas testar o ambiente que é idêntico aos servidores ativos, como diferenças de rede, firewalls, roteamento, etc.
Depois de ter alguns servidores configurados e funcionando, você deve considerar algum tipo de sistema de backup centralizado. Faça backup de todos os bits importantes de seus servidores em um local central e, em seguida, replique esses dados em um servidor separado. Por exemplo, um no escritório, um no datacenter.
Bem como backups off-line / off-line semanais e testes de recuperação de desastre.
Mais uma vez, muito disso é a "solução ideal" e não é financeiramente viável para pequenas startups. O investimento em boas práticas logo no início retorna no futuro. Especialmente coisas que limitarão o tempo de inatividade quando você estiver tentando escalar rapidamente.
Um bom controle de origem e um fluxo de trabalho de desenvolvimento produtivo também são muito importantes.