На первый взгляд, это два непересекающихся мира. Но на практике, это не так.
Ниже дан краткий локальный комментарий к хорошей статье «Не спать! Как мы научились тиражировать релизы на 12000 касс за ночь» в части системы мониторинга качества обновления ПО и применению R в этой задаче.
Является продолжением предыдущих публикаций.
Еще раз немного про специфику задачи.
- Обновление ПО происходит на произвольной выборке касс. Есть просто список на обновление.
- Окно для обновления небольшое. Процесс обновления начинается в ночи и к ~6-7 утра по локальному времени все кассы должны быть уже в строю.
- Методика мониторинга более похожа на технологию Netflix в части виртуальных машин на ферме. Надо оперативно убедиться, что касса после обновления готова к продажам. Если что-то пошло не так, разбираться некогда. Необходимо оперативно откатываться на предыдущий рабочий релиз на этой кассе, а уже в оффлайне разработчики могут препарировать код.
- Заключение о качестве обновления делается по логам кассового ПО. Заключение строится не на отдельной метрике, а на совокупности состояний конечного автомата, реализуемого софтом касс. Запуск кассы — процесс, протяженный во времени, проходящий через массу различных статусов и состояний.
- Необходимо в режиме, близком к реальному, актуализировать статусы состояний касс и расставить приоритеты проблем не только с точки зрения отдельной кассы, но и с точки зрения всего магазина. Одна проблемная касса в гипермаркете менее проблемна, чем одна касса в магазине «у дома».
Никакой классический zabbix мониторинг для таких целей не подходит. Поэтому решение построили на базе упоминаемого в статье Системы «Бизнес-Мониторинг» (БМС). Более детально с Системой можно ознакомиться в материалах «#5 Moscow R Meetup». Там в комментариях ссылки на презентации и видео.
Всю аналитическую часть, а также АРМ собрали на базе R + Shiny, которые входят в блок «считалище» БМС. В результате ответственный за обновление получает на одном экране полную сводку о статусах, «раскрытие скобок» по запросу и подсказки к приоритезации действий.
Речь идет не про «революционность» и «уникальность», а про то, что подобная задача элегантно и просто закрывается средствами R.
Примеры скриншотов:
Предыдущая публикация — «Воспроизводимые вычисления в R. Как разделить код и данные?».