Hosting plików statycznych w chmurze

Pliki statyczne – czyli jakie? które?

Większość serwisów internetowych, które odwiedzamy zbudowane są zarówno z treści dynamicznych (zazwyczaj generowanych „na żądanie”), ale także z plików statycznych – czyli takich, których treść nie zmienia się.

Do plików statycznych zaliczamy więc nie tylko obrazki, muzykę, czy video, ale także archiwa, różnego rodzaju dokumenty, a ponadto biblioteki JavaScript czy style CSS. Wszystkie te pliki, które bez względu na żądanie (bez względu na użytkownika) wysyłane są przez serwer w identycznej formie możemy nazwać plikami statycznymi.

Rozwiązania chmurowe pod hosting plików statycznych

Jeśli odpowiednio zadbamy o pliki statyczne w naszym serwisie może to wpłynąć na jego pozytywny odbiór przez użytkowników. W przypadku większych portali czy sklepów obsługiwanie plików statycznych przez te same serwery, które generują treści dynamiczne nie jest najlepszym rozwiązaniem.

Oczywiście serwery WWW można optymalizować i wyciągnąć z nich na prawdę wiele stosując różne rozwiązania i konfiguracje, ale powszechnie stosowaną praktyką w środowiskach typu cloud jest przerzucenie hostingu plików statycznych do osobnych, wyspecjalizowanych usług obiektowego przechowywania danych.

Najczęściej wybieranymi hostingami plików statycznych są:

Każda z powyższych usług ma swoje unikalne cechy, często przeważające na korzyść wyboru danego dostawcy. Do najważniejszych z nich należeć będą:

  • brak limitu na przestrzeń
  • brak limitu na ilość plików
  • rozliczanie za wykorzystaną przestrzeń oraz transfer
  • możliwość replikacji plików lub tworzenia kopii zapasowych
  • zróżnicowane czasy dostępu do plików w zależności od rodzaju ich zapisu (cold, hot, nearline itp.)
  • szyfrowanie linków i ich ograniczanie czasowe

Jednak ich wspólną cechą jest koszt, który ostatecznie jest zazwyczaj większy, niż nam się początkowo wydawało.

Drogo? Jak zoptymalizować koszt hostingu plików statycznych?

Od czego zależy koszt hostingu plików statycznych w chmurze? Podstawowymi składnikami są oczywiście generowany transfer, ale także przestrzeń, jaką zajmują. Ich ilość czy częstość pobierania nie ma zazwyczaj większego znaczenia.

Zmniejszyć koszt hostingu możemy poprzez:

  • wpływając na ilość pobrań danych plików statycznych – a więc na generowany przez nie transfer. W tym celu mozemy na przykład ustawić odpowiednie nagłówki sterujące cache’m przeglądarki (expires, cache-control itp.). Dobrze ustawiony cache przeglądarki pozwoli na ponowne wykorzystanie przez przeglądarkę już raz pobranego wcześniej pliku przy okazji poprzedniej wizyty na stronie. Rozwiązanie to sprawdza się najlepiej w przypadku drobnych grafik w layout’cie serwisu lub plików js/css
  • wpływając na transfer poprzez pakowanie plików – odpowiednio dobrane formaty plików graficznych, ich jakość oraz rozmiar, włączona kompresja gzip itp.

Jednak to tylko wierzchołek góry lodowej. Prawdziwą rewolucją jest tutaj wykorzystanie systemów CDN, które nie tylko geograficznie przybliżają użytkownikom zasoby naszego serwisu (bliżej użytkownika = szybszy dostęp), ale także są w stanie je przechowywać (edge cache) znacząco wpływając na transfer generowany pomiędzy serwerem / hostingiem plików, a użytkownikiem końcowym.

Najpopularniejsze tego typu rozwiązaniem jest darmowa obsługa domeny świadczona przez CloudFlare. W bezpłatnym planie otrzymujemy dostęp do CDN, automatyczną minimalizację plików js/css (minify) oraz poprawny certyfikat SSL dla domeny oraz jej subdomen pierwszego rzędu (np. example.com, www.example.com czy test.example.com) i wiele wiele innych.

Obsługiwaną przez CloudFlare domenę możemy tak skonfigurować, aby pliki statyczne były pobierane np. bezpośrednio z bucketu S3. Co prawda dostęp do nich w niektórych przypadkach może być wydłużony (dodatkowy serwer pośredniczący), ale przy odpowiednich ustawieniach cache dostęp ten może dotyczyć tylko pierwszego pobrania pliku przez pierwszego użytkownika – po zapisaniu go w edge cache na CDN kolejne pobrania nie będą odwoływać się już do podstawowego hostingu.

CloudFlare R2 – czy to kolejna rewolucja?

Cloudflare niedawno ogłosił nową usługę CloudFlare R2, której podstawowym celem jest zmniejszenie kosztów związanych z hostingiem statycznym i przejęcie części rynku zdominowane przez Amazon AWS S3. W tym celu nowa usługa będzie w pełni kompatybilna z API oferowanym przez AWS do zarządzania swoimi plikami.

Taka oferta z pewnością trafi do szerokiego grona odbiorców, gdyż Amazon S3, choć potężny i głęboko osadzony w pozostałej części ekosystemu AWS, jest po prostu drogi w użyciu.

Cloudflare, jako partner Bandwidth Alliance – czyli grupy dostawców usług sieciowych zobowiązał się do znacznego obniżenia cen transferu danych. AWS nie zdecydował się jednak dołączyć do tej grupy. Nie dokonał również żadnych znaczących obniżek cen dla S3 w przeciągu ostatnich 10 lat, gdzie ceny hurtowe transferu danych spadały średnio o 23% rocznie. W tym czasie przepustowość hurtowa danych staniała łącznie o około 93%, podczas gdy opłaty „na wyjściu” (czyli transfer do końcowego użytkownika) w przypadku AWS w tym samym okresie spadł zaledwie o około 25%.

R2 jest wciąż w fazie rozwoju. Oczekuje się, że będzie kosztować 0,015 USD za GB miesięcznie, bez dodatkowej opłaty za transfer jak to ma miejsce w przypadku pozostałych rozwiązań tego typu. Jednak dodając do tego już teraz dostępny Cloudflare Images (darmowy resize zdjęć do 20 wariantów) oferta CloudFlare staje się na prawdę kusząca i może wpłynąć nie tylko na sam rynek pod względem cen transferu czy hostingu, ale także na trendy tworzenia większych stron internetowych, które będą projektowane w sposób umożliwiający wykorzystanie tego typu rozwiązań.