Aplikacje PHP publikowane są na serwery na wiele różnych sposobów (pisząc "publikacja" mam na myśli anglojęzyczne słowo "deploy"). Niektórzy używają w tym celu systemów kontroli wersji takich jak Subversion. Inni po prostu kopiują pliki przy pomocy FTP, SSH czy rsync. Jest tylko jeden problem ze wspomnianymi technikami. Wszystkie są podatne na błędy. Transfer plików to tylko niewielka część całego procesu publikacji, czy aktualizacji aplikacji PHP. Często potrzebna jest dodatkowa konfiguracja, czy uruchomienie skryptów migracyjnych.
Ludzie popełniają błędy
Im bardziej aplikacja jest skomplikowana, tym większe prawdopodobieństwo, że popełnimy błąd podczas aktualizacji. Zmiana konfiguracji, uruchomienie skryptów, budowanie modelu i plików wsdl, migracja bazy danych, czyszczenie cache. Jest wiele momentów, gdzie coś może pójść źle. A jeśli coś może pójść źle, to z pewnością pójdzie. Wiele razy miałem problemy przez to, że ktoś zmienił produkcyjną konfigurację i zatwierdził zmiany w repozytorium. Poza tym informacje takie jak hasła do bazy danych nie mogły być tam nawet przechowywane. Przeprowadzanie i sprawdzanie konfiguracji za każdym razem, gdy aktualizujemy aplikację nie należy do najprzyjemniejszych. Podobnie jest z innymi krokami procesu. Robiąc to ręcznie narażamy się na popełnienie błędu. Publikowanie aplikacji wymaga zbyt dużo myślenia, które można zrobić wcześniej.
Automatyzacja jest powtarzalna
Automatyzacja procesu czyni go powtarzalnym. Pozwala to właściwie go przetestować przed prawdziwą publikacją tyle tylko razy ile uważamy za stosowne. Potem nie musimy więcej myśleć o krokach, które trzeba wykonać. Uruchamiamy skrypty i czekamy aż skończą. Nie musimy myśleć o procesie. Aplikacje różnią się między sobą i każda może wymagać nieco innych czynności podczas aktualizacji. Panowanie nad tym i pamiętanie o różnicach jest tym bardziej uciążliwe im więcej mamy projektów.
Proces żyje z projektem
Automatyzacja procesu przenosi odpowiedzialność jego opracowania i utrzymania na zespół programistów. To właśnie oni najlepiej wiedzą co i kiedy ma dziać się podczas aktualizacji. Gdy trzeba wprowadzić zmiany w procesie, programiści są zmuszeni uaktualnić skrypty. Proces nie jest już tylko w ich głowach, ale żyje z projektem. Nawet po roku od zakończenia prac, gdy trzeba wypuścić poprawkę, a nikt już nie pamięta aplikacji, aktualizacja nie będzie problemem. Dodatkowo, nowi czlonkowie zespołu mogą nauczyć się procesu po prostu czytając skrypty.
Narzędzia do publikacji
Istnieją gotowe rozwiązania Open Source, które pozwolą Wam zautomatyzować proces aktualizacji projektów PHP:
- Apache Ant
- Capistrano
- Fredistrano
- Maven
- Phing Jak publikujecie swoje aplikacje? Czy Wasz proces jest już zautomatyzowany?