Dzisiejszy internet jest ociężały

Kilka faktów

Ponad 35%1 z około 1,860 miliarda stron2 dostępnych w internecie oparte jest o Wordpress, Joomle lub Drupala, co daje nam ok. 651 milionów stron internetowych działających na tych platformach. W dzisiejszych czasach naprawdę łatwo jest stworzyć swoją własną stronę. Zobacz tutorial trwający 90 minut na youtube3, poświęć kolejne 30 na jej konfigurację oraz treści i voila, strona gotowa. Bułka z masłem. No dobra, tylko gdzie jest haczyk?

Haczyk

Haczyk

Przez prawie dwa lata 2,8 milionów stron internetowych korzystających z Joomli posiadały lukę w zabezpieczeniach, która umożliwiała dostęp i modyfikację bazy SQL strony internetowej (tzw. SQL injection). Błąd został naprawiony przez Joomlę razem z wypuszczeniem wersji 3.4.54. 2 dni później na youtube został opublikowany tutorial5, jak krok po kroku wykorzystać lukę bezpieczeństwa w stronach które nie zaktualizowały Joomli do wersji 3.4.5. Co jeśli będąc właścicielem strony nie miałeś czasu żeby zareagować wystarczająco szybko?

Opierając się na badaniach i publikacji WP White Security6 około 73% najbardziej popularnych instalacji WordPressa w internecie może być zhakowana, a ich luki mogą być wykryte dzięki darmowym narzędziom dostępnym w internecie.

Drupal również znalazł swoje miejsce w tej niewdzięcznej historii luk bezpieczeństwa CMSów. Drupal poinformował swoich użytkowników w zawiadomieniu z dnia 29 października 2014 roku, że: “Powinniśmy założyć że każda strona internetowa oparta o Drupala 7 została zainfekowana, chyba że została zaktualizowana przed 23:00, dnia 15 października tj. 7 godzin po naszym ogłoszeniu”7Czyli w skrócie, jeśli jako admin strony nie zareagowałeś do 7 godzin po ogłoszeniu o aktualizacji, powinieneś założyć że Twoja strona została zainfekowana.

Biorąc pod uwagę wszystkie powyższe informacje powinieneś zawsze aktualizować swojego CMSa żeby spać spokojnie. Brzmi dosyć wyczerpująco, zwłaszcza jeśli używasz masy wtyczek. A prawdopodobnie używasz masy wtyczek.8

Na szczęście jeśli jesteś osobą która nie chce się przejmować wszystkimi tymi sprawami związanymi z aktualizacjami (jak ja i reszta zespołu Rzuć Okiem) dostępne są alternatywy. Obecnie jest rozwijanych kilkanaście różnych projektów Generatorów Stron Statycznych (z ang. Static Site Generators). Są to projekty open-source9 cieszące się coraz to większą popularnością.

Rozkwit projektów Generatorów Stron Statycznych

Rozkwit Stron Statycznych i ich generatorów

Generatory Stron Statycznych nie są żadną nowością w świecie tworzenia stron internetowych. To żadna nowinka technologiczna, na którą obecnie jest boom. Zyskują na popularności, ponieważ web deweloperzy widzą problemy związane ze skalowalnością i bezpieczeństwem Wordpressa i pokrewnych.

Pierwszy znany Generator Stron Statycznych nazywał się tclog i był napisany w języku Tcl/Tk. Pierwsza wersja została wypuszczona w 2003 roku. Możesz sobie sprawdzić ten projekt tutaj:

https://web.archive.org/web/20060819194024/http://tclog.sourceforge.jp/

Idea działania Generatora Stron Statycznych jest bardzo prosta: ‘wkładamy’ do niego dynamiczną treść, a otrzymujemy ‘surowe’ pliki HTML/CSS/Javascript. Następnie wrzucamy w ten sposób wygenerowane pliki na hosting.

Dzięki temu w porównaniu do strony dynamicznej opartej np. na WordPressie wykorzystujemy tylko ułamek mocy obliczeniowej serwera, co prowadzi nas do pierwszej z wielu zalet tego podejścia.


Koszt hostingu & skalowanie

Koszt hostingu i utrzymania strony internetowej

Kiedy budujesz stronę internetową za pomocą Generatora Stron Statycznych to zawsze korzystasz z mocy obliczeniowej urządzenia które wykorzystujesz na produkcji np. jeśli budujesz stronę lokalnie to korzystasz ze swojego komputera. Na co warto również zwrócić uwagę, wykorzystujesz moc obliczeniową tylko raz przy budowaniu strony. Wrzucając tak zbudowaną stronę na hosting, jedyne za co płacisz to miejsce które zajmują Twoje pliki. Jeśli nie posiadasz wiedzy technicznej, pozwól że krótko wytłumaczę:

Kiedy budujesz swoją stronę, a później wrzucasz wszystkie zbudowane pliki na hosting / serwer to praktycznie nic nie dzieje się po stronie serwera, gdy ktoś odwiedza Twoją stronę. Odwiedzający w tym przypadku ‘patrzy’ na surowe pliki które zostały zbudowane przez Generator Statycznych Stron.

Jak działa statyczna strona internetowa?

W przypadku stron dynamicznych opartych na WordPressie i pokrewnych rzeczy zaczynają się trochę bardziej komplikować. Pozwól że wytłumaczę w prostych słowach jak to wygląda od kuchni:

  1. Gość odwiedzający Twoją stronę powoduje ‘włączenie się’ skryptu.
  2. Skrypt po stronie serwera wysyła zapytania do baz danych żeby pobrać treści które mają być wyświetlone dla Gościa na stronie.
  3. Pobrana treść jest przekazywana do szablonów strony.
  4. Po przekazaniu treści jest budowany plik HTML który widzi Gość odwiedzający stronę.

Teraz pomnóż sobie ten proces przez setki lub tysiące osób które odwiedzają Twoją stronę. Serwer ma dużo pracy w tym przypadku, a zakładając że Twoją stronę internetową będzie odwiedzać coraz więcej osób - koszty utrzymania serwera także pójdą do góry.

Jak działa dynamiczna strona internetowa?

Myślę że wnioski z tego punktu są dosyć jasne: posiadając stronę statyczną jesteśmy lepiej przygotowani na obsługę dużej ilości osób odwiedzających naszą stronę. Jest to w dłuższej perspektywie również tańsze rozwiązanie ze względu na to, że serwer ma po prostu mniej pracy.


Wydajność

W wieku, w którym króluje niecierpliwość i nadmiar informacji każda milisekunda ładowania się Twojej strony jest równa pewnej ilości złotówek. Mówię to całkiem poważnie. Opierając się na badaniach www.hobo-web.co.uk10 stwierdzono że jeśli Twoja strona ładuje się dłużej niż 4 sekundy to spowoduje to duży spadek odwiedzalności. Co czwarta osoba porzuci chęć zapoznania się z treścią na Twojej stronie, co oczywiście bezpośrednio wpłynie na konwersję Twojej strony, a konwersja ma wpływ na Twój przychód. I tak koło się zamyka.

Jaki wpływ ma szybkość ładowania strony

Jeśli czytałeś mój krótki opis różnic pomiędzy działaniem stron statycznych i dynamicznych prawdopodobnie dojdziesz sam do konkluzji: strony statyczne zjadają na śniadanie strony dynamiczne pod względem szybkości działania i wydajności. Na potwierdzenie postawionej wyżej tezy przedstawiam poniżej przykłady z życia wzięte.

Pod koniec 2016 roku gettingthingstech.com zmienił swoją witrynę opartą na Wordpressie na Hugo (jeden z Generatorów Statycznych Stron). Jednym z powodów tej zmiany była chęć polepszenia szybkości ładowania. Po zmianie na Hugo porównali czasy.11

W tym przypadku skrócili czas, który serwer potrzebuje na dostarczenie plików do odwiedzającego stronę z ok. 2.5 sekundy do ok. 0.3 sekundy. Wykres przedstawiający różnicę poniżej:

Szybkość ładowania strony

W tym samym czasie zmienili też dostawcę hostingu, co mogło również wpłynąć na otrzymany wynik.


Drugi przykład porównania szybkości poniżej. Porównanie dotyczy czasów strony wygenerowanej przez Jekyll oraz strony opartej na Wordpressie:
https://bradonomics.com/jekyll-wordpress-speed/
Czas ładowania w przypadku strony statycznej jest lepszy o około 164%.


Bezpieczeństwo

Bezpieczeńśtwo w sieci

Jak już opisałem powyżej, w sekcji zatytułowanej “Haczyk”, z posiadaniem strony dynamicznej opartej na popularnych platformach takich jak Drupal, Joomla, Wordpress itp. wiąże się kilka zagrożeń. Trzeba zdawać sobie z nich sprawę i na bieżąco aktualizować wersję swojego CMSa.

Z drugiej strony, w przypadku statycznych stron internetowych, co może Ci grozić jeśli hostujesz tylko ‘surowe’ pliki HTML/CSS/JS? Nie posiadasz żadnej bazy danych do której ktoś mógłby się wkraść. Nie potrzebujesz też regularnie sprawdzać jej stanu i jej aktualizować jak to ma miejsce w przypadku popularnych CMSów.



Backup i kontrola wersji

Automatyczna kopia bezpieczeństwa & Kontrola Wersji

Gdy chcesz wykonać kopię bezpieczeństwa strony opartej na Wordpressie musisz, oczywiście, zainstalować kolejną wtyczkę12

Autorzy wtyczki “WordPress Backups” zalecają posiadać minimum 3 kopie strony na różnych nośnikach żeby dywersyfikować ryzyko związane z uszkodzeniem którejś z kopii.

Musisz również pamiętać o wykonywaniu tych kopii bezpieczeństwa regularnie. Jeśli Twoja baza danych jest wypełniona statystykami z masy wtyczek, które masz zainstalowane, to przy wykonywaniu kopii musisz wybrać tylko te tabele które Cię interesują. Trochę roboty musisz włożyć żeby spać spokojnie i nie martwić się o to że treść na Twojej stronie gdzieś przepadnie. Nawet jak już zrobisz kopię bezpieczeństwa, to nie masz kontroli nad każdą wersją Twojej strony, tak żeby ją szybko przywrócić w przypadku jakiegoś błędu.

Razem z wzrostem popularności serwisów opartych o Git’a13 (rozproszony systemy kontroli wersji) opisane powyżej kłopoty przestają istnieć. Za każdym razem kiedy wprowadzasz jakieś zmiany na swojej statycznej stronie i wysyłasz je na serwer, poprzednia wersja strony jest automatycznie back-up’owana. Żeby przywrócić poprzednią wersję swojej witryny potrzebujesz wpisać dosłownie jedną linijkę kodu do Twojego terminala lub (jeśli posiadasz headless CMS w swojej konfiguracji) kliknąć przycisk "publikuj". Jakby tego było mało, dzięki takim serwisom jak Netlify14 i BitBucket15 robisz to kompletnie za darmo.



Wady i zalety

Nie chciałem w tym poście dawać do zrozumienia, że posiadanie strony opartej o Wordpressa / Joomlę / Drupala i pokrewnych nie ma żadnych zalet. Oczywiście, że są zalety w tym podejściu. Jest o wiele łatwiej postawić wszystko tak żeby działało i jakoś wyglądało, ale z biegiem czasu pojawiać się będą czynności z utrzymaniem, które będą Ci sprawiać trudności jeśli nie jesteś technicznie obeznany w temacie.

Z drugiej strony, jeśli chcesz postawić stronę która jest statyczna to potrzebujesz kogoś kto zna się na rzeczy - co generuje inne wydatki. Moim zdaniem, jeśli podchodzisz do tematu poważnie, to potrzebujesz pomocy specjalisty nawet jak chcesz postawić stronę na Wordpressie, więc małą robi to w ogólnym rozrachunku różnicę.

Celem tego posta jest zwrócenie uwagi, że dostępne są o wiele lepsze opcje dla osób nietechnicznych, które nie chcą się przejmować zagwozdkami związanymi z aktualizacjami i innymi problemami natury technicznej prowadząc swój biznes. Prawda, niestety po części brutalna, jest taka że większość agencji i osób sugeruje Ci stronę opartą na Wordpressie, bo jest on najpopularniejszy, a nie najlepszy. Jest najczęściej najlepszą opcją dla tych osób które stronę robią, a nie tych które później się nią zajmują.



Przypisy

  1. https://w3techs.com/technologies/overview/content_management/all
  2. http://www.internetlivestats.com/total-number-of-websites/
  3. https://www.youtube.com/watch?v=2cbvZf1jIJM
  4. https://www.joomla.org/announcements/release-news/5634-joomla-3-4-5-released.html
  5. https://www.youtube.com/watch?v=Ai3MmwQ7yIE
  6. https://www.wpwhitesecurity.com/wordpress-security-news-updates/statistics-70-percent-wordpress-installations-vulnerable/
  7. https://www.drupal.org/forum/newsletters/security-public-service-announcements/2014-10-29/drupal-core-highly-critical
  8. https://torquemag.io/2015/09/32-must-free-wordpress-plugins/
  9. https://www.staticgen.com/
  10. https://www.hobo-web.co.uk/your-website-design-should-load-in-4-seconds/
  11. https://gettingthingstech.com/hugo-vs.-wordpress-page-load-speed-comparison-hugo-leaves-wordpress-in-its-dust/
  12. https://codex.wordpress.org/WordPress_Backups
  13. https://pl.wikipedia.org/wiki/Git_(oprogramowanie)
  14. https://www.netlify.com/features/
  15. http://bitbucket.com/

Dobrze zacząć od kawy.

Umów się na spotkanie lub po prostu napisz.

Napisz na:

lub zadzwoń:

coffee