Русский
Русский
English
Статистика
Реклама

История про Гену, Чебурашку и тестирование производительности реактивного приложения, работающего на Raspberry Pi

(Проект и персонажи вымышлены, любые совпадения случайны)

- Чебуршка, нам нужно начать поставки нашей новой системы по мониторингу и управлению апельсиновыми плантациями через три месяца, а данных, какую максимальную нагрузку сможет поддерживать наша система - нет! Да и в стабильности работы нашей системы продолжительное время мы не уверены...

- Геннадий, давай я тебе напомню, что у нас не простой веб сервис, который можно нагрузить запросами при помощи JMeter и получить показатель в секунду. У насреактивная система по обработке потока данных и принятию решений в реальном времени, работающая на Raspberry Pi, которая должна решать задачи по мониторингу, управлению и увеличению эффективности апельсиновой плантации с минимальным энергопотреблением. Давай я тебе напомню архитектуру нашего приложения:

(Чебурашка быстро нарисовал на доске следующую диаграмму для Гены)

Архитектура системы управления апельсиновой плантациейАрхитектура системы управления апельсиновой плантацией

- Ты смеешься надо мной, Чебурашка?! Я же на английском ничего не понимаю!

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

- Чебурашка, я тебе вопрос о производительности задал! Я не просил пересказывать отрывок из презентации для инвесторов... Давай ближе к теме!

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

  1. Какой максимальный размер апельсиновой плантации, управление которой наша система поддерживает?

  2. Как продолжительно система может работать на плантации данного размера?

  3. Как система ведет себя в критичных условиях (пиковая нагрузка, нехватка места в хранилище, отключение от источника питания) и как успешно восстанавливается?

Прежде чем перейти к решению данных вопросов, давайте разберем виды тестов производительности:

Throughput
Тесты скорости системы

Load
Нагрузочные тесты

Peak/Stress/Endurance
Стресс тесты

Goal
Цель

How much data per second can the system handle?
(Пропускная способность системы)

How the system behaves under real-life load during the time?
(Как система ведет себя при продолжительной нормальной нагрузке?)

What is the limit for the system?
(Как ведет себя система на пределе и где этот предел?)

Issues to find
Помогает найти проблемы

Bottlenecks
(Узкие места)

Memory leaks
(Утечки памяти)

Concurrency issues
(Проблемы конкурентной работы с данными)

High CPU / RAM / Disk / Network of individual component
(Избыточное потребление ресурсов)

Hardware issues, for example overheating
(Технические проблемы, например перегрев)

Data corruption
(Повреждение данных)

Hardware corruption
(Физические повреждения системы)

Recovery issues
(Проблемы восстановления после сбоев)

- Вот, Чебурашка, можешь ведь изъясняться и на русском, когда захочешь!

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

- Ты же умный парень, Чебурашка! Я помню, что когда ты задаешь мне вопрос, у тебя, как правило, уже есть варианты ответа.

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

- Отлично, так и сделаем! Я согласую это с заказчиками прямо сегодня!

- Геннадий, давай я тебе расскажу об отдельном приложении, которое я разработал специально для проведения всех названных выше типов тестов производительности. Это приложение отвечает за запуск сценариев тестов, управление эмуляторами, сбор данных потребления ресурсов (CPU, Memory, Disk I/O, DIsk space usage, Network I/O) всей системой, так и отдельными компонентами, количество ошибок в логах, пропускную способность системы и целостность данных.

- Почему ты не использовал какое-либо готовое решение? Я слышал про такие инструменты для нагрузочного тестирования, как Gatling или Tank от Яндекса?

- Хороший вопрос. Я изучил возможности данных инструментов и нашел их недостаточно гибкими для наших задач. Было принято решение разработать систему с нуля. Коротко опишу данную систему:

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

Приложение тестов производительности поддерживает как тестирование всего приложения, включая UI (который, в нашем случае является толстым клиентом и выполняет определенное количество интенсивных операций с данными), так и отдельных частей и компонентов.

Через пару месяцев...

- Добрый день, Чебурашка! Какие результаты нагрузочных тестов?

- Добрый день, Геннадий! При помощи нашей системы тестов производительности мы смогли обнаружить и исправить множество дефектов и узких мест, также мы внедрили нагрузочные тесты в CI/CD Pipeline и мы запускаем их регулярно.

Мы можем сказать, что:

  1. Один экземпляр системы способен работать на плантации площадью до 5 гектаров с количеством деревьев до 1250 штук (Далее: "стандартные условия").

  2. Система с хранилищем в 128 Гб в стандартных условиях способна непрерывно работать более 1 месяца.

  3. При экстренном отключении, данные остаются на энергонезависимом хранилище. Система автоматически запуститься и продолжит работу при восстановлении питания.

- Приятно слышать, Чебурашка! Будем планировать поставку. Надеюсь, ты не собрался в отпуск после проделанной работы. Ты ведь и так там был не давно, в позапрошлом году. А нам теперь нужно будет срочно спроектировать следующую версию системы, которая сможет контролировать работу сборщиков урожая...

- Обсудим. Но это уже другая история...

Источник: habr.com
К списку статей
Опубликовано: 24.04.2021 10:05:15
0

Сейчас читают

Комментариев (0)
Имя
Электронная почта

Высокая производительность

Тестирование it-систем

Анализ и проектирование систем

Разработка на raspberry pi

Performance testing

Performance tests

Reactive systems

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru