Czy istnieje sposób na przyspieszenie AWS CodeDeploy


15

Używam AWS CodeDeploy do wdrażania moich stron i zauważyłem, że nie jest to bardzo spójne pod względem szybkości; czasami jest to dość szybkie, ale innym razem każdy krok wdrożenia może zająć minuty. Jest to dość denerwujące, gdy wdrożenie powinno być wykonane szybko, w przypadku błędów lub awarii.

Nie mogę jednak znaleźć żadnej dokumentacji dotyczącej szybkości CodeDeploy, a także nie mogę znaleźć logiki, gdy jest on wolny lub szybki. Czy jest jakiś sposób, aby go przyspieszyć i czy jest jakiś sposób, aby wiedzieć, co trwa tak długo?

Odpowiedzi:


10

CodeDeploy robi bardzo niewiele domyślnie - to chwyta kod z S3 lub Github, następnie uruchamia swoje skrypty na w appspec.ymlinstrukcji pliku.

Jeśli Twoje wdrożenia pobierają gigabajty danych z S3, przekonasz się, że przeniesienie danych zajmuje trochę czasu (szczególnie w mniejszych instancjach EC2 o ograniczonej przepustowości), ale poza tym opóźnienia wdrażania są znacznie bardziej prawdopodobne z powodu robię w twoich skryptach wdrażania.

Kroki we wdrożeniu CodeDeploy to:

  • ApplicationStop - kontrolujesz ten hak
  • DownloadBundle - CodeDeploy pobiera kod z S3 / Github
  • BeforeInstall - kontrolujesz ten hak
  • Zainstaluj - CodeDeploy kopiuje kod z lokalizacji tymczasowej do miejsca docelowego
  • AfterInstall - kontrolujesz ten hak
  • ApplicationStart - kontrolujesz ten hak
  • ValidateService - kontrolujesz ten hak

Odważni są zależni od CodeDeploy, inni zależą od ciebie. Jeśli widzisz różne opóźnienia w pogrubieniu, skontaktuj się z pomocą techniczną AWS, ale w przeciwnym razie możesz sprawdzić swoje haki.


Tak, moje własne skrypty są proste i szybkie. Jest to krok pakietu pobierania, który często zajmuje kilka minut, a mój projekt nie jest taki duży; równie często zajmuje to sekundy. Nie mam jeszcze planu wsparcia dla programistów i nie jestem skłonny zapłacić za to tylko za to, więc po prostu na to pozwolę.
Jasper Kennis

Sprawdziłem to jeszcze raz, problemem musi być przepustowość; używamy małego typu instancji dla naszego serwera pomostowego, a raz większego do produkcji, i zawsze pomostowanie jest powolne.
Jasper Kennis

@JasperKennis Tak, mniejsze typy wystąpień mogą być dość ograniczone, szczególnie jeśli jesteś na hoście z hałaśliwymi sąsiadami. To miałoby sens.
ceejayoz

21

BlockTraffic i AllowTraffic

Po prostu dostosowanie ustawień kontroli zdrowia grupy docelowej może potrwać kilka minut.

Przed

wprowadź opis zdjęcia tutaj wprowadź opis zdjęcia tutaj

Po

wprowadź opis zdjęcia tutaj wprowadź opis zdjęcia tutaj

Wyjaśnienie

To działa, ponieważ BlockTraffici AllowTrafficoba czekają na pomyślne kontrole zdrowia. Domyślny interwał sprawdzania kondycji to 1 sprawdzanie co 30 sekund, a pomyślna kontrola wymaga 5 kolejnych 200 odpowiedzi. Dlatego domyślnie zajmuje to więcej niż 2 min. 30 sekund. I to jest dla każdej instancji EC2. Skrócenie interwału sprawdzania kondycji i ograniczenie liczby wymaganych sprawdzeń poprawi skrócenie czasu wdrażania.


Po dokonaniu tej zmiany dostaję Script at specified location: ... failed to complete in 5 seconds. (jest ustawiony w appspec.yml-> haki: -> BeforeInstall :) (proszę powiedz mi dlaczego)
Jewgienij Afanasyjew

Czy istnieje limit czasu ustawiony w konfiguracji BeforeInstall? docs.aws.amazon.com/codedeploy/latest/userguide/…
Peter Tao

Dziękuję, teraz widzę, że to nie jest powiązane, ale raczej przypadek.
Jewgienij Afganijew

2

Innym ustawieniem do sprawdzenia jest „opóźnienie wyrejestrowania” grupy docelowej. Moje ustawienia sprawdzania kondycji były już niskie i w moim przypadku było to wąskie gardło.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.