[ Pobierz całość w formacie PDF ]
czając instrukcje dotyczące historii łatek na końcu plików z łatkami, mamy pewność, że będą one
zastosowane tylko wtedy, kiedy pozostałe instrukcje zostaną wykonane pomyślnie.
W powyższym przykładzie wykonywana jest instrukcja ALTER TABLE. Dzięki umieszczeniu kodu
SQL w plikach łatek i uruchomieniu tych ostatnich na roboczej bazie danych uzyskuje się zapis
wszystkich dokonanych zmian. Jest to bardzo ważne, aby móc potem replikować te zmiany na
innych platformach zarówno roboczych, jak i produkcyjnych.
Poleć ksi k
Kup ksi k
KONTROLA JAKO CI 259
Jednym z najważniejszych aspektów zarządzania modyfikacjami bazy danych jest szansa cofnięcia
operacji powinno się mieć możliwość zarówno cofania zmian, jak i ich dokonywania. Trudność
tę można w prosty sposób rozwiązać, pisząc dla każdej zmiany po dwie instrukcje SQL jedną
do wykonania zmian, drugą do ich cofania. Niestety, nie zawsze jest to możliwe, ponieważ np. in-
strukcje usuwania kolumn i ogólnie operacje powodujące usunięcie czegoś nie mogą być cofnięte.
Istnieje wiele narzędzi wspomagających zarządzanie zmianami baz danych. Można je znalezć za-
równo w niektórych frameworkach, jak i w narzędziach wdrożeniowych. Niezależnie jednak od
tego, na co się zdecydujesz, pamiętaj, że system jest tak dobry jak dostarczane do niego informa-
cje jego działanie w pełni zależy od tego, czy zostaną mu przekazane pełne i poprawne zestawy
łatek wraz z poprawnymi danymi dotyczącymi historii zmian.
Automatyzacja wdra ania i plik konfiguracyjny Phing
Kilka razy wspomnieliśmy o automatyzacji procesu wdrażania. Teraz opiszemy dokładnie, jak to
zrobić. Rozwiązanie tego typu trzeba zawsze dokładnie przemyśleć i zaplanować, ale gdy się już je
skonfiguruje, pozwala ono zaoszczędzić wiele czasu i uniknąć niejednego błędu. Zastanów się nad
następującymi kwestiami:
Ile czasu zajmuje wdrażanie bazy kodu?
Jak często popełniasz przy tym błędy?
Jak często wdrażasz kod?
Jak często byś to robił, gdyby to trwało krótko i nie było kłopotliwe?
Większość zespołów programistycznych zbyt nisko szacuje ilość czasu, jaki spędza na wdrażaniu
(dla zabawy oszacuj, ile czasu zajmuje to Tobie, a następnie zmierz rzeczywisty czas podczas naj-
bliższego wdrażania), i nie zdaje sobie sprawy ze szkód, jakie niosą błędy popełnione podczas wy-
konywania procesów, w których kilka czynności musi zostać wykonanych w ściśle określonym
porządku. Zastosowanie wypróbowanego i przetestowanego procesu wdrażania aplikacji pozwala
pozbyć się wielu potencjalnych problemów, a co więcej, jako że wdrażanie to już faza utrzymania
programu, umożliwia zmniejszenie kosztów.
Najprostszy system automatycznego wdrażania składa się z szeregu skryptów, które wykonują
podstawowe zadania. Typowy skrypt może działać według następującego schematu:
1. Oznakowanie i eksport kodu z systemu kontroli wersji.
2. Kompresja kodu do pliku TAR, przesłanie go na serwer i dekompresja.
3. Zastosowanie łatek do bazy danych, jeśli jest taka potrzeba.
4. Utworzenie łączy do elementów projektu znajdujących się poza katalogiem głównym, np.
katalogów do odbierania plików wysyłanych przez użytkowników czy do plików konfigu-
racyjnych.
5. Przestawienie dowiązania symbolicznego na nową bazę kodu.
6. Opróżnienie buforów i ponowne uruchomienie serwerów.
7. Wizyta w barze i wypicie piwa.
Poleć ksi k
Kup ksi k
260 Mistrz PHP. Pisz nowoczesny kod
Sposobów realizacji tego rozwiązania jest wiele: od własnoręcznie napisanych skryptów powłoki,
po płatne oprogramowanie pisane na zamówienie. W ramach przykładu przedstawimy Phing15,
narzędzie napisane w PHP przeznaczone do pracy z projektami w tym języku. Program ten ma
wiele wtyczek usprawniających jego działanie oraz zawiera własne narzędzie do zarządzania bazą
danych, o nazwie dbdeploy.
Plik konfiguracyjny Phing ma format XML i domyślnie nosi nazwę build.xml. Należy w nim wpi-
sać nazwę projektu i zdefiniować serię zadań tego projektu. Można także zaznaczyć, które z nich
mają być wykonywane domyślnie. Na poniższym listingu znajduje się zawartość przykładowego
pliku konfiguracyjnego z dokumentacji Phing:
Kod ten jest bardzo przejrzysty, mimo że napisany w formacie XML. Najpierw tworzy się element
project i ustawia w nim domyślny cel. Następnie definiuje się cele dla projektów: prepare, build
oraz dist. Domyślny cel to dist i jeśli zależy on od jakichś innych celów, to najpierw zostaną
wykonane właśnie one.
15
http://phing.info/.
Poleć ksi k
Kup ksi k
KONTROLA JAKO CI 261
Przechowywanie skryptów wdro enia w kodzie
Dla ka dego projektu musi by utworzony osobny plik build.xml, je li jednak tworzysz podobne serwisy,
[ Pobierz całość w formacie PDF ]