Стендап Сьогодні 📢 Канал в Telegram @stendap_sogodni

🤖🚫 Контент вільний від AI. Цей пост на 100% написаний людиною, як і все на моєму блозі. Насолоджуйтесь!

06.10.2022

Як провести стрес-тест, з якого можна робити висновки

📏⏱️⚖️ Що робити, щоб довести, що ваша архітектура витримає навантаження, що потрібне для комерційного успіху продукту? Це життєво важливе питання для майбутнього інвестора.

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

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

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

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

Деякі бази, такі як AWS Redshift, мають вбудоване масштабування. Тоді можна зробити стрес-тест ваших запитів на одному вузлі, потім на двох, на чотирьох, і при вдалій схемі побачити лінійне (чи може, логарифмічне) прискорення.

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

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

Ось така цікава задача, як бізнес-план, тільки для інженерів.