7 kwietnia 2018
Aktualizacja: 6 czerwca 2020

Co to jest CDN? Czy warto włączyć?

Kategoria: Hosting
Tagi: dla klientów, dla profesjonalistów,
Autor: Paweł Mansfeld

Co to jest CDN? Czy warto włączyć?

CDN (ang. Content Delivery Network) jest to usługa polegająca na instalowaniu fragmentów strony internetowej w wielu centrach danych (sieć odwrotnych serwerów pośredniczących tzw. Reverse Proxy). W efekcie, strona działa zawsze szybciej, dysponujemy dużo większą przepustowością łączy ale co najważniejsze, lokalizacja serwera (czyli to gdzie jest przechowywana strona internetowa) przestaje mieć jakiekolwiek przełożenie na dodatkowe opóźnienia wynikające z odległości jaką musi pokonać połączenie internetowe.

Najlepiej pokazać to wszystko na przykładzie

Załóżmy, że mamy stronę internetową zainstalowaną na polskim hostingu czyli najczęściej w polskiej lokalizacji. Klienci z polski łączą się po stosunkowo krótkiej drodze co nie powoduje znaczących opóźnień w ładowaniu się zdjęć i plików takich jak JavaScript i CSS. Mimo to, wszystkie zasoby na stronie są ściągane po kolei tzn, jednocześnie można ściągać kilka zasobów na raz z jednego hostingu – to standardowe ograniczenie.

Przypadek pierwszy – klient łączący się z polskiej miejscowości, “lekka” i mało popularna strona zainstalowana w Polsce (np. w datacenter w Warszawie).

CDN co to jest?

Wszyscy są zadowoleni. Strona działa szybko bez opóźnień, hosting nie jest obciążony zapytaniami. Problem może się pojawić jak strona zyska na popularności – ale do tego jeszcze wrócimy.

Przypadek drugi – klienci za granicą łączą się do strony postawionej w Polsce.

Klienci z sąsiednich krajów czują opóźnienie ale mogą w miarę skutecznie poruszać się po stronie, natomiast w bardziej odległych zakątkach świata na wyświetlenie strony czekamy kilka sekund.

CDN rozwiązuje ten problem w taki oto sposób

Klienci łączą się do strony za pomocą węzłów, które są najbliżej nich. W efekcie strona działa szybko w każdym miejscu na ziemi.

CDN przyspiesza stronę jeszcze w inny sposób

Spostrzegawcze osoby zauważą jeszcze jedną korzyść. Jest nią oczywiście odciążenie głównego serwera. Rozlokowanie zasobów “cięższej” strony internetowej pomiędzy kilkoma węzłami powoduje, że ściąga się ona szybciej. Wszystko za sprawą pewnego ograniczenia, które powoduje, że z jednej lokalizacji (serwera) nasza przeglądarka może ściągać na raz tylko kilka plików.

Porównanie ładowania plików przed wdrożeniem CDN i po wdrożeniu (wykres z Pingdom Tester) – żółty kolor to oczekiwanie. Widać, że tylko kilka plików ściąga się na raz a następne czekają na swoją kolej. Po prawej, przy włączonym CDN widać, że pliki nie czekają na swoją kolej i ściągają się niemal jednocześnie:

CDN - przed i po

Umiejętne wykorzystanie CDN umożliwia rozdzielenie ruchu tak, aby zasoby były ładowane z CDN a żądania HTTP i logika była obsługiwana tak jak do tej pory przez centralny serwer. W wyniku czego strona albo sklep ściąga się o wiele szybciej a najdroższy element infrastruktury – serwer generujący front-end (obsługujący żądania HTTP) jest odciążany z serwowania statycznych zawartości.

Jeżeli ruch jest duży obsługa zapytania klienta, który łączy się z Wrocławia może być możliwa za pomocą dwóch hostingów np. w Warszawie i we Frankfurcie.

Tak wygląda rozmieszczenie węzłów, którymi dysponuje znany dostawca Cloudflare:

a tutaj rozlokowanie punktów AWS CloudFront:

i jeszcze mapka dla KeyCDN:

oraz MaxCDN/StackPath:

Czołowi dostawcy CDN

  • Amazon AWS (usługa: CloudFront)
  • Google Cloud
  • MaxCDN
  • proinityLLC (produkt: keycdn)
  • Imperva Incapsula
  • Verizon (usługa EdgeCast CDN)
  • Akamai CDN
  • CloudFlare – przy pomocy reverse proxy

Jak wiadomo, szybkość to dobre pozycje w wyszukiwarce

Na tym blogu piszę o tym już chyba dziesiąty raz. Google bierze pod uwagę jak szybko działa strona, dlatego wykorzystywanie takiej infrastruktury przekłada się na lepsze pozycje strony w wyszukiwarce. Można o tym przeczytać więcej w artykułach Czynniki decydujące o pozycji w wyszukiwarce oraz przyspieszanie stron www.

CDN to także bezpieczeństwo

CDN chroni stronę na tej zasadzie, że nie dopuszcza do zalania serwera nienaturalnymi zapytaniami z zewnątrz. Uodparnia stronę na najpopularniejszy i najłatwiejszy do przeprowadzenia atak typu DoS i DDoS, który po prostu blokuje serwer wykorzystując wszystkie dostępne zasoby jego łącza internetowego.

Zalety stosowania CDN

Podsumujmy zatem wszystkie wymienione w tym artykule zalety stosowania CDN:

  • Eliminacja opóźnień w działaniu strony za pomocą skrócenie drogi połączenia
  • Odciążenie głównego hostingu za sprawą dywersyfikacji – większa stabilność i dostępność usług (pierwsze etapy skalowania hostingu aplikacji)
  • Kolejne przyspieszenie wynikającej z eliminacji kolejki pobierania za pomocą rozlokowania plików
  • Ogromnie pozytywny wpływ na wrażenia użytkowników. Strona czy sklep działa szybciej powodując lepszą konwersję.
  • Lepsze pozycje w wyszukiwarce (przy umiejętnym wdrożeniu)
  • Zwiększone bezpieczeństwo i automatyczna ochrona przed najpopularniejszymi atakami
  • Niższy koszt lub możliwość optymalizacji kosztów hostingu dużych aplikacji

Czy CDN ma jakieś wady?

Raczej nie, ale znając realia pierwsze co mi się nasuwa to:

  • nieumiejętna instalacja może doprowadzić do błędów na stronie,
  • dodatkowy, stały koszt związany z utrzymaniem usługi i dodatkowego certyfikatu SSL lub konieczność wykupienia wyższej opcji hostingu,
  • koszt wdrożenia usługi (od 750 zł netto wzwyż),
  • utrudnienia przy pracach deweloperskich – jest to przykład partycjonowania funkcjonalnego serwera. CDN jest kolejnym black boxem, którym zarządzamy za pomocą API dostawcy (konieczność czyszczenia pamięci Cache, stosowania nagłówków, wykonanie automatycznej inwalidacji itp…).

Kiedy warto stosować CDN?

  • serwisy internetowe o zasięgu ogólnopolskim
  • wielojęzyczne strony internetowe
  • sklepy internetowe
  • często odwiedzane strony internetowe
  • strony z wieloma zdjęciami, filmami i plikami, które często są pobierane
  • strony narażone na ataki – czyli popularne, zarabiające serwisy lub przechowujące cenne dane
  • każda inna dowolna strona WWW, która z pewnych powodów ma być szybsza i mieć w 100% profesjonalną architekturę

Testowanie CDN

Postanowiono porównać czasy TTFB aby sprawdzić, czy CDN faktycznie przyspiesza pobieranie zdjęć. Po stronie klienta mamy łącze ok. 10Mb/s. Testowana usługa to Amazon CloudFront z najbliższymi węzłami prawdopodobnie we Frankfurcie. Test jest wykonywany na śląsku połączenie Plus LTE. Plik testowy to zdjęcie JPEG o wadze 434KB umieszczony na hostingu WWW OVH Performance 1 i we wspomnianym CDN. Dostęp do obu odbywa się po szyfrowanym połączeniu:

Jak to jest możliwe? CDN nie dość, że odpowiada szybciej, to pobieranie tego samego pliku trwa o wiele krócej. Sieć CDN prawdopodobnie dysponuje łączem o większej przepustowości, reaguje szybciej tak jakby był mniej obciążony zapytaniami lub występowała mniejsza liczba przeskoków połączenia.

Już przy jednym pliku graficznym widać ponad dwukrotnie szybszy transfer i czas reakcji. Proszę sobie teraz wyobrazić jak wielki wpływ na czas i współbieżność pobierania witryny ma CDN w przypadku pobierania kilkunastu a nawet kilkudziesięciu różnych plików na raz.

Rezultat wdrożenia CDN na jednej z obsługiwanych stron:

Prędkość wczytywania (październik 2017 – marzec 2018) – CDN wdrożono w nocy 23 grudnia 2017:

rezultat wdrożenia CDN

Indeksowanie plików umieszczonych w CDN

Czy wyszukiwarka indeksuje pliki umieszczone w CDN? Oczywiście, że tak. Wszelkie pliki są indeksowane zupełnie tak jakby znajdowały się na głównym serwerze aplikacji.

Podsumowanie

CDN to bardzo efektywny sposób na przyspieszenie ładowania się strony oraz minimalizację kosztu utrzymania na serwerze stron i sklepów obsługujących stosunkowo duży ruch. Warto stosować go wszędzie tam, gdzie prędkość, wrażenia użytkownika i bezpieczeństwo to priorytet.

Źródła:

https://aws.amazon.com/blogs/aws/98-99-100-cloudfront-points-of-presence/

Henderson C. Building Scalable Web Sites. Building, Scaling, and Optimizing the Next Generation of Web Applications, O’reilly 2008.

Ejsmont A. Web Scalability for Startup Engineers, McGraw-Hill Education, New York, 2005.

https://www.cloudflare.com/network/

https://www.keycdn.com/network

https://www.stackpath.com/maxcdn/

Oceń artykuł na temat: Co to jest CDN? Czy warto włączyć?
Średnia : 4.7 , Maksymalnie : 5 , Głosów : 50


 

Odpowiedz lub skomentuj

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *




Komentarze

Andrzej

4 czerwca 2020

Czy powyższe testy były przeprowadzone na polskich stronach? Szukam intensywnie potwierdzenia tezy, że warto z CDN korzystać. Spotykam się ciągle ze stwierdzeniem, że CDN ma sens, jeśli ma się stronę serwowaną w wielu krajach.

W Polsce Coudflare ma jedno Data Center, a więc to w zasadzie to samo, co mieć serwery w Warszawie. Prawda?

Paweł Mansfeld

4 czerwca 2020

Siłą CDNa nie jest tylko lokalizacja geograficzna - to także szybsze łącza i wyspecjalizowanie całej sieci pod "bezmyślne" serwowanie statycznych danych (brak Cookie, HTTP/2 albo 3/QUIC), dlatego wniosek, "że to tak jakby mieć zwykły serwer w Wa-wie" jest błędny.

Ten test obejmował polską stronę na polskim łączu i to jest "prawdziwy" CDN Amazona a nie Cloudflare. Przeglądarki i wyszukiwarki preferują CDN, bo korzystają z niego high-endowe strony o większym budżecie i ruchu. Cloudflare to niestety najgorszy wybór. Instalacja jest co prawda łatwa (bo zmieniamy DNSy) ale to nie jest prawdziwy CDN, tylko odwrotny serwer proxy, który "przy okazji" realizuje CDN. Jako skutek uboczny, Cloudflare rujnuje SEO (geolokalizacja) dlatego wolałbym takiego CDNa nie mieć wcale :) Jeżeli już korzystamy z CloudFlare (odciążenie stron statycznych, obrona przed DNS, zapewnienie high availiblity) to wtedy "od biedy" można ten CDN włączyć. Cloudflare przy dynamicznych stronach może lekko pogarszać TTFB, większość korzysta z CloudFlare bo ręczna integracja z normalnym CDN jest trudniejsza do wykonania - być może takie osoby dostrzegają w pełni zrozumiałe pogorszenie wydajności strony - i to stąd się biorą mity o sensowności stosowania CDN na stronach o zasięgu globalnym. Prawdziwy CDN obejmuje tylko obiekty statyczne i jest na osobnej sub-domenie np. tak jak ja mam na cdn.mansfeld.pl

Dziękuję za przypomnienie tej kwestii - usunę CloudFlare z tej listy przy następnej aktualizacji, bo faktycznie to może wprowadzać w błąd.

Problem z TTFB najlepiej rozwiązać migracją na jakiś porządny hosting np. OVH, który udostępnia polskie IP i potem włączyłbym sobie CloudFront dla plików statycznych. Poniżej jest link do instrukcji jak to zrobić. Korzystanie z CloudFlare w dodatku na jakimś polskim hostingu "LiteSpeed" to nieporozumienie.

Maniek

26 czerwca 2020

Czy włączenie CDN (hosting OVH) może mieć negatywny skutek dla strony, która pozycjonowana jest lokalnie?

Paweł Mansfeld

27 czerwca 2020

Dopóki w narzędziach https://check-host.net/ip-info widnieje polska lokalizacja, to wszystko jest OK.

 

Wykryto brak połączenia z Internetem.