+
Вход

Въведи своя e-mail и парола за вход, ако вече имаш създаден профил в DEV.BG/Jobs

Забравена парола?
+
Създай своя профил в DEV.BG/Jobs

За да потвърдите, че не сте робот, моля отговорете на въпроса, като попълните празното поле:

77+31 =
+
Забравена парола

Въведи своя e-mail и ще ти изпратим твоята парола

SiteGround CDN: Как да оптимизираш скоростта на 150 000 сайта в над 175 локации в света

*Текстът е предоставен от SiteGround; автор Иван Йорданов, Technical Product Development Lead

Иван Йорданов е член на екипа за разработка на продукти в SiteGround, чието предизвикателство е създаването и внедряването на множество инструменти и технологии, които целят да направят сайтовете на клиентите на компанията изключително бързи, без от тях да се изискват специфични технически умения. Опитът му в системната администрация, архитектурата на многослойни cloud базирани решения, познанията му по разработване на web базиран софтуер и менажирането на проекти го правят технически лидер на една от последните услуги за по-голяма бързина на сайтове, SiteGround CDN.

SiteGround се откроява с философията си за разработване на собствени системи и продукти, вместо използването и интеграцията на готови такива, с които се надграждат услугите ни и се подобрява клиентското преживяване. Като глобален лидер на уеб хостинг пазара, очаквано идва и моментът, в който компанията решава да заложи на собствена услуга, предоставяща мрежа за доставка на съдържание (CDN).

Какво представлява собствената мрежа за доставка на съдържание (Content Delivery Network или CDN) на SiteGround и защо компанията решава да инвестира в такова решение?
Иван Йорданов, Technical Product Development Lead

CDN е система, която позволява на собствениците на сайтове да достигат до аудиторията си, посредством множество точки на присъствие (Point of Presence или PoP). Тези точки представляват сървър или мрежа от сървъри, отговарящи за обработването на HTTP заявки от потребителите, които се намират най-близо до тях. По този начин се съкращава времето за трансфер на данни и се подобрява скоростта на зареждане на страниците на конкретния уебсайт.

“Въпреки, че CDN услугите са широко разпространени в днешно време, в SiteGround избрахме да създадем собствен продукт, за да бъдем сигурни в отличното качество и ползите за нашите клиенти. Главната цел е ясна – да се предостави качествена услуга, която да подобри скоростта и сигурността на сайтовете, използващи уеб хостинг услугите ни, но също така и да направи продукта лесен за използване, както и да освободи клиентите от безкрайните и досадни конфигурации, които обикновено съпровождат интегрирането на CDN услугите”, коментира Иван Йорданов.

Цели на системата

Целите на мрежата за доставяне на съдържание обикновено са следните:

  • Подобряване на скоростта на зареждане на сайтовете.
  • Съкращаване на времената за трансфер на данни между сайтовете и потребителите.
  • Отнемане на натоварването на хостинг сървърите, чрез обработване на заявки вместо тях.
  • Съхраняване на кеш данни по-близо до потребителите.
  • Осигуряване на защита на ниво, различно от хостинг сървъра.

Специално за SiteGround CDN беше важно да добавим и следното:

  • Конфигурация на CDN ниво с един клик.
  • Автоматично дистрибутиране на SSL сертификати на сайтовете по CDN сървърите, без нужда от допълнителна конфигурация.
  • Автоматична интеграция с DNS системите и интелигентно рутиране на HTTP заявки, според гео локацията на потребителите.

Иван допълва, че: “Не на последно място – създаването на SiteGround CDN имаше за цел да замести интеграция с външна CDN услуга, която мнозинството от клиентите ни вече използваха, и това да стане бързо, гладко и по-ефективно”.

Градивни елементи на системата

SiteGround CDN е изграден така, че да не зависи от конкретни услуги, доставчици или центрове за съхранение на данни, но “стъпва” върху Google Cloud инфраструктура, която ползваме като data центрове в SiteGround. По-голямата част от софтуерните пакети, използвани за постигането на крайната цел, са създадени от DevOps & Web Development екипите на SiteGround, което предоставя гъвкавост в много ситуации, а също така позволява и надграждането и изменението на под-системите, ако това е необходимо.

Фактът, че услугата е изцяло вътрешно създадена, предоставя възможност за лесни интеграции с останалите системи в SiteGround, и улеснява комуникацията с тясно свързаните с нея DNS и хостинг сървъри.

“При започването на работата ни по SiteGround CDN-a, първоначалната ни цел беше да създадем по-бързо и по-лесно за използване решение за дистрибуция на съдържанието на клиентите ни. Услугата беше пусната в BETA версия, по време на която събрахме изключително много данни и обратна връзка от потребителите. Няколко месеца след пускането на първата официална версия на услугата, след изключително позитивната обратна връзка, осезаемо по-добрите резултати в скоростта на сайтовете, които започнаха да я използват, и изненадващо бързо постигнатите нива на потребление от клиентите ни, приоритетно се заехме да подобрим услугата още повече. Предизвикателството беше дали има как да увеличим точките на присъствие още повече, без задължителното откриване на нови CDN точки или data центрове, което би отнело доста повече време”, казва Иван Йорданов.

Снимка 1: Точки на присъствие на SiteGround CDN v.1

В основата на новата подобрена версия на SiteGround CDN-а залегна Anycast технологията, която вече използвахме на сървърите си. На практика тя прави възможно преизползването, или „анонсирането“, на един и същи IP адрес в множество точки, намиращи се в различни географски региони. Това ни позволи да се възползваме от изключително широката вътрешна мрежа и networking на Google Cloud и да използаме над 175 точки на присъствие, които осигуряват по-бърза скорост на пренасяне на данните, без да са задължително CDN бази. Така точките, към които потребителите могат да се вържат при достъпване на сайтовете, хоствани при нас, стават далеч повече и позволяват много по-бързо обработване на заявки, идващи от гео локации близо до тях, но далече от хост сървъра, на който се намира самият сайт.

Днес те питаме…

Как разбра за Job Board-а на DEV.BG?
Loading ... Loading …
Снимка 2: Мрежа на SiteGround CDN v.2.0

Веднъж достигайки до най-близката точка на присъствие, заявката бива рутирана по вътрешната мрежа на Google, за да достигне до някой от множеството сървъри, грижещи се за обработването й, което е много по-бързо. Целият този процес допринася за значително подобряване на важни елементи, свързани със скоростта на зареждане на уеб страници, като например времето до първи байт (Time to First Byte or TTFB). Също така внася допълнителна сигурност и стабилност на цялата система, елиминирайки рисковете, свързани с единични точки на повреда. (Single point of failure or SPoF).

За успешното функциониране на SiteGround CDN, като система, се грижат множество различни под-системи, които комуникират помежду си. Освен задължителната многосървърна под-система, която се грижи за обработването на заявките на ниво HTTP, са интегрирани и други под-системи, които се грижат за съхраняването и манипулирането на кеш данните за различните сайтове, системи за сигурност, системи за наблюдение на инфраструктурата и функционирането ѝ, системи за бекъп и т.н. Съвкупността на всички тях и съвместното им функциониране осигурява една сложна, стабилна, скалируема и гъвкава инфраструктура, която може динамично да се приспособява към количеството трафик и данни, които трябва да обработи.

Как функционира SiteGround CDN?

Услугата може да се активира от контролния панел на SiteGround. Това води до автоматична промяна на DNS записа на конкретния сайт, който ще бъде пренасочен към специални записи – част от групата сървъри, обслужващи заявките на CDN ниво.

Комуникацията между CDN и хостинг сървър се осъществява без нужда от допълнителна конфигурация, като в момента на активиране на услугата, CDN системата получава всички нужни мета данни за конкретния сайт и те автоматично се добавят в дистрибутирана база данни.

По този начин, HTTP заявките, пристигащи от потребители, намиращи се на различни краища на света, биват пренасочвани към най-близките до тях сървъри, част от групата на мрежата за доставка на съдържание, които на свой ред ги обработват и връщат отговор към източника на заявката. В зависимост дали конкретният сайт имa генерирани кеш данни – това може да стане директно, без заявката дори да достига до хостинг сървъра, където физически се съхраняват всички файлове на даден сайт.

Хранилищата, където се съхраняват кеш данните на сайтовете са споделени, така че да се постигне максимална ефективност при обработването на кешинга. По този начин се избягват допълнителни връзки от CDN инфраструктурата до хостинг сървъра.

Инструменти за управляване на CDN услугата

Една от основните идеи зад SiteGround CDN, е да бъде лесна за активиране и управление, с минимални усилия от страна на клиента, тъй като обикновено активирането и конфигурирането на CDN услуги изисква известни технически умения и отнема време.

Това обаче не означава, че липсват и допълнителни опции за управлението ѝ:

  • В зависимост от версията на услугата, клиентите могат да се възползват от кешинг за статичните си ресурси или динамично генерираното съдържание от сайта им.
  • Налична е възможност за “Режим на разработка”, която на практика изключва кешинг настройките за конкретния сайт. Това позволява за собствениците на сайта да виждат промените си веднага и да избегнат показването на старо „кеширано“ съдържание;
  • Предоставена е и опция за ръчно изчистване на кеш данните за сайта.
  • Опции за лесно управление на времето за изтичане на кеш данните.
  • Възможност за преизползване на изтекли кеш копия на сайта, в случай, че сайтът/приложението не функционира правилно на хостинг сървъра, където се намира.

Една от основните фунционалност на CDN услугата – кешингът, поддържа управление, чрез HTTP хедъри (HTTP headers), като покрива всички RFC стандарти, свързани със запазването и управлението на кеш копия.

Резултати и статистика

Наличието на собствена CDN услуга направи излишна предишната интеграция с външен CDN доставчик и я измести напълно. Това наложи планирането и изпълнението на плавна миграция, така че всички клиенти със сайтове, използващи предишната услуга, да могат да продължат да се възползват от мрежата за доставяне на съдържание, в новия ѝ вид.

В BETA версията на услугата участваха хиляди клиенти и техните сайтове, чиито отзиви се оказаха много полезни за усъвършенстването на продукта и оформянето на крайния му вид.

Позитивните резултати се затвърдиха след пълното прехвърляне на всички сайтове към SiteGround CDN, като над 98% от сайтовете, използващи вече премахнатата външна CDN интеграция, останаха доволни и продължиха да използват новата услуга, предоставена от SiteGround.

Към момента повече от 150 000 сайтове от цял свят активно използват SiteGround CDN, като HTTP заявките, които системата обработва, надвишават 800 милиона на ден, а количеството данни, което преминава през мрежата за доставяне на съдържание на месечна база, е в порядъка на десетки петабайти. В споделените хранилища за кеш данни се съхраняват над десетки терабайти кеш файлове, които ежедневно се предоставят на различни потребители в различни географски райони.

Резултатите са постигнати за по-малко от година, откакто продуктът е наличен, а комбинираното време за проучване и активно разработване е само 12 месеца.

Екипите, взели участие в разработката включват: DevOps Engineers, System Administrators, Cloud Engineers, Network Administrators, Database Administrators, Frontend and Backend Software Engineers, Project Managers & Technical Project Managers. Хората, взели участие и допринесли за осъществяването на проекта, надвишават 50, като основното ядро на екипа, разработил системата, е 13 души.

Използвани езици и технологии в създаването на SiteGround CDN
  • C/C++
  • Python
  • Lua
  • Perl
  • Go
  • PHP
  • JavaScript
  • Consul
  • Terraform
  • Terragrunt
  • Ansible
  • Google Cloud Managed services
  • Redis
  • Nginx
  • Jenkins
  • Grafana/Prometheus
  • NFS