Eu tive o mesmo problema que você. Eu tenho um grupo de escalonamento automático que aumenta um pouco com o tráfego e eu envio atualizações o tempo todo, mesmo sob carga de pico. Minha solução é um pouco mais complicada, pois preciso de uma área de teste para poder testar minhas atualizações de código antes que elas atinjam os servidores ativos. Em seu nível mais simples, aqui está como eu construo / atualizo meus servidores.
Criar base AMI - Esta é a AMI sem nenhum código-fonte. Essa AMI pode ser agrupada com aplicativos de terceiros que você precisa ou não. Por exemplo, um dos meus servidores eu preciso de AppFabric, IIS, AWSSDK.NET e .NET 4.0. Eu instalo todas essas ferramentas e salvo o ami. Meus servidores linux eu faço isso em tempo de execução, pois é muito mais rápido.
Armazenar código-fonte no S3 ou SVN - Quando o servidor inicia, ele pega o código mais recente do SVN ou S3. Para atualizar os servidores existentes, basta terminá-los um de cada vez ou em grupos, e o grupo Auto Scaling iniciará outro com o código mais recente.
Dependendo de quão tolerante o seu serviço é para falhas, você também pode implementar um servidor de armazenamento temporário como se eu tivesse que testar o novo código antes que os pedidos começassem a ser enviados. Minha configuração requer dois grupos de dimensionamento automático. O primeiro grupo é basicamente minha camada de segurança e autenticação, que usa o código php. Depois que a solicitação é validada, ela é encaminhada para outro grupo de escalonamento automático.
Atualizações na camada de autenticação de segurança ainda exigem as etapas explicadas por mim e por Eric Hammond. No entanto, tento não atualizar muito esse código, ele não contém nenhuma lógica de negócios e quase nunca muda. As alterações nessa camada sempre devem ser compatíveis com versões anteriores, de modo que, se você fizer atualizações, poderá ter duas versões dos servidores on-line ao mesmo tempo, sem problemas.
Atualizações na camada de negócios é onde aplico todas as alterações de código para atualizar recursos, corrigir bugs etc. O truque é criar outro grupo de dimensionamento automático / balanceador de carga ao fazer atualizações com seus próprios servidores e código (novamente SVN ou S3). ). Depois de testado, você atualiza o servidor dns local (supondo que você tenha um) e a camada de autenticação de segurança começa a usar automaticamente os novos servidores.
Editar: Esqueceu de adicionar este link link . Tem algumas informações muito boas sobre como resolver esse tipo de problema e algumas outras coisas que você pode ou não saber sobre o aws.