Что такое высоконагруженное веб-приложение
Что проверяют
Стоят ли за словом «высоконагруженное» числа и умеете ли вы превратить их в тест. От тестировщика ждут не определения из статьи, а критериев: какая нагрузка считается целевой, какие метрики снимаются и по какому условию результат признаётся провалом.
Как отвечать
Высокая нагрузка начинается там, где привычные решения перестают справляться и приходится менять архитектуру: горизонтальное масштабирование, кэш, очереди, реплики базы. Абсолютного порога нет, есть отношение нагрузки к запасу конкретной системы.
Описывать приложение стоит профилем, а не эпитетами: запросов в секунду, одновременных пользователей, объём данных, соотношение чтения и записи, форма пиков. Целевые значения фиксируются в требованиях: время ответа на высоких перцентилях, доля ошибок, время восстановления после отказа узла.
Виды проверок стоит развести, их постоянно смешивают:
- нагрузочный тест: подтверждает, что на ожидаемом профиле метрики укладываются в требования;
- стресс: ищет точку деградации и проверяет, что система отказывает предсказуемо;
- на устойчивость: длинный прогон, ловит утечки памяти и рост очередей;
- скачок нагрузки: резкий приток, проверяет автомасштабирование и защиту от лавины.
Инструменты называют по месту: JMeter, Gatling, k6, Locust плюс мониторинг сервиса и базы во время прогона.
Где спотыкаются
Отчитываются средним временем ответа. Среднее прячет ровно то, ради чего затевался тест: жалобы приходят из хвоста распределения, поэтому смотреть нужно высокие перцентили и форму распределения целиком.
Гоняют нагрузку с одной машины и упираются в неё, а не в сервис. Генератор кончается раньше сервера по процессору, памяти и свободным портам, и без контроля его ресурсов получается красивый график деградации собственного стенда.
Подают нереалистичный профиль. Один и тот же запрос с одними и теми же параметрами греет кэш и до базы не доходит, отсутствие пауз между обращениями даёт нагрузку, которой в жизни не бывает, а тестовая база на порядки меньше боевой снимает всю нагрузку с индексов.