Pull to refresh

Применение R в задаче обновления кассового ПО

Reading time 2 min
Views 1.8K

На первый взгляд, это два непересекающихся мира. Но на практике, это не так.


Ниже дан краткий локальный комментарий к хорошей статье «Не спать! Как мы научились тиражировать релизы на 12000 касс за ночь» в части системы мониторинга качества обновления ПО и применению R в этой задаче.


Является продолжением предыдущих публикаций.


Еще раз немного про специфику задачи.


  1. Обновление ПО происходит на произвольной выборке касс. Есть просто список на обновление.
  2. Окно для обновления небольшое. Процесс обновления начинается в ночи и к ~6-7 утра по локальному времени все кассы должны быть уже в строю.
  3. Методика мониторинга более похожа на технологию Netflix в части виртуальных машин на ферме. Надо оперативно убедиться, что касса после обновления готова к продажам. Если что-то пошло не так, разбираться некогда. Необходимо оперативно откатываться на предыдущий рабочий релиз на этой кассе, а уже в оффлайне разработчики могут препарировать код.
  4. Заключение о качестве обновления делается по логам кассового ПО. Заключение строится не на отдельной метрике, а на совокупности состояний конечного автомата, реализуемого софтом касс. Запуск кассы — процесс, протяженный во времени, проходящий через массу различных статусов и состояний.
  5. Необходимо в режиме, близком к реальному, актуализировать статусы состояний касс и расставить приоритеты проблем не только с точки зрения отдельной кассы, но и с точки зрения всего магазина. Одна проблемная касса в гипермаркете менее проблемна, чем одна касса в магазине «у дома».

Никакой классический zabbix мониторинг для таких целей не подходит. Поэтому решение построили на базе упоминаемого в статье Системы «Бизнес-Мониторинг» (БМС). Более детально с Системой можно ознакомиться в материалах «#5 Moscow R Meetup». Там в комментариях ссылки на презентации и видео.


Всю аналитическую часть, а также АРМ собрали на базе R + Shiny, которые входят в блок «считалище» БМС. В результате ответственный за обновление получает на одном экране полную сводку о статусах, «раскрытие скобок» по запросу и подсказки к приоритезации действий.


Речь идет не про «революционность» и «уникальность», а про то, что подобная задача элегантно и просто закрывается средствами R.


Примеры скриншотов:


Представление в разрезе магазинов


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


Предыдущая публикация — «Воспроизводимые вычисления в R. Как разделить код и данные?».

Tags:
Hubs:
+6
Comments 4
Comments Comments 4

Articles