Gibt es eine Möglichkeit, AWS CodeDeploy zu beschleunigen?

15

Ich verwende AWS CodeDeploy zum Bereitstellen meiner Websites und habe festgestellt, dass die Geschwindigkeit nicht sehr konstant ist. manchmal ist es ziemlich schnell, aber manchmal kann jeder Schritt einer Bereitstellung Minuten dauern. Dies ist ziemlich ärgerlich, wenn eine Bereitstellung im Falle von Fehlern oder Ausfällen schnell durchgeführt werden soll.

Ich kann jedoch keine Dokumentation zur Geschwindigkeit von CodeDeploy finden, und ich kann auch keine Logik darin finden, wenn es langsam oder schnell ist. Gibt es eine Möglichkeit, es zu beschleunigen, und gibt es eine Möglichkeit, zu wissen, was so lange dauert?

Jasper Kennis
quelle

Antworten:

10

Standardmäßig macht CodeDeploy nur sehr wenig - es holt sich den Code von S3 oder Github und führt dann Ihre Skripte gemäß den appspec.ymlAnweisungen der Datei aus.

Wenn Ihre Bereitstellungen Gigabyte an Daten von S3 abrufen, wird die Datenübertragung einige Zeit in Anspruch nehmen (insbesondere bei kleineren EC2-Instanzen mit begrenzter Bandbreite). Abgesehen davon sind Verzögerungen bei der Bereitstellung jedoch viel wahrscheinlicher, was auch immer Sie verursachen tun in Ihren Bereitstellungsskripten.

Die Schritte in einer CodeDeploy-Bereitstellung sind:

  • ApplicationStop - Sie steuern diesen Hook
  • DownloadBundle - CodeDeploy holt sich Code von S3 / Github
  • BeforeInstall - Sie steuern diesen Haken
  • Installieren - CodeDeploy kopiert Code von einem temporären Speicherort zum endgültigen Ziel
  • AfterInstall - Sie steuern diesen Haken
  • ApplicationStart - Sie steuern diesen Hook
  • ValidateService - Sie steuern diesen Hook

Die Fettgedruckten liegen bei CodeDeploy, die anderen bei Ihnen. Wenden Sie sich an den AWS-Support, wenn in den fett gedruckten Fällen unterschiedliche Verzögerungen auftreten. Andernfalls müssen Sie möglicherweise Ihre Hooks untersuchen.

ceejayoz
quelle
Ja, meine eigenen Skripte sind einfach und schnell. Es ist der Download-Bundle-Schritt, dessen Ausführung oft Minuten in Anspruch nimmt, und mein Projekt ist nicht so groß. genauso oft dauert es nur Sekunden. Ich habe noch keinen Entwickler-Support-Plan, und ich bin nicht bereit, dafür zu bezahlen, also lasse ich es jetzt einfach so.
Jasper Kennis
Wurde es noch einmal überprüft, muss das Problem die Bandbreite sein; Wir verwenden einen kleinen Instanztyp für unseren Staging-Server und einen größeren für die Produktion, und das Staging ist immer langsam.
Jasper Kennis
@JasperKennis Ja, die kleineren Instanztypen können ziemlich bandbreitenbegrenzt sein, insbesondere wenn Sie sich auf einem Host mit lauten Nachbarn befinden. Das würde Sinn machen.
Ceejayoz
21

BlockTraffic und AllowTraffic

Durch einfaches Anpassen der Einstellungen für die Gesundheitsprüfung Ihrer Zielgruppe können Sie sich einige Minuten sparen.

Vor

Bildbeschreibung hier eingeben Bildbeschreibung hier eingeben

Nach

Bildbeschreibung hier eingeben Bildbeschreibung hier eingeben

Erläuterung

Dies funktioniert , weil BlockTrafficund AllowTrafficbeide warten auf erfolgreiche Gesundheitschecks. Das Standardintervall für die Integritätsprüfung ist 1 Prüfung alle 30 Sekunden, und für eine erfolgreiche Integritätsprüfung sind 5 aufeinanderfolgende 200 Antworten erforderlich. Daher dauert es standardmäßig länger als 2 Minuten und 30 Sekunden. Und das gilt für jede EC2-Instanz. Durch Verringern des Integritätsprüfungsintervalls und Begrenzen der Anzahl der erforderlichen erfolgreichen Überprüfungen wird die Bereitstellungszeit verkürzt.

Peter Tao
quelle
Nach dieser Änderung bekomme ich Script at specified location: ... failed to complete in 5 seconds. (es ist in appspec.yml-> Hooks festgelegt: -> BeforeInstall :) (bitte sagen Sie mir, warum)
Jewgenij Afanasjew
Gibt es ein Timeout in der BeforeInstall-Konfiguration? docs.aws.amazon.com/codedeploy/latest/userguide/…
Peter Tao
Vielen Dank, jetzt sehe ich es ist nicht verwandt, sondern eher ein Zufall.
Yevgeniy Afanasyev
2

Eine weitere zu überprüfende Einstellung ist die "Verzögerung der Abmeldung" der Zielgruppe. Meine Einstellungen für die Gesundheitsprüfung waren bereits niedrig und dies war der Engpass in meinem Fall.

Aaron
quelle