Zero DownTime

Zero DownTime Deployment dla PHP

Zapewnienie ciągłości działania aplikacjom PHP

Modyfikujemy kod aplikacji PHP bez wpływu na ich dostępność dla użytkowników UniCloud.

 

Od nowoczesnych usług dostarczanych on-line wymagana jest możliwość dostępu bez przerw w działaniu. Wraz ze wzrostem liczby użytkowników, jeśli chcemy utrzymać odpowiedni poziom satysfakcji, wdrażanie kolejnych wersji aplikacji staje się coraz trudniejsze. Idealne rozwiązanie to aktualizacja „w locie”, odbywająca się bez przerwania pracy użytkowników, niejako w ukryciu. Stąd też pojawiły się dążenia do przeprowadzenia wdrożenia w sposób niezauważalny, kiedy to użytkownik nie musi oczekiwać na zakończenie procesu aktualizacji po stronie usługodawcy. Jest to tak zwane „wdrożenie bez przestojów”, czyli Zero DownTime Deployment [1]. Osiąga się je wykorzystując symboliczne powiązania folderów po stronie serwera. W dalszej części artykułu zaprezentujemy technologię przetestowaną w chmurze UniCloud.

Rozwiązanie to, zaproponowane dla aplikacji PHP przez Rasmusa Lerdorfa [2], upraszcza stosowane wcześniej metody i narzędzia, umożliwiając bezpieczną zmianę kodu bez wpływu na dostępność dla końcowego użytkownika. Idea ta zawiera się w dwóch punktach [3]:

  • przy każdym uruchomieniu procesu wdrażania nowej wersji, pliki aplikacji duplikowane są w nowym katalogu na serwerze
  • specjalny redirector przełącza się miedzy różnymi wersjami aplikacji wykorzystując mechanizmy łączy symbolicznych symlink

Rysunek 1: Przełączanie zapytań pomiędzy aplikacjami

Implementacja mechanizmu Zero DownTime Deployment w UniCloud [4]

Przetestowanie prezentowanego rozwiązania możliwe jest po założeniu konta trial na platformie UniCloud (www.unicloud.pl).

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:

Dostarczając po raz pierwszy aplikację w kontekst ROOT, poprzednie dane aktualnie istniejących aplikacji zostaną nadpisane. W tym momencie zalecana jest szczególna 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żna łatwo sprawdzić ścieżkę aktualnego wiązania:

ls -l /var/www/webroot

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

Po rozpakowaniu nowych plików, kolejne żądania będą kierowane już 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:

Niepotrzebny katalog można skasować aby zmniejszyć uż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 i administratorów. Nie wymagają również restartów serwerów aplikacji i w rezultacie uzyskujemy nasz cel: zerowy czas niedostępności aplikacji.

Info:

[1] Wdrażanie aplikacji PHP (Niklas Modess, Deploying PHP Applications):
http://www.deployingphpapplications.com

[2] Rasmus Lerdorf, Atomic deploys at Etsy:
https://codeascraft.com/2013/07/01/atomic-deploys-at-etsy

[3] Rozwój aplikacji PHP na platformie Jelastic:
https://docs.jelastic.com/php-zero-downtime-deploy

[4] Baza wiedzy UniCloud:
http://pomoc.unicloud.pl/unicloud/tworzenie-aplikacji/zero-downtime-deployment-dla-aplikacji-php

Partnerzy technologiczni

Dell
Cisco
vmware
Emc2
Certum
Microsoft
IBM

 

Szanowna Użytkowniczko/Szanowny Użytkowniku

Zgodnie z art. 13 ust. 1 i 2 ogólnego rozporządzenia o ochronie danych osobowych z dnia 27 kwietnia 2016 r (zwanego dalej „Rozporządzenie”) informuję, iż:

  • Administratorem Pani/Pana danych osobowych jest Asseco Data Systems S.A. z siedzibą w Gdyni, ul. Podolska 21, 81-321 Gdynia.
  • Kontakt do Inspektora ochrony danych w Asseco Data Systems S.A. można uzyskać pod adresem e – mail: IOD@assecods.pl, tel.+48 42 675 63 60.
  • Pani/Pana dane osobowe przetwarzane będą w celu:
    1. przygotowania odpowiedzi na zapytanie na podstawie art. 6 ust. 1 lit. b Rozporządzenia.
    2. przesyłania informacji marketingowych za pomocą środków komunikacji elektronicznej i programów automatyzujących na podstawie ustawy z dnia 18 lipca 2002 r. o świadczeniu usług drogą elektroniczną i w zw. z art. 172 ust. 1 ustawy z dnia 16 lipca 2004 r. prawa telekomunikacyjnego (zgoda alternatywna) na podstawie art. 6 ust. 1 lit. a Rozporządzenia.
  • Pani/Pana dane osobowe będą przechowywane przez okres niezbędny do przygotowania i przedstawienia odpowiedzi na zapytanie oraz do czasu cofnięcia przez Panią/Pana wyrażonej zgody na otrzymywanie informacji marketingowych.
  • Posiada Pani/Pan prawo dostępu do treści swoich danych oraz prawo ich sprostowania, usunięcia/zapomnienia, ograniczenia przetwarzania, prawo do przenoszenia danych, prawo wniesienia sprzeciwu, prawo do cofnięcia zgody w dowolnym momencie bez wpływu na zgodność z prawem przetwarzania, którego dokonano na podstawie zgody przed jej cofnięciem. Realizację wszystkich powyższych praw można zrealizować poprzez wniosek złożony na stronie https://www.daneosobowe.assecods.pl
  • Ma Pani/Pan prawo wniesienia skargi do Regulatora, gdy uzna Pani/Pan, iż przetwarzanie danych osobowych Pani/Pana dotyczących narusza przepisy Rozporządzenia.
  • Podanie przez Pana/Panią danych osobowych jest niezbędne do realizacji wniosku z zapytaniem. Jest Pan/Pani zobowiązana do ich podania, a konsekwencją niepodania danych osobowych będzie brak możliwości uzyskania odpowiedzi na wysłane zapytanie.
  • Pani/Pana dane będą przetwarzane w sposób zautomatyzowany w tym również w formie profilowania. Zautomatyzowane podejmowanie decyzji będzie odbywało się na zasadach przetwarzania danych osobowych podanych przy utworzeniu Konta i uzupełnianiu danych w nim zawartych oraz danych dotyczących aktywności w Serwisach (zgodnie z Polityką prywatności serwisu internetowego Asseco Data Systems S.A. Polityka prywatności)
    i aktywności związanej z naszą komunikacją mailową z Panią/Panem, a efektem takiego przetwarzania będzie dopasowanie informacji marketingowych dotyczących naszych produktów i usług, które mogą Panią/Pana zainteresować.
Polityka prywatności