Deployment – jak je robimy?

Zależnie od inftastruktury aplikacji, jej architektury zawsze planujemy deplyment tak aby był jak najmniej uciążliwy dla użytkownika końcowego systemu. Często nasze stsytemy aktualizujemy podczas nocnych okienek serwisowych. I tak jedna z aplikacji, która ma 20, a w sezonie 30-40 req/sec jest aktualizowana głównie poza sezonem. W trakcie szczytu, gdzie dziennie jest kilkadziesiąt tysięcy wizyt przeprowadzamy jedynie krytyczne poprawki – jeśli są niezbędne do prawidłowego oraz stabilnego działania systemu.

Poza sezonem aplikacja jest aktualizowana we wtorki oraz czwartki, w godzinach 16-18. Zmiany są przygotowywane oraz testowane we wcześniejszym tygodniu. Jeśli trwa sezon, utrzymuje się spory ruch, deployment przeprowadzamy jedynie w nocnych oknach serwisowych – które zaczyna się od 1 w nocy, a kończy o 3 rano.

Każde z wdrożeń niezależnie od pory jest możliwe do cofnięcia w krótkim czasie. Jeśli aktualizujemy większa aplikacje często przepinamy ruch na czas wdrożenia na zapasowe środowisko produkcyjne (które jest w stanie przejęć 100% ruchu w razie problemów z głównym środowiskiem) tak aby zminimalizować ryzyko down time (metoda Blue-Green).

 

PHP7 ma potencjał !

Niedawno mieliśmy okazję migrować aplikację pracującą pod PHP w wersji 5.6 na PHP 7. Jest to aplikacja średnia (dostaje max 10 req na sekundę) i UU na poziomie 10k / mc.
Z uwagi na to iż warstwa prezentacji obsługiwana była w starszej wersji Smarty, które nie pracuje pod PHP7 na początek potrzeba było przepisać wrapper Smarty dla tej aplikacji. Na szczęście obyło się bez większych problemów (Smarty 3.1.21 niewiele różni się od wersji 3.1.31 co można sprawdzić https://github.com/smarty-php/smarty/blob/master/NEW_FEATURES.txt). Przy okazji refaktoringu wrappera został on lekko zoptymalizowany.
Po pomyślnych testach nastała pora na wdrożenie zmian dla środowiska produkcyjnego.
Cały etap obył się bez większych problemów, a efekt wdrożonych zmian był widoczny od razu na wykresach.

Widać dużą różnicę pomiędzy czasem generowania strony. Pragniemy podkreślić iż samej w aplikacji nie zostało zmienione nic prócz wrappera dla Smarty. Dalsze prace optymalizacyjne pozwolą na kolejne redukcje czasu generowania strony.