2016-06-07 16 views
22

Wypróbowanie nowego, elastycznego mechanizmu uruchamiania aplikacji. W tym przypadku niestandardowe środowisko wykonawcze Ruby on Rails oparte na dostarczonym przez Google środowisku wykonawczym ruby.Proces wdrażania aplikacji gcloud do podglądu trwa ~ 8 minut, czy to normalne?

Po uruchomieniu gcloud preview app deploy cały proces trwa ~ 8 minut, z których większość to "aktualizowanie usługi". Czy to normalne? A co ważniejsze, jak mogę przyspieszyć?

Pozdrawiam,

Ward

+3

To normalne, budujesz i przesyłasz obrazy doków w większości przypadków. –

+0

Mam tam odpowiedź na to pytanie, być może mógłbyś to zobaczyć. http://stackoverflow.com/a/37806746/2746292 –

Odpowiedz

18

Tak, to jest całkowicie normalne. Większość etapów wdrażania odbywa się z dala od komputera i jest niezależna od rozmiaru bazy kodu, więc nie można wiele zrobić, aby przyspieszyć ten proces.

różne kroki, które biorą udział we wdrażaniu aplikacji na App Engine można sklasyfikować następująco:

  1. Zbierz informacje z app.yaml aby zrozumieć ogólne trendy rozmieszczenia
  2. kod zbierać i wykorzystywać wizerunku Döcker określone w app.yaml zbudować wizerunek Döcker z kodem
  3. Rezerwa Compute przypadkach zasady sieci/firewall, zainstalować Döcker narzędzi związanych na przykład wcisnąć Döcker obrazu do instancji i zacząć to
  4. Upewnij się, że wszystkie były udane wdrożenia, st sprawdzanie stanu zdrowia i, jeśli jest to wymagane, przesłać/zrównoważyć ładunek.

kod zbierać i wykorzystywać wizerunku Döcker określonego w app.yaml zbudować wizerunek Döcker z kodem Rezerwa instancji zadania obliczeniowe, sieci/reguł zapory, zainstalować Döcker narzędzi związanych na przykład Push Döcker obrazu do instancji i uruchom go Upewnij się, że wszystkie wdrożenia zakończyły się pomyślnie, uruchom testy zdrowotne i jeśli to konieczne, prześlij/wyrównaj obciążenie.

Jedynym procesem, który zajmuje większość czasu, jest ostatnia część, w której wykonuje wszystkie niezbędne kontrole, aby upewnić się, że wdrożenie zakończyło się powodzeniem i rozpoczęto przetwarzanie ruchu. W zależności od rozmiaru kodu (przesłanie kodu do utworzenia kontenera) i wymagań dotyczących zasobów (udostępnianie zasobów niestandardowych), kroki 2 i 3 mogą zająć trochę więcej czasu.

Jeśli przeprowadzisz analizę, okaże się, że około 70% czasu zużywa się na ostatnim etapie, w którym mamy najmniej widoczności, ale jest to niezbędny proces, który daje maszynie programującej możliwość wykonania całego ciężkiego podnoszenia.

0

Należy pamiętać, że kolejne wdrożenia powinny być znacznie szybsze niż 8 minut. Zwykle jest to 1 minuta lub mniej w moich testach z Node.js na App Engine Flex.

+1

Nie jestem pewien, ale powinno tak być w przypadku wdrażania w tej samej usłudze i wersji. Jeśli jest to nowsza wersja lub inna usługa, trwa ona w podobnym czasie. Oznacza to, że łatki są szybko stosowane, ale wdrażanie/wycofywanie jest powolne. –

+14

Z mojego doświadczenia wynika, że ​​czasy wdrażania kolejnych wersji nie ulegają poprawie. –

+1

Moje są zawsze ~ 10min w Gitlab CI –

8

Wdrażanie w tej samej wersji dostarczyło mi od 6 minut do 3 minut w kolejnych wdrożeniach.

Przykład:

$ gcloud app deploy app.yaml --version=test 
0

Należy sprawdzić, co jest w zamek to załadować (mówi ci lokalizację to na wdrożeniu) i upewnić się, że skip_files YAML jest ustawiony na takie rzeczy jak twój. Katalog git, jeśli go masz, i node_modules

0

Po prostu uruchom to polecenie z katalogu głównego aplikacji.yaml

Z katalogu shell Wizyta app.yaml następnie uruchomić gcloud aplikacja wdrożyć

To zostanie przesłany w ciągu kilku sekund.

+1

Myślę, że używasz standardowego env, pytanie dotyczy elastycznego środowiska env i trwa tak długo –