CDN – що слід знати

CDN – що це? | Horus267

Знайомство з CDN

CDN – що це? Content Delivery Network або Мережа Доставки Контенту, яка складається з безлічі серверів зі спеціалізованим ПО для захисту, або для прискорення віддачі контенту кінцевому користувачеві в будь-який момент часу, з будь-якої точки світу і на будь-який пристрій. За допомогою сервісів CDN можна організувати онлайн трансляцію на мільйони користувачів, роздати статичний контент на найвищих швидкостях, значно оптимізувати сайт і прискорити його завантаження.

Швидкість завантаження сайту є одним з ключових чинників ранжирування в Google. Якщо ваш сайт вантажиться повільніше сайту конкурента, то пошуковик віддасть перевагу саме вашому конкуренту. Крім швидкості, Google, з недавніх пір, почав приділяти особливу увагу захищеним сайтам. Якщо ви підтримуєте протокол HTTPS, то гігант вважатиме це хорошим знаком і додасть невеликий плюс в вашу карму. Але, як відомо, використання TLS/SSL сертифікатів уповільнює швидкість віддачі контенту на сайті. Роботу протоколу можна прискорити, якщо налаштувати підтримку технології HTTP/2 на сервері або підключити CDN, який підтримує цю опцію.

Історична довідка

Різке зростання Інтернету в середині 90-х привів до ситуації, що сервера тих років не могли самотужки витримати навантаження (чи багато може віддати «могутній» двопроцесорний сервер на базі Pentium Pro на частоті в 266 МГц з 128 мегабайтами пам’яті?). Ліміт продуктивності серверів і потреба у все більшій і більшій продуктивності породила нині забуті слова: «ферма серверів», «ієрархічне кешування» … айтішна мова дивно чутлива до віку – і слова на кшталт “servers farm” або “information superhighway” зараз асоціюються з теплими ламповими CRT-моніторами, а не з прогресом. В ході розробки і впровадження різних рішень була помічена одна важлива особливість: є два типи контенту – статичний і динамічний.

Динамічний контент формується сервером в момент отримання запиту сервером, найчастіше при активній участі бази даних. Якщо на сторінці знизу напис “page was generated in 0.333 seconds” – це якраз приклад динамічного контенту.

Статичний контент на сервері знаходиться в готовому вигляді – хто б не надіслав запит, сервер буде віддавати один і той же (з поправкою на можливі ACL). Важливо, що вміст при цьому не змінюється від запиту до запиту.

Статичний і динамічний контенти створюють різний тип навантаження на сервер. Коли роздається «динаміка», то важливі процесор, IO (для бази даних) і кількість пам’яті. Коли роздається статика, процесор майже не важливий, IO важливо тільки для тих файлів, що не кешуються, а основна вимога – це швидкість мережі. Змушувати роздавати статику серверами, які роздають динаміку, можна, але це поєднання ролей, яке заважає одне одному. Особливо важко доводиться в той момент, коли IO від статики починає змішуватися з IO від динаміки, а навантаження на IRQ заважає виконувати скрипти динаміки.

Ще більш важливою деталлю є те, що «динамічний» зазвичай означає наявність «стану» (сесії і пов’язаних з нею даних), а статика – немає. Статику можна масштабувати горизонтально без складних двосторонніх синхронізацій з центральним сервером. У випадку з динамікою так не вийде – потрібна або загальна база даних, або методи синхронізації і блокувань.

Середні і великі компанії почали роздавати статику і динаміку з різних серверів, розташованих в різних місцях планети, зменшуючи навантаження на сайти з динамікою за рахунок виносу з них статики на легко масштабовані сервера. Після чого зробити крок до “аутсорс” роздачі статики було просто, і почали з’являтися компанії, які зробили роздачу статики основою (або хоча б великою складовою) свого бізнесу.

Про головне щодо CDN

Зауважимо, що CDN вирішує ще більш важливу проблему, ніж полегшення життя серверів додатків.
Всі сучасні CDN розміщують копії контенту на різних серверах по всьому світу і направляють клієнта на найближчий (до клієнта) сервер. Результат – скорочення latency, тобто затримки між запитом і відповіддю. Якщо на сторінці багато зображень (нехай навіть дрібних картинок), то чим швидше вони виявляться у клієнта, тим швидше клієнт побачить сторінку. І якщо ми приберемо з розгляду страждальців на dialup / gprs, то час, за який буде показана сторінка визначається практично тільки мережевий затримкою. Якщо ми говоримо про відстані в сотні кілометрів (~10мс затримка), це не суттєво. Але якщо мова про відстані в континенти – то тут затримка в сотні мілісекунд (до 500-600!) Починає вже грати радикальну роль. А якщо ж контент віддається з сервера, який в декількох кілометрах від користувача, то трапляється диво! Австралія бачить дані з сайту з США в одиниці мілісекунд, Китай з сайту в Україні, Франція з сайту з Бразилії. Без участі океанічних кабелів.

Прискорення доставки контенту стало головною кілер-фичою CDN, а все інше (зниження навантаження, її балансування і т.д.) – стало другорядним. Важливим, але не критичним. В кінці-кінців, будь-яке навантаження можна завалити грошима. Але ніякими грошима не можна зробити так, щоб без локальних точок присутності сигнал з Коломиї доходив до Торонто за десятки мілісекунд.

При тому, що економія не є кілер-фичеюй, вона теж важлива. CDN в деяких ситуаціях дозволяє відчутно економити на трафіку. Передати на інший континент файли один раз, тримати їх там на локальному сервері і роздавати через локальні лінки дешевше, ніж ганяти той же трафік десять тисяч разів через транс-атлантику. Найчастіше про економію починають думати в той момент, коли це стає критичним (відеохостінги в першу чергу).

Однак, сервери по всьому світу, система синхронізації контенту і напрямки клієнтів до найближчих серверів і т.д. – все це не безкоштовно. Найчастіше CDN просять додаткові гроші в порівнянні зі звичайним трафіком аплінків, хоча для деяких регіонів може виявитися, що трафік CDN вигідніше, ніж трафік аплінку (але це, скоріше, говорить про те, що інтернет в регіоні не дуже).

Як функціонує CDN

З боку користувача сайту: він заходить на сайт example.com, де йому віддають html-сторінку. У цій html-сторінці всі css, js, картинки і відео – вказують на сайт cdn.example.com – контент вантажиться звідти. Коли браузер клієнта звертається на цю адресу, то завдяки магії BGP його запит відправляється на найближчий вузол присутності. Сама магія BGP полягає в тому, що провайдеру відвідувача на IP-мережу, в якій знаходиться cdn.example.com, надсилається кілька анонсів від різних мереж (в яких є точка присутності), а маршрутизатор провайдера з них вибирає найближчий. В результаті, запит йде на найближчий сервер, який відповідає на нього, і відповідь йде аналогічно, теж по короткому маршруту.

З боку власника сайту є два варіанти:
  • файли статики завантажуються в об’єктне сховище, по ftp, scp або іншим зручним способом. На об’єктне сховище (в панелі управління) призначається dns-ім’я (своє, або видане провайдером – залежить від технології), яке і вказується в html-сторінці.
  • Власник сайту вказує ‘origin’ для домену, після чого, за зверненням клієнта, CDN йде на сайт, до якого підключений cdn і викачує до себе файли і віддає їх браузеру користувача.

Чарівним чином, дані виявляються доступні клієнту багато швидше, ніж основна html-сторінка.

До речі, вона може бути теж статичною. За таким принципом працюють, наприклад, сторінки на github.io – це чистий CDN, в ньому все віддається статикою.

Кому найважливіше замовити CDN?

Тим, кому важливо віддати статику швидко безлічі відвідувачів, які знаходяться далеко від серверів компанії (ситуація ще гостріше для компаній, у яких відвідувачі розкидані по великій території, тобто навіть перенесення серверів «ближче» сенсу не має – все одно більшість виявиться «далеко»).

Тим, у кого дуже великий обсяг файлів – і вартість трафіку CDN виявляється нижче вартості трафіку, що йде до uplink (у великих сайтів зазвичай трафік коштує різних грошей – локальний дешевше, «глобальний» дорожче).

 uplink (аплінк) – власна чи арендована наземна супутникова передавальна станція.

При певній смузі, перенесення статики на CDN виявляється вигіднішим, ніж апгрейд мережевого обладнання. Зазвичай статика займає значну частину смуги, і замість апгрейду з 1G до 10G, або з 10G до 40G, куди дешевше викинути 80% трафіку на CDN і залишатися на розумних за ціною серверах.

З яких обсягів має сенс думати про CDN?

Повторимо думку: якщо потрібно швидко обслужити клієнтів, то обсяг трафіку вже не важливий – важливі точки присутності ближче до цільової аудиторії.

Якщо ж значної потреби в низькій latency немає, а CDN використовується для полегшення навантаження на сервера, то осмислений обсяг трафіку, з яким варто починати думати про CDN – це кілька терабайт на місяць.

Скільки коштує CDN?

Ціна сильно варіюється від специфіки CDN, ступеня «крутості» постачальника і адаптації CDN під конкретні специфічні потреби. Діапазон цін на ринку – від $ 1 до $ 140 / мегабіт смуги, або $ 0.03- $ 0.3 за ГБ трафіку. Фактична ціна дуже часто залежить від доданих послуг і можливостей CDN. Трафік в США і Європі зазвичай найдешевший, далі йде трафік в Азії / Австралії, самий же дорогий трафік – за межами цих регіонів.

Короткий огляд ринку

Всі компанії діляться на дві категорії – ті, що працюють по існуючим публічним тарифами і ті, що працюють на підставі домовленостей. Другі компанії вкрай складно порівнювати, так як умови в них можуть сильно відрізнятися. Однак, «приватний» не означає «маленький» – у приватних компаній найчастіше дуже великі клієнти з величезними обсягами в сотні терабіт (смуги), а на «дрібноту» з десятком гігабіт вони не заморочуються.

Ось список популярних CDN (щоб нікого не ображати, список відсортований у випадковому порядку):

Публічні CDN:

  • NetDNA 2009, мінімальний контракт 1 рік, ціни від ¢ 1 до ¢ 6 за Гб в залежності від обсягу, трафік за межами EU / US в півтора рази дорожче, зберігання безкоштовно
  • Rackspace Cloud Files – ¢ 4 ¢ 12 за Гб смуги, ¢ 10 за Гб зберігання (реселліт Акамай)
  • MaxCDN від ¢ 3 до ¢ 8 за Гб трафіку
  • Amazon CloudFront – EU / US – від ¢ 6 до ¢ 12 за Гб, зберігання безкоштовно.
  • CacheFly – ¢ 20 ¢ 30, мінімальний контракт $ 99 / місяць, перевищення місця оплачується ($ 15 / Гб)
  • CDN77 – ¢ 3 ¢ 15 / Гб
  • CloudFlare – трафік не оплачується, різний рівень сервісу вартує різних грошей, починаючи від базового безкоштовного, наступного за ним в $ 5 / місяць, до $ 200 / місяць на кращому плані.
  • BitGravity – від ¢ 7 до ¢ 20 за Гб, в залежності від обсягу і регіону
  • Level 3 – від $ 100 в місяць, ¢ 10 ¢ 25 за Гб
  • Leaseweb – від ¢ 6 до ¢ 8 за Гб, з мінімальною вартістю від $ 60 / місяць
  • Windows Azure CDN від ¢ 3 до ¢ 20
  • CDNsun – від ¢ 3 до ¢ 5 за Гб

Приватні CDN:

  • Internap
  • Akamai
  • Limelight Networks
  • AT&T
  • Peer1
  • EdgeCast

Більший перелік знайдете за посиланням

Деталі вибору CDN

Ось основні чинники, які слід визначити для себе при виборі постачальника:

1. Кількість точок присутності (Point of Presence)

Чим більше точок, тим краще, однак … Oднако, навіщо вам точки присутності в Китаї, якщо сайт україномовний? А кількість точок присутності в Японії при виході на канадський ринок… При порівнянні CDN слід враховувати кількість точок присутності в потрібних країнах і регіонах. Просто запевнень про велику кількість точок присутності і хорошої комутації мало – для оптимального вибору потрібно бачити список точок присутності і зіставляти їх з потенційною аудиторією сайту.

Самі точки присутності так само не рівнозначні – комунікація і пірінгові угоди з локальними провайдерами дуже важливі. На жаль, «іногородцям» оцінити зв’язність досить складно (треба розуміти розстановку сил на локальному провайдерському ринку), але, порівнюючи пропозиції варто уточнити про список пірів кожного з кандидатів в найважливіших точках присутності.

2. Політика кешування

Для того, щоб швидко віддавати контент з локального сервера, треба, щоб контент на локальному сервері з’явився (і залишався). Схем кешування безліч, ось найочевидніші:

  • Реплікація всього контенту. Плюс – швидко працює відразу, навіть перший запит віддається швидко. Мінус – дорого.
  • Реплікація за першим зверненням (найпоширеніша схема). Перше звернення повільне, далі швидше. Може бути дорого, в залежності від політики старіння (retention policy).
  • Асинхронна реплікація по перевищенню певного порогу звернень. Більше економічна версія, більше число клієнтів отримує повільне обслуговування.

Поруч з політикою кешування йде політика старіння (retention policy): коли саме об’єкт видаляється з сервера в точці присутності? За таймаут, щодо зниження числа звернень нижче деякої величини, «ніколи», через фіксований час? І хто оплачує зберігання копії?

3. SLA

Так, так, легендарний і неосяжний Service Level Agreement. Перед тим, як радіти довгій низці дев’яток, уточніть – це SLA для CDN «взагалі», або для всіх точок присутності? Якщо в найважливішій для вас локації ламається сервер і контент віддають «з сусідньої країни» це буде зараховуватися за даунтайм по SLA? Ну і, основне, чим загрожує недотримання SLA постачальнику? Вам повернуть копієчку від місячного платежу, або там є солідні штрафні санкції?

SLA – Service Level Agreement – Угода про рівень надання послуги

До речі, хоч продаючий менеджер і буде чинити опір, буде здорово, якщо вам покажуть статистику відмов за попередні часи. Відмови будуть, і вони бувають у всіх (підказка: якщо вам розповідають про те, що у когось ніколи не було аварій – або це дуже молоді, або дуже нахабні) – все питання в їх тривалості і частоті.

4. Value added services

CDN може надавати додаткові послуги. (Приклад списку неповний):

  • real-time інформування про відмову окремих вузлів
  • Аналітика
  • Інтеграція з CMS
  • DRM для контенту
  • Готовий html / flash відеоплеєр для відеофайлів з підтримкою особливостей CDN
  • Управління політикою кешування

Дуже важливо звернути увагу на підтримку потрібних протоколів і файлів. Дізнайтеся, чи підтримує обраний вами провайдер потокове відтворення флеш- і медіафайлів (RTMP, RTSP), якщо ви плануєте доставляти саме такий контент.

Можливо, провайдер дуже хороший у всьому іншому, але, якщо він не підтримує потрібні вам технології, вам це навряд чи сподобається.

5. Технічні нюанси

Технологія переадресації: Це або енікаст на рівні DNS, або переадресування через редіректи. Енікаст, зі зрозумілих причин, працює швидше.

Акуратність переадресації: На жаль, цей показник сам постачальник об’єктивно оцінити не зможе, хоча якраз цей показник дуже важливий – яка частина цільової аудиторії потрапляє на найближчий сервер. Часто говорять про очікувану затримку (так як фактична відстань нікого не хвилює, а всіх хвилює час проходження пакетів – наприклад, буває так, що стик між двома мережами перевантажений і пакети ходять повільно, в цій ситуації краще сходити трохи далі, але швидше).

6. Аккаунтинг

Як саме постачальник бере гроші? За мегабайти або за мегабіта в секунду? Чи є мінімальний Комміт («якщо віддавалось менше передбаченого договором доплатити до мінімуму»), що відбувається при оверкомміті (перевищення ліміту) – відключають / беруть більше грошей? Чи є мінімальний термін контракту? Чи є взагалі контракт (що полягає між власником сайту і постачальником CDN), або ж це автоматичний self-serving on-demand provisioning, тобто «закинув грошей на рахунок і отримав панель управління»?

Якщо вам потрібна допомога у виборі та налаштуванні CDN

заповніть Заявку нижче