Створення highload проектів

[ Високонавантажених проектів ]

 

Що?

Давайте розбиратися, ніж Високонавантажені (highload) проекти відрізняються від інших. З назви зрозуміло, що вони зазнають високого навантаження. І зовсім непогано, щоб вони успішно справлялися з нею.

Що може навантажувати проект:

велика кількість оброблюваних даних

наплив відвідувачів

чисельні обчислення

Часто ці фактори спрацьовують одночасно і вимагають великої кількості ресурсів для забезпечення безперебійної роботи.

 

Кому?

/ для чого, які проекти /

Які види проектів найчастіше зазнають високого навантаження? У більшості випадків це розраховані на багато користувачів веб-сервіси.

 
 
 
 
Нові проекти,
які потрібно планувати як потенційно високонавантажені:
Портали
Соцмережі
Онлайн-сервіси
Інтернет-магазини
з перспективою зростання
 
 
 
 
Існуючі проекти,
які переросли поточні “потужності”. Для них потрібно оптимізувати код, грамотно налаштувати кешування та адаптувати сервери під високі навантаження.
Де шукати ту точку, в якій ваш проект уже можна вважати високонавантаженим?
Коли потрібно терміново щось робити для його оптимізації? Для кожного сайту це значення індивідуальне, але воно обов'язково є, і важливо не пропустити цей момент, і не опинитися з непрацюючим інтернет-магазином у чорну п'ятницю.

 

Що врахувати?

 
 
 
Загалом високонавантажені проекти — це
завжди ексклюзивні рішення
у яких потрібно врахувати дуже багато факторів, ризиків та бізнес-вимог.

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

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

 

Як планувати?

На початку роботи необхідно визначити специфіку проекту:

Аудиторія. Навіщо/кого створюється проект? Чи живі люди, зовнішні автоматизовані системи? Чи, може, для обох?
Аудиторія. Навіщо/кого створюється проект? Чи живі люди, зовнішні автоматизовані системи? Чи, може, для обох?
Які типи запитів плануються?
Чи потрібний повнотекстовий пошук? і так далі...
Друге і найголовніше — це грамотне проектування архітектури майбутнього ресурсу та план його розвитку.
Архітектура є основою, фундаментом, від якого залежить життєздатність системи. Дуже важливо намітити архітектуру на кілька кроків уперед, розробити поетапний план її реалізації та обов'язково врахувати нетехнічні аспекти розвитку проекту Важливо також розподілити навантаження між серверною та програмною частинами проекту.
Але архітектура - це не все, про що варто подбати. Ще однією обов'язковою складовою високонавантаженого проекту є

розробка системи моніторингу

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

 

Технології

Питання «які технології та рішення використовувати в конкретному проекті» дуже індивідуальне. Більшість сучасних мов програмування та супутніх технологій пропонують усі необхідні інструменти для побудови стабільної, надійної та масштабованої архітектури інтернет-проекту.

Ми працюємо з:

брокерами повідомлень: Kafka, RabbitMQ

використовуємо контейнери docker

для керування “флотом” контейнерів на кількох хостах, об'єднаних у кластер, використовуємо Kubernetes

Логуємо за допомогою ElasticSearch, Logstash, Kibana та Prometheus

Моніторимо NAGIOS та Zabbix

Ми розробляємо проекти на php фреймворку Yii2, Pyton та NoJS, які показують відмінну продуктивність.

 

Як ми працюємо

01
Ми завжди для початку вивчаємо та обробляємо технічні та бізнес-вимоги, аналізуємо специфіку проекту.
02
На етапі планування продумуємо архітектуру з можливістю розширення Окремим етапом створюємо прототип, який дозволяє наочно зрозуміти, як виглядатиме ресурс ще до розробки. Завдяки прототипу розробка відбувається більш передбачувано.
03
Також обов'язково розробляємо систему моніторингу, яка забезпечує безперебійність роботи.
04
Завжди намагаємося забезпечити балансування навантаження, завдяки цьому мінімізуємо час відгуку системи.
05
Використовуємо найефективніші технології для скорочення часу обробки, підвищуємо продуктивність ресурсу.
 
 
 
Отже якщо ваш існуючий сайт перестав справлятися,
ми визначимо критичні місця та оптимізуємо під будь-які навантаження
щоб він легко витримав будь-яку чорну п'ятницю або наплив відвідувачів у розпродаж, а ви без стресу пережили будь-які піки відвідуваності.

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