Ответ
С точки зрения QA, балансировщик нагрузки (Load Balancer, LB) — это критический компонент архитектуры, который мы должны учитывать при тестировании. Его основные цели:
- Распределение нагрузки: Равномерное распределение входящих запросов пользователей между несколькими серверами (бэкенд-нодами). Это предотвращает перегрузку одного сервера и повышает отказоустойчивость.
- Повышение доступности (High Availability): Если один из серверов падает, балансировщик перенаправляет трафик на работающие инстансы. Для тестирования это означает необходимость проверки отказоустойчивости – как система ведет себя при отключении одной ноды.
- Масштабируемость: Позволяет легко добавлять новые серверы для обработки возросшей нагрузки (горизонтальное масштабирование). QA участвует в тестировании процедуры масштабирования.
- Сессионная связанность (Session Persistence/Sticky Sessions): Некоторые LB могут направлять запросы одного пользователя на один и тот же сервер, что важно для stateful-приложений. Это нужно тестировать – не «теряется» ли сессия пользователя при таком переключении.
- Терминирование SSL: LB может брать на себя расшифровку SSL-трафика, разгружая бэкенд-серверы. Для QA это дополнительная точка проверки безопасности и корректности работы с HTTPS.
С точки зрения тестирования, мы проверяем:
- Корректность распределения запросов.
- Время отклика системы под нагрузкой с LB и без него.
- Поведение системы при снятии одной ноды с обслуживания (draining) и добавлении новой.
- Сохранение пользовательских сессий при использовании sticky sessions.