Existe uma maneira de acelerar o AWS CodeDeploy


15

Estou usando o AWS CodeDeploy para implantar meus sites e notei que não é muito consistente em velocidade; às vezes é muito rápido, mas outras vezes cada etapa de uma implantação pode levar alguns minutos. Isso é bastante irritante quando uma implantação deve ser executada rapidamente, em caso de erros ou interrupções.

Porém, não consigo encontrar nenhuma documentação sobre a velocidade do CodeDeploy e também não consigo encontrar nenhuma lógica quando é lento ou rápido. Existe alguma maneira de acelerar e existe alguma maneira de saber o que está demorando tanto?

Respostas:


10

O CodeDeploy faz muito pouco por padrão - ele pega o código do S3 ou do Github e executa seus scripts de acordo com as appspec.ymlinstruções do arquivo.

Se suas implantações estão obtendo gigabytes de dados do S3, você verá que isso leva algum tempo para a transferência de dados (particularmente em instâncias menores do EC2 com largura de banda limitada), mas, além disso, os atrasos na implantação são muito mais prováveis ​​do que você está fazendo em seus scripts de implantação.

As etapas em uma implantação do CodeDeploy são:

  • ApplicationStop - você controla esse gancho
  • DownloadBundle - CodeDeploy pega o código do S3 / Github
  • BeforeInstall - você controla este gancho
  • Instalar - o CodeDeploy copia o código de um local temporário para o destino final
  • AfterInstall - você controla esse gancho
  • ApplicationStart - você controla esse gancho
  • ValidateService - você controla esse gancho

Os em negrito dependem do CodeDeploy, os outros dependem de você. Se você estiver observando atrasos variados nos em negrito, entre em contato com o suporte da AWS, mas, caso contrário, é provável que você precise investigar seus ganchos.


Sim, meus próprios scripts são simples e rápidos. É a etapa do pacote de download que geralmente leva alguns minutos para ser executada, e meu projeto não é tão grande; com a mesma frequência, leva apenas alguns segundos. Eu não tenho o plano de suporte a desenvolvedores, e não estou disposto a pagar apenas por isso, então deixarei por enquanto.
— Jasper Kennis 16/02

Verificado novamente, o problema tem que ser a largura de banda; estamos usando um tipo de instância pequena para o servidor de armazenamento temporário e maior uma vez para produção, e sempre é lento o armazenamento temporário.
— Jasper Kennis

@JasperKennis Sim, os tipos de instância menores podem ter uma largura de banda bastante limitada, principalmente se você estiver em um host com vizinhos barulhentos. Isso faria sentido.
— precisa

21

BlockTraffic e AllowTraffic

Simplesmente ajustar as configurações de verificação de saúde do seu grupo-alvo pode reduzir alguns minutos.

Antes

insira a descrição da imagem aqui insira a descrição da imagem aqui

Depois de

insira a descrição da imagem aqui insira a descrição da imagem aqui

Explicação

Isso funciona porque BlockTraffice AllowTrafficambos espera para exames de saúde bem-sucedidos. O intervalo de verificação de integridade padrão é 1 verificação a cada 30 segundos, e uma verificação de saúde bem-sucedida precisa de 5 200 respostas consecutivas. Portanto, leva mais de 2 minutos e 30 segundos por padrão. E isso é para todas as instâncias do EC2. Diminuir o intervalo de verificação de integridade e limitar o número de verificações bem-sucedidas necessárias melhorará o tempo de implantação.


Depois de fazer essa alteração, estou recebendo Script at specified location: ... failed to complete in 5 seconds. (ele é definido em appspec.yml-> hooks: -> BeforeInstall :) (por favor, diga-me o porquê)
— Yevgeniy Afanasyev

Existe um tempo limite definido na configuração BeforeInstall? docs.aws.amazon.com/codedeploy/latest/userguide/…
— Peter Tao

Obrigado, agora vejo que não está relacionado, mas sim uma coincidência.
— Yevgeniy Afanasyev

2

Outra configuração a ser verificada é o "atraso no cancelamento de registro" do grupo-alvo. Minhas configurações de verificação de saúde já estavam baixas e esse foi o gargalo no meu caso.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.