Перфоманс Лаб

нагрузочное тестирование
финансовый сектор
функциональное тестирование
15 декабря, 2023

Как мы помогли разработчику ПО по управлению POS-терминалами оценить производительность и надежность продукта

Время чтения: 10 мин.
15 декабря, 2023
Автор:
Ева Реген

Как выстроить процессы тестирования для продукта, под управлением которого находится более 500 тысяч устройств — и не потратить всю прибыль на содержание штатной команды инженеров? Наш кейс — ответ на этот вопрос.
Рассказываем, как помогли разработчику безналичных технологий протестировать производительность TMS для администрирования POS-терминалов — и научили команду делать это самостоятельно.

О проекте

Клиент

Разработчик технологии безналичных платежей

Индустрия

Финансы

Продукт

TMS для администрирования POS-терминалов

Результаты

  • Максимальная производительность системы найдена на 120% от уровня нагрузки промышленной среды.
  • Обнаружено узкое место — ограничение сетевого канала 200 Мбит/сек.
  • Заказчик получил рекомендации для усовершенствования системы.
  • Мы передали компетенции заказчику и он научился проводить нагрузочное тестирование самостоятельно.
  • Выстроенные процессы тестирования позволили клиенту сэкономить ФОТ на формирование собственного центра компетенций и в максимально короткие сроки определить предельную производительность ПО. Полученный опыт может быть повторно использован.

Исходные данные

К компании «Перфоманс Лаб» обратился клиент, специализирующийся на технологиях безналичных платежей для банков и бизнеса. Ему необходимо было оценить производительность TMS для администрирования POS-терминалов, которые мы видим каждый день в магазинах и ресторанах. Их, в свою очередь, в эти точки поставляют банки — клиенты заказчика. Среди заказчиков компании — крупные организации, и количество терминалов, которые они эксплуатируют, может достигать более миллиона.

TMS позволяет хранить единую базу параметров терминалов, удаленно изменять их и обновлять ПО. В определенный момент устройств стало так много, что без нагрузочного тестирования уже было не обойтись: возрастающая сложность распределенного продукта несла риск сбоев или медленной работы в промышленной среде. Нужно было выяснить, сколько терминалов можно подключить к TMS, чтобы она не «развалилась» под нагрузкой.

Кроме того, без такой проверки компания не могла выстроить прозрачные отношения с клиентом и сформировать SLA с точки зрения производительности. Одной из наших задач помимо тестов стала выработка требований к производительности, где были бы указаны важные для клиента показатели: время отклика терминала, допустимый процент ошибок при проведении тестов, максимально допустимая утилизация аппаратных ресурсов при проведении тестов.

Ранее заказчик не проводил нагрузочного тестирования, поэтому у него не было необходимых данных (доступа к статистике клиентов) и инфраструктуры. Но выстраивать процессы с нуля было бы невыгодно: найм мог обойтись в миллионы рублей в год. В связи с этим еще одной нашей задачей стало обучение сотрудников заказчика, чтобы они смогли проводить дальнейшие тесты самостоятельно.

Проведение тестов на платформе Boomq

В этом проекте мы использовали инструмент Boomq — собственную разработку «Перфоманс Лаб». Это единственный в России low-code инструмент для нагрузочного тестирования. Он позволяет создавать тесты, управлять ими, получать детальные отчеты по итогам. И всё это — в режиме, доступном даже новичку: для нас было важно, чтобы клиент смог пользоваться этим инструментом в дальнейшем.

«Среди преимуществ Boomq — сравнение результатов тестов, тренд-отчеты, встраивание CD/CD, техническая поддержка. Он очень юзер-френдли».

foto profilya
Илья Т.
тимлид проекта

«Boomq — инструмент, который уже работает из облака. Когда нужно протестировать приложение, развернутое в том же Yandex Cloud, это очень удобно: не нужно развертывать виртуальные машины для генерации нагрузки. Что здорово, ведь в данном проекте мы сэкономили ресурсы клиента. Кроме того, Boomq на 100% совместим с JMeter».

Как мы протестировали платформу для подготовки к ЕГЭ Цитата 3
Борис Селезнев
владелец продукта Boomq

С помощью этого инструмента мы провели тестирование для поиска максимальной производительности, а также выявили дефекты, снижающие ее. В дальнейшем Boomq может помочь заказчику усовершенствовать процесс нагрузочного тестирования и автоматизировать его, не привлекая сторонних экспертов.

Решение

Мы выделили несколько главных дефектов, которые тормозили работу системы.

Во-первых, в логах была зафиксирована ошибка OutOfMemoryException, из-за которой приложение постоянно перезапускалось и становилось недоступным. Анализ показал, что Garbage Collector не очищал сессии загружаемых терминалов — из-за этого в базе данных находилось много одинаковых копий ПО. Для того чтобы решить эту проблему, в ряде мест мы устранили излишний расход памяти и добавили ключ для автоматического создания дампа памяти («снимка» состояния системы в конкретный момент времени) в строку запуска сервиса. Кроме того, мы добавили визуализацию метрик HikariCP для мониторинга соединений. И наконец, отключили в настройках трассировку сессий, занимавшую место.

Второй важной проблемой стало принудительное завершение Java-процесса из-за процесса OOM Killer ядра Linux, что также приводило к недоступности приложения. Когда оперативная память была исчерпана, механизм ядра освобождал ее за счет принудительного завершения некоторых процессов. Утилизация оперативной памяти в момент рестарта приближалась к 100% — это было обусловлено большим количеством выделенной памяти под Java: ОС Linux не хватало ресурсов для фоновых процессов системы. Мы приняли решение уменьшить объем памяти под Java Heap с 12 Гб до 4 Гб — рестарт приложения под нагрузкой прекратился.

Третьей из основных проблем стало превышение SLA по времени отклика, которое мы зафиксировали на ступени стабильной нагрузки 130% от профиля. Такой показатель мог привести к некомфортной задержке работы для пользователей. Узким местом стал сетевой канал, выделенный под сервер приложения: его пропускная способность составляет 200Мбит/сек. Мы порекомендовали клиенту расширить сетевой канал и провести дополнительные тесты, чтобы проверить влияние текущего ограничения на производительность системы.

Еще одна проблема — повторные запросы терминала на обновление ПО через Wizard. Устройство скачивало повторно один и тот же файл из-за того, что настройки терминала оставались прежними: мы обсудили с разработчиком, что Installation_id должен меняться после загрузки ПО.

Итоги

Проект занял около двух месяцев. Максимальная производительность системы была достигнута при нагрузке 120% от профиля. Результаты тестирования помогли заказчику внести прозрачные изменения в план развития продукта.

Наша команда сформулировала для клиента ряд рекомендаций, чтобы в будущем он смог избежать проблем с производительностью системы. Мы предложили заказчику:

01
Собрать статистику с продуктивной среды — и на основе этих данных сформировать 2 и более профиля нагрузки: например, дневной профиль пикового часа, профиль завершения рабочего дня. При этом — пересмотреть сценарии пиковой нагрузки и привести их в соответствие с продуктовой средой.
02
Расширить сетевой канал и провести дополнительные тесты, чтобы проверить влияние текущего ограничения в 200Мбит/сек на производительность системы.
03
Скорректировать SLA для профилей с пиковой нагрузкой, чтобы решить проблему с превышением SLA по времени отклика.
04
Проверить корректность работы обновления ПО терминала и через Wizard, а также корректности работы балансировщика в кластере базы данных. Необходимо и их профилирование: стоит зафиксировать топ медленных запросов и провести их оптимизацию.
05
Проводить тестирование Disaster Recovery не реже раза в год, чтобы проверить катастрофоустойчивость системы, ее способность к восстановлению в случае критических сбоев в IT-инфраструктуре компании. Отказ серверной или даже всего ЦОДа не должен надолго (в отдельных случаях речь идет о секундах) прерывать бизнес-процессы.

Но это не всё: после работ команда «Перфоманс Лаб» провела обучение сотрудников компании. Теперь они могут самостоятельно проводить дальнейшие тесты с помощью Boomq. Предлагая клиентам этот инструмент, мы предлагаем не просто разовую услугу по нагрузочному тестированию, а новый взгляд на процессы.

Во-первых, Boomq помогает автоматизировать и уменьшить затраты на нагрузочное тестирование, а во-вторых, сделать процесс прозрачнее и упростить тесты: в тех случаях, когда проверку проводят постоянно, с этим инструментом можно легко восстановить скрипты, которые использовались в прошлый раз.

Почему это важно

Доля безналичных платежей в этом году превысила прогнозы ЦБ: их доля в розничном обороте составляет 81,2%. Рынку важно адаптироваться под всё возрастающий запрос пользователей.

«Производительность сервисов для безналичных платежей помогает оптимизировать издержки, которые несет финансовое учреждение при эксплуатации. Тем самым можно увеличить количество устройств и точек для приема платежей, отсрочить процесс закупки серверного оборудования и не тратить на это направление больше денег, чем предусмотрено в бюджете. Доработки будут стоить существенно дороже».

Denis Streltsov avtor
Денис Стрельцов
директор по развитию

Компания, которой мы помогли, — ведущий эксперт в области таких решений для банков и бизнеса. Она обладает уникальными для рынка компетенциями в области платежного программного обеспечения: от обработки транзакций с использованием стандартных банковских карт до создания продуктов с использованием QR-платежей, биометрических транзакций и сложных интегрированных решений.

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

Нагрузочное тестирование —
это рост и гарантии

Держите бизнес под контролем — обратитесь
к инженерам «Перфоманс Лаб»

увеличьте производительность до максимума