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.

Jak działa CDN?

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?
Łączenie ze stosunkowo bliskim serwerem

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:

Skrócenie drogi połączenia za pomocą CDN

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.

Techniki optymalizacyjne CDN

Skrócenie geograficznej drogi połączenia to tylko jedna z wielu technik jaką sieci CDN przyspieszają i usprawniają transmisję statycznych plików.

Sporą korzyścią jest odciążenie głównego serwera HTTP. 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.

Świetnie to widać na poniższym wykresie. 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
Optymalizacja za pomocą CDN widoczna w Pingdom Tester

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.

W tym wypadku nie jest istotne czy klienci łączą się z zagranicy czy z tego samego kraju w którym jest zainstalowany główny serwer front-endowy. Zarówno przyspieszenie jak i odciążenie serwera będzie pozytywnym skutkiem wykorzystania CDN.

Bez włączonego CDN duży ruch spowalnia główny serwer, który musi jednocześnie odpytywać bazę danych, obsługiwać logowanie i wysyłać pliki statyczne kilkuset użytkownikom na raz.

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.

Szybkość bez sztucznych limitów

Sieć CDN jest zoptymalizowana pod szybsze wysyłanie plików. Sieć taka nie używa plików Cookies, łącza są szybsze a serwery są zoptymalizowane wyłącznie do wysyłania statycznych treści, stąd czasy TTFB są znacznie krótsze od standardowych serwerów i nie jest to zasługa jedynie mniejszej odległości od użytkownika końcowego.

Szybsze działanie CDN jest możliwe z także innego bardzo prozaicznego powodu – braku limitów transferu w górę i w dół. Limity transferu (tak samo jak ilość jednoczesnych połączeń) często są nałożone na współdzielone hostingi lub tanie VPS w ramach polityki „sprawiedliwego” wykorzystywania zasobów. Sieć CDN która jest w stanie obsłużyć takie serwisy jak Netflix czy Instagram są w stanie wysłać plik dużo szybciej niż twój hosting na którym masz powiedzmy zainstalowanego WordPressa.

Czołowi dostawcy CDN

Tak wygląda sieć węzłów którymi dysponuje Google Cloud:

Google CLoud CDN

Amazon AWS (CloudFront):

AWS CloudFront

Cloudflare

Cloudflare

KeyCDN:

KeyCDN

MaxCDN:

MaxCDN

Sporą popularnością i renomą cieszą się następujący dostawcy usługi CDN:

  • Google Cloud
  • Amazon AWS (usługa: CloudFront)
  • 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,
  • krótsze czasy TTFB z powodu braku przekierowań i optymalizacji pod serwowanie statycznej treści,
  • szybszy transfer w górę za sprawą braku sztucznych limitów transferu,
  • możliwość pobierania wielu plików naraz nawet w ramach jednego klienta,
  • 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,
  • 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 (np. za pomocą zmiany DNS) 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,
  • jednorazowy koszt wdrożenia usługi,
  • 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 i sklepy z zagranicznym ruchem,
  • 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:

Porównanie czasów TTFB – połączenie z Polski do serwera zlokalizowanego w Polsce.

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.

Porównanie czasu TTFB i czasu pobierania – połączenie z Polski do serwera zlokalizowanego w Polsce.

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
Wpływ aktywowania CDN na szybkość wczytywania się strony

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.

Indeksowanie plików serwowanych z CDN

Mity na temat CDN

Istnieje sporo mitów na temat CDN. jak zwykle biorą się one z braku rozumienia zasady działania lub braku umiejętności posługiwania się serwerem.

Mit 1: CDN ma sens tylko w przypadku ruchu zagranicznego

Nie jest to prawda o czym mogliśmy się przekonać chociażby z przykładowych testów zaprezentowanych w tym artykule. Skrócenie drogi połączenia to tylko jedna z nielicznych technik na optymalizację transmisji danych pomiędzy CDN a użytkownikiem końcowym.

CDN to także szybsze odpowiedzi HTTP za sprawą zoptymalizowanego oprogramowania, braku wykorzystywania ciasteczek, przekierowań i  jednoczesnego obsługiwania logiki aplikacji. Szybsze pobieranie danych jest możliwe za pomocą braku limitów i szybszych łącz internetowych.

Mit 2: Najlepszy CDN to Cloudflare

Cloudflare to tak naprawdę Reverse Proxy czyli odwrotny serwer pośredniczący, który niejako przy okazji jest w stanie zaoferować funkcjonalność CDN. Niestety Cloudflare ukrywa prawdziwe IP serwera i doprowadza do ukrycia jego lokalizacji. Nie jest to pożądany efekt w przypadku pozycjonowania, bo jak wiemy Google bierze pod uwagę lokalizacji serwera przy dopasowywaniu wyników na zapytania konkretnych użytkowników. Taka sama sytuacja jest z edycją DNS – ich częsta zmiana obniża wiarygodność domeny.

Mit 3: Aby mieć CDN trzeba wybrać konkretną firmę hositngową

CDN to całkowicie niezależna od głównego hostingu usługa. Nie ma żadnego związku pomiędzy wykorzystywaniem konkretnego hostingu a możliwością wykorzystania konkretnego CDN.

Mit 4: CDN jest drogi lub nie opłaca się go stosować przy „małych” stronach

Koszt CDN w przypadku małych stron jest pomijalny. W przypadku strony z ruchem na poziomie 100 tyś odsłon dziennie to kilka dolarów miesięcznie. W przypadku mniejszego ruchu może to być koszt rzędu kilkanaście złotych miesięcznie.

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://cloud.google.com/cdn/docs/locations

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 : 58