Zdjęcie główne wpis na bloga

Boisz się, że przed wdrożeniem coś pójdzie nie tak?

Wprowadzanie zmian na stronie jest momentem, kiedy serwis klienta jest najbardziej narażony na powstanie błędów. Wiele programistycznych żartów dotyczy wdrożeń robionych przed ważnymi terminami. W Droptica opracowaliśmy system, który sprawia, że nie boimy się wdrożeń - nawet w piątki ;)

Problem z wdrażaniem zmian

Dlaczego wdrażanie zmian na funkcjonującej stronie sprawia, że staje się ona wrażliwsza na powstanie błędów? 

Przypuśćmy, że mamy gotową, działającą stronę internetową obsługującą setki klientów dziennie. Wszystkie jej elementy zostały dokładnie przetestowane i współgrają ze sobą. Wyłączenie strony, aby spokojnie przetestować nowe funkcje, nie wchodzi w grę, gdyż dla właściciela serwisu wiązałoby się to ze stratami. Tymczasem dokładając element, którego wcześniej w systemie nie było, ryzykujemy, że jego działanie będzie blokować istniejące części. Sytuacja może być groźna, zwłaszcza gdy błąd nie zostanie w porę wyłapany, ponieważ wdrożenie odbywało się przed weekendem albo świętami. O takich przypadkach krążą w internecie legendy - i niezliczona ilość memów. 

Robiąc wdrożenie, musimy mieć pewność, że wszystko zostało sprawdzone i przetestowane, a na wersji “live” serwisu nie wystąpią problemy. Przypomina to nieco próbę doczepiania wagonów do pędzącego pociągu… Jak więc to możliwe, że nie psując ich, zespół utrzymania i wsparcia Drupala w Droptica regularnie dokłada nowe funkcje do istniejących serwisów?

Testowanie strony

CodeCeption

CodeCeption to popularny framework pozwalający na tworzenie automatycznych testów oprogramowania. W CodeCeption tworzyć można m.in. następujące testy:

  • jednostkowe
  • akceptacji
  • funkcjonalne

Gruntowne przetestowanie - nieraz wielokrotne -  każdego fragmentu kodu przed wypchnięciem go na wersję produkcyjną strony pozwala na wychwycenie błędów bardzo wcześnie i uniknięcie opóźnień. Zespół nie traci bowiem czasu na ręczne testowanie każdego fragmentu kodu i może się skupić na dostarczaniu następnych funkcjonalności, o które poprosi klient. 

VisualCeption

VisualCeption to narzędzie, którego używamy do testowania graficznego wszystkich stron internetowych. Podczas pierwszego uruchomienia program tworzy zrzut ekranu, który będzie stanowił podstawę do porównań. Kolejne testy tworzą serię zrzutów porównywanych z oryginałem. Na ich podstawie uzyskujemy informację o procentowej ilości zmian w stosunku do oryginału. Wiemy na przykład, czy obrazek po zmianach zachował właściwe proporcje albo czcionka - wysokość i krój. Ma to znaczenie zwłaszcza w przypadku stron, gdzie wygląd to sprawa priorytetowa.

Z CodeCeption i VisualCeption mamy 100% pewności, że nic na Twojej stronie nie popsuliśmy :) Więcej o możliwościach tych użytecznych narzędzi piszemy w podlinkowanych wpisach.

System kontroli wersji i trzymanie zmian w kodzie

Nowe funkcje, ulepszanie starych bądź usuwanie niepotrzebnych lub błędnych elementów to naturalne części cyklu życia każdej strony internetowej. Strony zmieniają się i ewoluują. Ich kod także musi więc zmieniać. Ważne, żeby móc te zmiany śledzić i w razie problemów szybko przywrócić poprawną wersję w przypadku wychwycenia błędów. 

Przywracanie pełnej wersji strony z kopii zapasowej, podczas gdy poprawek wymaga tylko mały element, może być żmudne i czasochłonne. Zamiast tego, korzystamy z systemu kontroli wersji (GIT) i wszystkie zmiany trzymamy w odpowiednich gałęziach (“branchach”) kodu. Ma to szereg zalet:

  • Pozwala na śledzenie zmian we wszystkich wersjach kodu.
  • Pozwala pracować nad stroną wielu programistom niezależnie od siebie.
  • Stanowi łatwą do modyfikowania kopię zapasową strony.
  • Trzyma cały kod w jednym miejscu - nie ma dodatkowych skryptów wysyłanych mailem czy w inny sposób.
  • Pozwala na szybkie budowanie wersji testowych.

One-click deployment

Zautomatyzowanie procesu wytwarzania i testowania oprogramowania pozwoliło nam również na automatyzację wdrażania kodu na wersję produkcyjną strony. Niekiedy wywołanie wdrożenia nowych zmian na produkcję odbywa się dosłownie poprzez "naciśnięcie jednego guzika" czy wywołanie jednego skryptu. Zespół może w ten sposób wysyłać więcej drobnych zmian, nawet codziennie. Jeśli zdarzy się, że wkradnie się jakiś błąd, zamiast przeglądać wiele linijek kodu w poszukiwaniu “winowajcy”, dużo łatwiej jest namierzyć przyczynę problemu. Klient dostanie funkcję szybciej i będzie mial pewność, że współdziała poprawnie z resztą serwisu. 

Podsumowanie

Wypracowany przez nas proces nie tylko sprawia, że wprowadzanie zmian jest bezpieczne, a strona pozostaje stabilna nawet jeśli zmienia się często. Właściwe podejście pozwala też na szybkie wprowadzanie zmian, a to z kolei oszczędność czasu i pieniędzy naszych klientów. W konsekwencji zarówno klient, jak i zespół mają więcej satysfakcji ze współpracy i rozwijania projektu. Strona klienta może się zmieniać wraz z potrzebami jego biznesu, z każdym wdrożeniem odnosząc sukces.

W ramach wsparcia dla Drupala utrzymujemy istniejące strony internetowe i rozbudowujemy je o nowe funkcjonalności