zero_downtime_deployment_unicloud

Zero DownTime Deployment (ZDT) jest funkcjonalnością zapewniającą ciągłość działania aplikacjom PHP w trakcie pracy nad projektem bez konieczności alokowania dodatkowych zasobów. Rozwiązanie zostało zaprojektowane i stworzone we współpracy z Rasmusem Lerdorfem, dzięki czemu pozwala na bezpieczną modyfikację kodu aplikacji bez wpływu na jej dostępność dla końcowego użytkownika.

Rozwiązanie ZDT oparte jest o dwie koncepcje:

  1. przy każdym wdrożeniu nowej wersji, pliki aplikacji duplikowane są do nowego katalogu na serwerze
  2. przełączanie między wersjami odbywa się za pomocą redirektora wykorzystującego mechanizmy łączy symbolicznych symlink

Aby skorzystać z mechanizmów ZDT należy stworzyć środowisko oparte o PHP ( i np. Apache):

Następnie należy przystąpić do przesłania danej aplikacji (korzystając z dowolnej metody):

Uwaga: dostarczając po raz pierwszy aplikację w kontekst ROOT, poprzednie dane aktualnie istniejących aplikacji zostaną nadpisane. Zalecamy ostrożność.

Podczas pierwotnego dostarczenia aplikacji, powstanie nowy katalog, ROOT_ze_znacznikiem_czasu, oraz specjalny plik ROOT, będący linkiem do katalogu. Zostaną one utworzone wewnątrz katalogu webroot serwera aplikacji:

Łącząc się z serwerem po ssh, możemy łatwo sprawdzić ścieżkę aktualnego wiązania:

Podczas ponownego dostarczenia aplikacji ( np. po aktualizacji) powstanie kolejny katalog ROOT_ze_znacznikiem_czasu, zawierający aktualną wersję aplikacji. Nie wpływa to na aktualnie pracujących użytkowników.

Po rozpakowaniu nowych plików, nowe żądania będą kierowane do nich. Jednocześnie warto zauważyć, że istniejące sesje będą wciąż aktywne (korzystając ze „starego” katalogu). Kolejne aktualizacje przebiegają w ten sam sposób, z zachowaniem dwóch najnowszych wersji – poprzednia zostaje usunięta podczas dodawania nowej:

Stary katalog można skasować ręcznie aby ograniczyć zużycie miejsca na dysku lub zmienić mu nazwę, dzięki czemu może pełnić rolę archiwum.

Wszystkie te operacje są zautomatyzowane i nie wymagają dodatkowego zaangażowania deweloperów. Nie wymagają również restartów serwerów aplikacji i w rezultacie skutkują zerowym czasem niedostępności aplikacji.

 

Więcej informacji o Zero DownTime Deployment znajdziesz w dokumentacji Jelastic:

button-jelastic

Otagowano: