Mihai Surdeanu

Despre Content Delivery Network și timpul de încărcare al platformelor online

Salutare tuturor,

În articolul de astăzi vom vorbi despre CDN (Content Delivery Network) și cum poate îmbunătăți această tehnologie timpul de încărcare al unei platforme online. Un exemplu de platformă online, îl reprezintă chiar blogul de față.

Ce este un CDN?

Iată definiția de pe Wikipedia:

A content delivery network, or content distribution network, is a geographically distributed network of proxy servers and their data centers. The goal is to provide high availability and performance by distributing the service spatially relative to end users.

Wikipedia.org

Ideea este simplă și voi încerca să o detaliez în cele ce urmează. Orice platformă online are un conținut (video, audio, foto sau simplu text) care ajunge la utilizator (internaut) în momentul în care acesta din urmă alege să viziteze domeniul respectiv. Dar ce se întâmplă în timp ce pagina web e încărcată în browser? Foarte simplu. Browserul se ocupă de conectarea la serverul web al site-ului și începe să descarce din conținut, astfel încât tu să îl poți vedea la tine pe calculator. Simplu, nu?

Tot scenariul asta este pentru un singur utilizator. Dar dacă ar intra 1000 de utilizatori în același timp? Serverul web ar trebui să ofere conținutul respectiv unui număr de 1000 de browsere. Corect? Și ca să ne apropiem și mai mult de realitate, haideți să ne gândim că acești 1000 de utilizatori sunt dispersați din punct de vedere geografic. Nu toți sunt din România. În acest caz, dacă serverul web este găzduit pe teritoriul țării noastre, atunci latența dintre 2 țări ar putea să fie o problemă și să producă o mărire semnificativă a timpului de încărcare al paginii web.

Content Delivery Network este o tehnologie relativ recent apărută și cumva merge în paralel cu ideea de cloud. Ce ar fi dacă nu am avea doar un singur web server, ci mai multe, chiar unele împărțite în mai multe arii geografice? Reducerea lățimii de bandă este un aspect important ce trebuie luat în calcul atunci când livrezi conținut non-text.

Cazul meu…

Încă lucrurile sunt neclare? Nu este nicio problemă. Vom lua un exemplu practic. Fix blogul de față. Ce tip de conținut livrez pe blogul meu? Vorbim în principal de ponturi de vacanță, care se traduc atât în conținut text dar și foto. Prima categorie de conținut nu reprezintă o problemă de cele mai multe ori. În schimb, conținutul foto poate deveni o problemă într-un timp relativ scurt dacă vorbim de un număr mare de utilizatori zilnici. De ce? Pentru că de fiecare dată când postez un articol și un utilizator vede postarea mea, serverul web va trebui să transfere imaginile din acesta, către client. Și să zicem că o imagine are dimensiunea de 1 MB. Dacă am 10 imagini în articol, înseamnă că vom transfera pentru fiecare client câte 10 MB. Ce se întâmplă dacă am 1000 de utilizatori? 10 x 1000 = 10.000 MB. Apoi, lățimea de bandă este în general limitată la o anumită capacitate. Gen: 10 Mbps. Tradus: 10 Mbytes per secundă. Cu alte cuvinte, dacă am ghinionul ca acești utilizatori să intre fix în același timp, eu nu îi voi putea servi pe toți fix în același timp. În final, unii utilizatori vor experimenta o întârziere și cel mai probabil nu vor mai ajunge să viziteze site-ul meu pentru a doua oară.

Ce soluție de CDN am ales? BunnyCDN. Iată aici un top al primelor 11 soluții. Cloudfare are și o variantă free. Eu am ales BunnyCDN din perspectiva prețului. Acesta pornește de la 0.01 euro / GB, pentru Europa și America de Nord. Folosesc soluția doar pentru imagini. Dar chiar și așa, toate imaginile pe care le încarc pe site, le optimizez, astfel încât să le mai reduc din dimensiune. Mi-am setat și un monthly bandwidth limit de 100 GB (temporar) pentru a mă proteja de diverse atacuri.

Cum setez un CDN pentru blogul meu?

  • Pasul 1: În primul rând, ai nevoie de un plugin WordPress pentru a-ți suprascrie toate legăturile către imagini, de pe blog. Imaginile nu vor mai referenția către domeniul tău, ci către un subdomeniu. Chiar BunnyCDN are un plugin free pe care-l poți folosi.
  • Pasul 2: La pasul anterior am vorbit de un subdomeniu. Va trebui să creăm o nouă intrare de tip CNAME în DNS management tool. Nu uita să dai restart la DNS tool pentru propagarea schimbărilor!
    • Key: cdn (Exemplu: cdn.mihaisurdeanu)
    • Value: BunnyCDN hostname (Exemplu: ms.b-cdn.net)
      • Observația 1: Acest subdomeniu va fi folosit în cadrul pluginului WordPress ce îți va suprascrie legăturile de pe blog.
      • Observația 2: Poți seta din BunnyCDN și un Cache Expiration Time. Eu îl am setat la o zi. Cu alte cuvinte, dacă imaginea nu e în cache, atunci BunnyCDN va apela serverul meu pentru a obține informația inițială și apoi o ține în cache pentru o zi. În tot acest timp, informația oferită clienților va fi numai cea din cache.

Îți pun la dispoziție și niște imagini pentru ușurarea părții de setup.

Pasul 1: Instalează plugin WordPress
Pasul 2: Setează înregistrarea CNAME

Să ne auzim cu bine!

Mihai

Pasionat de IT. Pasionat de viață. Pasionat de tot ceea ce înseamnă a face o viață mai bună, plină de înțelegere, ajutor reciproc și iubire de aproape.

1 comentariu

Arhive

Arhiva personală