Привет, Хабр! В прошлый раз мы показали, как переоборудовали переговорную комнату для совещаний. Сегодня хотим поделиться своей историей разработки автоматизированной системы выдачи ИТ-оборудования — IT-Point.
С чего всё начиналось
Сотрудники техподдержки в BIOCAD ежемесячно получают тысячи запросов на выдачу мышек, клавиатур, гарнитур, батареек, салфеток для мониторов, баллончиков со сжатым воздухом. Обеспечение сотрудников периферией и расходниками — важная задача, однако она отнимала время у специалистов ИТ-службы. Всё началось в 2018 году, когда мы решили установить специальные шкафчики, из которых коллеги могли самостоятельно брать необходимое оборудование без участия техподдержки. Изначально это были обычные тумбочки с наклейкой IT-Point, которые мы разместили в каждом офисе. Когда специалист забирал периферию из ящика, он сканировал QR-код с листочка и формировал запрос в Jira для отчетности и пополнения запасов. Конечно, мы понимали, что наша схема выдачи неидеальна, но такой подход должен был помочь вести учет техники. Однако коллеги забывали отмечать позиции или вносили в Jira неправильные данные — в таких условиях вести статистику было практически нереально. В 2020 году мы принялись совершенствовать систему. Первым делом выписали ключевые трудности, возможные пути их решения и сформировали список требований к новой системе выдачи периферии и расходников: Автоматизировать выдачу ИТ-оборудования; Ввести контроль и логирование наполнения/выдачи; Реализовать сбор статистики по выданному оборудованию и построить аналитику для дальнейшего выдвижения гипотез; Минимизировать личное взаимодействие со специалистами техподдержки (на тот момент действовали строгие ограничения из-за коронавируса); Получать уведомления об остатках в IT-Point в онлайн-режиме. Примерно в то же время мы увидели на Хабре интересный кейс, который вдохновил нас на перезапуск проекта. Так, мы решили заменить деревянную тумбочку на вендинговый автомат. От идеи к реализации Изначально планировали купить уже готовый вендомат и синхронизировать его софт с нашими системами. В свое время мы даже нарисовали 3D-модель IT-Point, которую хотели бы видеть: Но на практике все оказалось значительно сложнее — под такой продукт на рынке просто не было готовой ниши. Тогда мы решили закупить торговые вендинговые машины и провели тендер, что тоже было непросто — в разгар пандемии вендоматы были «на вес золота», а в России их производит не так много компаний. Спустя какое-то время мы, наконец, получили первый тестовый образец, но он «выдавал товар» только за реальные деньги — по карте или за наличные. Естественно, это нас не устроило, поскольку мы выдаем сотрудникам оборудование бесплатно. В то же время аппарат имел низкую функциональность и не умел генерировать нужную нам отчетность, поэтому было принято решение разрабатывать свой софт самостоятельно. Как мы доработали вендомат Для новой версии IT-Point мы использовали следующий стек технологий: СУБД — PostgreSQL; Сайт — JS, JQuery, Chart JS, PHP; Окружение — Kubernetes; Вендомат + пик-поинт — JAVA. В проекте мы используем два типа окружений в Kubernetes: Dev и Prod. Решили отказаться от среды Test, так как проект и команда относительно небольшие. Весь код мы храним в GitLab, а для автоматизации его сборки и поставки применяем GitLab CI/CD. Что касается приложения, то мы собираем два docker-образа. Первый — непосредственно для приложения на php-fpm, второй — для автоматизации управления миграциями БД на Liquibase 4.5.0. На базе последнего также развертывается init-контейнер при каждом запуске пода. В окружении Prod два контейнера — непосредственно приложение и веб-сервер nginx. Переменные мы храним в переменных окружения GitLab и поставляем в виде секретов или конфигмапов. Также есть две cron-задачи. Одна запускается ежедневно в 8:30 и обновляет список сотрудников из JSON-выгрузки. Вторая взаимодействует с Jira Service Management и позволяет менять статус задач, писать комментарии, назначать исполнителей и прочее. Для обеспечения бесперебойного взаимодействия с сервером мы установили Raspberry Pi 4. На каждой из них развернут свой socket-сервер и настроен обмен по TCP — примерно так мы реализовали REST API для общения с платой вендомата. Все запросы передаются в зашифрованном виде по AES-128-CBC, и IT-Point не примет команды, которые не может расшифровать. Также на вендомате настроен автозапуск, все ошибки отрабатываются внутри самого решения. Пользователи работают не с десктопным приложением, а с его веб-версией через киоск-браузер. Сам Raspberry Pi 4 подключен к дисплею Raspberry Pi Waveshare [RA335] 10.1, который отображает всю необходимую информацию через браузер. Как это работает с точки зрения сотрудника Структура IT-Point поделена на две части: вендомат и пик-поинт. Вендомат — основной модуль, который выдает сотрудникам мышки, клавиатуры, гарнитуры, батарейки и прочие мелочи. Пик-поинт — это дополнительный модуль для нетипового и габаритного оборудования (ноутбуков, ПК, смартфонов). В общем случае процесс получения периферии выглядит следующим образом: Авторизация. Сотрудник подходит к IT-Point, прикладывает пропуск к считывателю, система отправляет запрос на проверку данных — ФИО, должность, отдел, категория сотрудника (для определения лимитов), статус (уволен или работает). Выбор оборудования (пик-поинт). После авторизации планшет выдает сообщение о необходимости забрать оборудование из пик-поинта (если оно там есть). Сотрудник может забрать гаджет сразу или отложить на потом. Во втором случае выдается уведомление о сроке хранения оборудования. Когда сотрудник взял предназначенное ему устройство, он закрывает ячейку и подтверждает операцию с помощью соответствующей кнопки. Выбор оборудования (вендомат). Сотрудник выбирает устройство из списка, и оно падает в специальный лоток с полки выдачи. Процесс фиксирует датчик падения. Чтобы устройства не разбились, все они находятся в заводских упаковках, а тяжелые гаджеты размещены внизу. В то же время лоток выдачи обклеен мягким поролоном. Завершение сеанса. Если сотрудник в течение минуты не подтверждает получение (например, он забрал клавиатуру и ушел), мы автоматически завершаем сессию и считаем, что оборудование выдано. Если в пик-поинте нет необходимого девайса, то мы сразу переходим к модулю вендомата. Перед сотрудником открывается каталог доступных гаджетов в зависимости от его должности, категории и отдела. Пополнение запасов Мы связали IT-Point с Jira и научили его создавать и комментировать задачи, изменять статусы, закрывать и устанавливать приоритеты. Например, когда объем той или иной позиции падает ниже 30%, вендинговый аппарат подключатся по API к Jira и формирует задачу на пополнение. Если наполненность упала до 10%, а ИТ-специалисты до сих пор не доложили устройства в вендомат, он отправляет комментарий об остатке в 10% и повышает приоритет задачи. Как только техподдержка пополнит запасы, IT-Point самостоятельно её закроет. Если оборудование лежит в пик-поинте, то в Jira есть комментарии о необходимости его забрать, данные о сроках хранения и успешной выдаче. Также мы можем автоматически закрывать и отменять задачи в Jira Service Management. Как выглядит веб-сервис Начальная страница веб-сервиса последней версии IT-Point выглядит следующим образом: На главном экране мы видим окно статуса вендомата — его IP-адрес, категории товаров, наполненность. Здесь мы можем установить лимиты, при достижении которых будут формироваться задачи в Jira Service Desk. Также мы можем смотреть логи выдачи оборудования: сбои, пополнения, ошибки при сканировании пропусков сотрудников. На странице графиков и отчетов мы видим статистику по каждому вендомату IT-Point. Есть фильтры по каталогу выдаваемого оборудования и периоду (день, месяц, квартал, год, произвольный отрезок), а также возможность выбирать различные форматы отображения графиков. На странице настроек групп доступа мы можем создавать, редактировать и удалять группы доступа. Мы выделили а) базовые группы с лимитами для всех, б) дополнительные группы, расширяющие возможности базовых групп для определенных категорий сотрудников, а также в) запрещающие группы, которые позволяют полностью запретить для выдачу одного или нескольких типов товара для категории сотрудников. В «Оборудование» мы добавляем новые устройства, редактируем и удаляем неиспользуемые. Еще мы можем настраивать периоды, в которые будут срабатывать сформированные группы доступа. Ну и, конечно же, стандартная функциональность — поиск по всем ключевым полям. Что в итоге В течение года над проектом работала небольшая команда из четырех человек. За это время мы внесли структурные изменения в конфигурацию купленного торгового вендомата: Выровняли лицевую панель (выполнили газоэлектросварку); Изменили количество полок, двигателей и разделителей под наши потребности. Часть двигателей перепаяли, чтобы они могли работать с тяжелой техникой; Убрали приемник купюр и стандартный экран — вместо них поставили Raspberry Pi Waveshare [RA335] 10.1; Убрали антивандальный замок с лицевой панели и поставили более простой замок с верхней части вендомата; Создали уникальный дизайн-макет под корпоративный стиль компании. Обклеили вендомат и пик-поинт. Затонировали белой непрозрачной пленкой ячейки пик-поинта. Вот так выглядят наши установки после всех изменений: Таким образом, в финальной версии IT-Point мы: Автоматизировали выдачу ИТ-оборудования разных габаритов с минимальным привлечением специалистов техподдержки; Создали веб-сервис, который позволяет вести учет выданной техники, собирать логи, определять наполненность IT-Point’ов; Начали получать уведомления об остатках в вендоматах с интеграцией с Jira Service Management; Создали гибкую систему настройки, выдачи, запрета групп в зависимости от различных атрибутов сотрудников. В целом внедрение новой системы положительно отразилось на рабочих процессах. Мы «разгрузили» специалистов ИТ и уменьшили срок выдачи оборудования с нескольких часов до минут. За полгода через IT-Point мы распределили 1028 единиц техники и сэкономили больше 167 рабочих часов. И еще немного статистики: Каждый вендомат вмещает в себя 206 единиц оборудования; Самый популярный товар у сотрудников — беспроводная мышь; В среднем каждый IT-Point выдает от 30 до 50 мышек ежемесячно — приблизительно 80% от общей выдачи мышек в компании; Чаще всего вендоматом пользуются по понедельникам, так как выходят новые сотрудники; Мы пополняем IT-Point раз в неделю (преимущественно в среду). В будущем мы планируем масштабировать проект на все офисы компании в России и адаптировать формат под международные представительства. Над проектом работала команда Департамента инфраструктурных решений BIOCAD. Статью для вас готовил Денис Ситников, Head of IT-Support BIOCAD.. Больше о проектах BIOCAD в нашем блоге на Хабре: