Як ВВС створює масштабовані сайти: 7 базових принципів

  1. 1. Кеш - кращий друг
  2. У твоїй компанії не дотримуються дедлайни?
  3. 2. Використання CDN
  4. 3. Використання великої кількості серверів
  5. 4. Оптимізація створення сторінок
  6. 5. Поділ навантаження
  7. 6. Визначте межа можливостей
  8. 7. Компроміси допустимі, але тільки не в швидкості

BBC - найбільша медіакомпанія Великобританії і одна з найбільших в світі. Щодня сайти компанії витримують величезні навантаження.

Так, сайт BBC про Олімпіади 2016 року відвідали з 100 млн пристроїв. В BBC заздалегідь вжили заходів для забезпечення безперебійної роботи сайту, тому виявилися готові до такого трафіку. У своїй колонці компанія поділилася базовими принципами оптимізації високонавантажених сайтів.

1. Кеш - кращий друг

Кеш - один з головних способів прискорення сайту. Кеш зберігає копії контенту і видає їх браузеру відвідувача, тим самим знімаючи навантаження з сервера. Це допомагає сервера обслуговувати більше відвідувачів.

Це відмінне рішення для зображень, скриптів і CSS-файлів. Користувач переходить по сторінках сайту, а браузерні кеш не викачувати файли по два рази, тому що вони зберігаються на комп'ютері користувача.

Але якщо сайт відвідують мільйон користувачів, то сервер повинен роздати мільйон кешей. Тому на сайтах зазвичай впроваджують свій кеш. Наприклад, хороший сервер зазвичай може обробити 1 000 запитів в секунду до кешуватися контенту, але не обробить стільки ж запитів до некешірованному контенту.

У твоїй компанії не дотримуються дедлайни?

Опановуй гнучкі методології в управлінні проектами під керівництвом затребуваних Agile-коучів всього за 18 днів, пройшовши онлайн-курс по Agile від бізнес-школи City Business School. Як виглядають результати компанії після курсу:

  • Команда згуртована, все відчувають відповідальність за кінцевий результат.
  • Виставлені вірні пріоритети в процесі роботи над продуктом.
  • Дедлайни завжди дотримуються.
Дізнатися більше

Реклама


2. Використання CDN

Навіть з кешем є межа, після якого сервер не впорається з навантаженням. Щоб масштабироваться, потрібно використовувати CDN.

CDN - це великий кеш, склад для вашого контенту, який видається користувачеві без звернення до сервера. CDN добре працює з контентом, який рідко змінюється: зображення, відео, скрипти і стилі. Багато CDN безкоштовно надають користувачам збережені у себе популярні файли, такі як jQuery.

Інша перевага CDN в тому, що з ним доступ до сайту однаково швидкий з будь-якої точки світу.

3. Використання великої кількості серверів

Використання великої кількості серверів

Під час Олімпіади в Ріо на сайті BBC були створені тисячі сторінок під різні новини, а сумарна тривалість відеороликів становила 3000 годин

Кешування, з CDN або без, добре працює для статичного контенту. Але якщо контент на сторінці часто змінюється, або користувачі отримують персоналізований контент, кеш не допоможе. Наприклад, якщо сторінка містить дані зареєстрованого користувача, такі дані не кешуються.

Вам знадобиться кілька серверів для розподілу навантаження між ними. А якщо один з серверів відмовить, сайт не впаде і продовжить працювати на потужностях іншого сервера.

Якщо ви користуєтеся послугами хмарних серверів, пам'ятайте, що додаткові віртуальні машини можна замовити в міру необхідності. Оплачувати їх можна по годинах або по хвилинах. Ця «гнучкість» хмарних провайдерів дозволяє використовувати більше серверів, коли трафік великий, і відмовлятися від їх частини, коли трафіку менше.

ВВС використовує сотні хмарних серверів. Вони постійно змінюють кількість серверів відповідно до трафіком на різних сайтах. Але щоб це працювало, інші системи теж повинні легко масштабироваться, наприклад, база даних або API.

4. Оптимізація створення сторінок

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

Дайте відповідь на наступні питання:

  • Чи можна переписати код, щоб він працював швидше?

  • Не використовується більше даних, ніж потрібно?

  • Чи можна оптимізувати звернення до бази даних або до API?

  • Чи можна частину контенту генерувати заздалегідь і зберігати в файлі або кеші?

5. Поділ навантаження

Сучасні браузери підтримують Javascript, використовуйте це. Зніміть трохи навантаження з сервера, передавши частину роботи браузеру відвідувача сайту.

Наприклад, можна зменшити число запитів на сторінці, якщо фільтрувати рядки таблиці в Javascript, а не на сервері.

Замість великовагових сторінок можна використовувати невеликі, містять тільки вихідний текст, а інший контент довантажувати з допомогою Javascript і API. Наприклад, Facebook використовує цей підхід всюди, де тільки можна.

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

6. Визначте межа можливостей

Визначте межа можливостей

Десятки мільйонів користувачів заходили на сайт BBC під час референдуму по Брекзіту

Після всіх змін на сайті перевірте, чи допомогли вони. Завжди є межа, після якого система завалиться. Важливо визначити цю межу. Проводьте тестування навантаження.

Тестування навантаження допомагає команді BBC переконатися, що все передбачено і сайт готовий до граничних навантажень.

7. Компроміси допустимі, але тільки не в швидкості

Компроміси допустимі, але тільки не в швидкості

Футбольний матч Англія - Уельс на чемпіонаті Європи 2016 року став подією з найбільшим трафіком в історії BBC. Мільйони людей дивилися трансляцію на сайті

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

За розрахунками команди BBC, кожна додаткова секунда завантаження тягне втрату 10% відвідувачів. Тому BBC залишає на сайті тільки найважливіші функції, а все зайве відключає. Це стосується таких речей, як рекламний банер внизу сторінки: він навантажує сервер, але користувачі не турбуватимуться від його втрати.

Ці прості методи допомагають BBC створювати сайти, які витримують багатомільйонний трафік.

У далекому 1948 році, коли Олімпіаду вперше транслювали по телебаченню, в світі було не менше 80 000 телевізорів. Сьогодні 80 000 смартфонів розпродається по всьому світу протягом півгодини. Розвиток інтернету вражає уяву, і з перерахованими принципами сайт буде до цього готовий.

Думка редакції може не збігатися з думкою автора. Якщо у вас є, що доповнити - будемо раді вашим коментарям. Якщо ви хочете написати статтю з вашою точкою зору - прочитайте правила публікації на Cossa.

У твоїй компанії не дотримуються дедлайни?
Не використовується більше даних, ніж потрібно?
Чи можна оптимізувати звернення до бази даних або до API?
Чи можна частину контенту генерувати заздалегідь і зберігати в файлі або кеші?