Hosting stron statycznych – który wybrać?

Jeśli tworzysz witrynę, która jest aktualizowana relatywnie rzadko lub po prostu nie wymaga niczego co wykracza poza możliwości usług zewnętrznych (komentarze, prosta wyszukiwarka czy formularze) to zawsze polecam rozważenie stworzenia strony statycznej zamiast martwienia się o to czy Twoja strona jest bezpieczna i dostatecznie szybka.

Bardziej opisowa odpowiedź na pytanie jakie rozwiązanie wybrać znajduje się w mojej prezentacji „Statycznie czy dynamicznie?„.

Stronom statycznym nie da się odmówić tego, że można po prostu o nich zapomnieć 😉 O dziwo taka strona może też być bardzo tania w utrzymaniu, bo wiele firm oferuje często darmowy hosting dla tego typu stron – wtedy jedynym naszym kosztem jest własna domena (o ile takowej potrzebujemy).

W tym wpisie chciałbym podzielić się swoimi wrażeniami na temat czterech usług pozwalających trzymać w sieci strony statyczne: Github Pages, Amazon S3, Netlify i Google Cloud.

Musiałem je dosyć dogłębnie przeanalizować przygotowując wsparcie dla nich w aplikacji Publii, którą od dłuższego czasu współtworzę.

To co łączy wspomniane usługi to fakt, że w mniejszym bądź większym stopniu są darmowe. Od razu uprzedzam – nie jest to wpis sponsorowany a prezentowane opinie są subiektywne, bazujące na moich doświadczeniach – jeżeli masz jakieś własne warto wspomnienia doświadczenia to zapraszam do dyskusji w komentarzach 🙂

1 ) Github Pages

To mój lider w kwestii hostingu stron statycznych (choć drugi na liście Netlify depcze mu po piętach) – całkowicie za darmo możemy trzymać na Github Pages własną stronę statyczną. Do tego jest to niesamowicie szybki hosting, ponieważ korzysta z sieci bardzo szybkich CDN-ów Fastly. Istnieje możliwość podpięcia własnej domeny – wystarczy w pliku o nazwie CNAME podać nazwę domeny i skierować ją na DNS-y Github Pages. Dla tych, którym nie przeszkadza strona w subdomenie należącej do github.io istnieje możliwość stworzenia bezpośredniej subdomeny postaci NAZWA_UŻYTKOWNIKA.github.io – wystarczy stworzyć repozytorium o takiej właśnie nazwie np. dziudek.github.io. Całość uzupełnia API, które pozwala dodać wsparcie Github Pages w zasadzie dla dowolnej aplikacji.

Żeby nie było tak bardzo różowo to teraz garść wad:

a) Własne domeny nie mogą korzystać z SSL – przy stronach statycznych nie jest to może wielki problem, aczkolwiek przeglądarki takie jak Firefox potrafią wskazać stronę jako niezabezpieczoną gdy mamy po HTTP wczytywane treści korzystające z HTTPS (np. komentarze Disqus),

b) API ma limit 5000 zapytań na godzinę i nie można go zwiększyć, zatem przy bardzo dużych stronach może pojawić się problem z przekroczeniem limitów,

c) Implementacja deploymentu we własnej aplikacji wymaga dość dogłębnego zrozumienia Git-a, nie ufajcie rozwiązaniom znalezionym w sieci – wiele z nich zwyczajnie marnuje zapytania do API 😉

W skrócie – Github Pages to najlepsze rozwiązanie gdy chcemy móc utrzymać stronę w sieci za darmo – dostaniemy sensowną domenę (z SSL), jednak gdy nasze oczekiwania względem hostingu wzrosną niechybnie czeka nas przeprowadzka.

2 ) Netlify

Można powiedzieć, że to hosting skrojony pod strony statyczne – posiada webhooki, możliwość uruchamiania własnych skryptów renderujących, obsługę formularzy, ochronę hasłem, integrację z Git, automatyczny deployment i wiele innych bardzo użytecznych funkcji dla tego typu stron.

W wersji darmowej otrzymujemy hosting, który nie odbiega możliwościami od Github Pages – główny zarzut to dużo mniej zgrabne domeny dostępne za darmo.

Warto zwrócić uwagę, że Netlify w wersji Pro jest dostępny dla projektów Open Source. O tym jak można fajnie wykorzystać możliwości tego hostingu wraz z Githubem i CMS-em Contentful możecie przeczytać tutaj.

Warto pochwalić Netlify za bardzo prostą integrację deploymentu z własną aplikacją – w porównaniu do implementacji Github Pages to była luźna wieczorna rozrywka 😉

W skrócie – Netlify to hosting stron statycznych dla wymagających – zaawansowane możliwości skrojone pod ten typ stron zdecydowanie przemawiają za tą usługą jeśli zależy nam na bardziej poważnych rozwiązaniach.

3 ) Amazon S3

Pora na grubszy kaliber – S3 od Amazona. Posiada darmowe limity po których przekroczeniu naliczane są opłaty. To co w rozwiązaniach chmurowych takich jak S3 zawsze mnie trochę odstraszało to ryzyko niespodziewanych wydatków (zależnych od popularności strony) – w porównaniu do Github Pages czy Netlify to zdecydowany minus.

Pewną wadą jest też interfejs – dosyć toporny i mało intuicyjny (głównie ze względu na mnogość usług).

Za to zaskoczyła mnie łatwość integracji procesu deploymentu z Publii – wywołujemy po prostu metodę synchronizacji katalogu a AWS SDK robi większość pracy za nas 🙂

Dodatkowo S3 ma oczywiście sporo dodatkowych opcji – możliwość określania reguł CORS, wersjonowanie, kopie zapasowe, zarządzanie cyklem życia obiektów i wiele innych cudów, których prawdpodobnie w wypadku strony statycznej nie będziemy potrzebować 😉

W skrócie – Amazon S3 to moim zdaniem rozwiązanie raczej dla fanów tej marki, jako główny powód skłaniający mnie do użycia właśnie tego rozwiązania wskazałbym… przyzwyczajenie, ewentualnie dostępność bardziej zaawansowanych funkcji, których nie ma Netlify czy Github Pages, ale to raczej skrajne przypadki.

4 ) Google Cloud

Na koniec usługa, która jest w tym zestawieniu raczej z kronikarskiego obowiązku. Google Cloud osobiście mnie zawiódł dość mocno – zwłaszcza na tle wspomnianych wcześniej usług. Niby udostępnili darmowe limity i możliwość skorzystania z usług o wartości $300 za darmo przez pierwszy rok, ale jeśli mieszkacie na terenie Unii Europejskiej to niestety musicie mieć firmę by w ogóle uruchomić tę darmową usługę (podejrzewam, że ma to związek z tym co UE wymyśliła w kwestii podatku VAT).

Jeśli chodzi o sam interfejs to mimo, że wizualnie Material Design daje radę to ogólnie praca z nim jest drogą przez mękę. Żeby stworzyć prostą stronę statyczną generowaną przez zewnętrzną aplikację trzeba włączyć 2 usługi: Storage i Storage JSON API oraz znaleźć magiczne miejsce, które pozwoli nam przydzielić dostępy umożliwiające deployment z zewnętrznej aplikacji. Do tego zapomnijcie o darmowych domenach – wszystkie zasoby, które nie mają nazwy będącej domeną nie są traktowane w usłudze Storage Google Cloud jako strony WWW (a przez to nie mamy dostępnych kilku kluczowych opcji np. przekierowań katalogów na pliki index.html), a żeby stworzyć zasób nazwany jak domena też trzeba się trochę namęczyć i najpierw dodać domenę do Search Console (najprościej jest dodać dwa rekordy – CNAME i TXT, ale dojście do treści tego drugiego wcale nie jest takie intuicyjne).

Całości dopełnia dość uciążliwa integracja z zewnętrznymi aplikacjami – synchronizacja niewiele różni się w działaniu od zwykłego FTP(S), co trochę boli gdy przyzwyczaimy się do wygód oferowanych przez Netlify czy Amazon S3.

W skrócie – Google Cloud ma niesamowite możliwości, ale akurat strony statycznej bym na nim nie trzymał, powyżej są wspomniane co najmniej 3 dużo lepsze i bardziej dostosowane do tego celu usługi.

Podsumowanie

Opisywane usługi dobrałem przede wszystkim na bazie dwóch kryteriów – popularności oraz możliwości darmowego przechowywania strony statycznej na ich serwerach. Jeżeli znasz inne usługi tego typu – zachęcam do dyskusji w komentarzach – chętnie dodaję w Publii nowe metody deploymentu 😉 Osobiście uważam, że wybór takiego hostingu raczej rozegra się pomiędzy Github Pages a Netlify – w mojej opinii te usługi znacząco odstają od pozostałych dwóch opisywanych rozwiązań chmurowych.