Positive Technologies — продуктовая компания. Это значит, что мы разрабатываем большое количество продуктов, и важно понимать, что все они «коробочные». Соответственно, нам нужно каким-то образом доставлять разработанные нами решения до инфраструктуры конечного заказчика. При этом, зачастую наш софт обладает сложной конфигурацией — в нем много различных компонентов, которые должны устанавливаться на различные целевые машины, а эти компьютеры обладают разными ролями и т.п.
То есть, нам нужно уметь релизить и доставлять продукты через интернет, а затем еще и развертывать их на конечной инфраструктуре. Кроме того, нельзя забывать и о том, что не все заказчики покупают все, что можно — у каждого продукта есть свои типы лицензий, подразумевающие доступ к определенной функциональности. А значит, нужно как-то сделать так, чтобы наш софт не только попал к клиенту, но и он смог использовать именно то, за что заплатил.
Для решения всех этих задач мы решили разработать общую систему публикации и обновления софта. Проект получил название SupplyLab, и сегодня мы хотели бы рассказать об этом инструменте подробнее.
Что должна уметь система
Перед тем, как приступить к созданию системы, мы провели анализ и выделили несколько ее функциональных особенностей. Итак, она должна уметь:
- хранить релизные сборки;
- публиковать их;
- лицензировать;
- фильтровать;
- доставлять софт до инфраструктуры заказчика;
- развертывать его на этой инфраструктуре;
- конфигурировать продукт под конкретные задачи заказчика.
За выполнение всех этих задач отвечает огромное количество программ и компонентов, например, хранение можно осуществлять с помощью Yum и Nuget, лицензирование с помощью Guardant и Gemalto Sentinel, а для развертывания применять SaltStack или Ansible. И как объединить все это многообразие, да еще сделать это решение кроссплатформенным, работающем на любой инфраструктуре заказчика (о которой нам заранее ничего не известно)?
SupplyLab: стремление к оптимальной комбинации
В итоге мы разработали систему под названием SupplyLab, которая объединяет ряд инструментов.
- SaltStack отвечает за развертывание;
- Собственный Global Update Server (GUS) используется для публикации обновлений;
- Front Local Update Server (FLUS) нужен для доставки;
- Artifactory — эта система была выбрана в качестве хранилища пакетов;
- LicenceLab — мы не смогли найти на рынке готовую систему лицензирования кода, которая бы нас устроила, поэтому нам предстоит создать ее самим на базе Guardant и Gemalto Sentinel.
Поговорим о том, как код «живет» в нашей системе. После сборки пакет попадает в Артифакторий на хранение, затем релиз-менеджер публикует его на Global Update Server (это может осуществляться и автоматически по выбранным критериями), оттуда код попадает на Front Local Update-серверы, которые развернуты на конкретных площадках. К этим серверам обращается инструмент развертывания SaltStack — в момент такого обращения происходит фильтрация по лицензированию (может ли клиент получить код обновления).
Один из важнейших элементов системы — механизм лицензирования, получивший у нас название LicenseLab. Сейчас мы разрабатываем этот инструмент. На данный момент идеология предполагает наличие большого количества лицензий у одного заказчика, а в каждой лицензии может быть множество софт-ключей.
В конечном итоге схема развертывания обновлений с помощью SupplyLab от самого начала до последнего этапа выглядит вот так:
Итоги внедрения и анализ производительности разрабатываемой нами системы SupplyLab мы сможем представить уже в следующем году.
Планы
Мы не останавливаемся на достигнутом, очевидно, что нам предстоит еще много работы. В дальнейшем мы планируем дорабатывать систему и вводить в нее новые компоненты. В частности, в планах:
- Создание общего LicenseServer на стороне заказчика;
- Идентификация установки заказчика будет осуществляться через разрабатываемый LicenseServer.
- Также мы планируем расширить число software и hardware производителей, чтобы не привязываться к решениям какой-то одной компании.
- Кроме того, хотим наладить интеграцию с CMS производителей ключей (например, Gemalto) — это упрощает и ускоряет работу с ключами.
P. S. Рассказ о нашей системе SupplyLab был представлен в рамках DevOps-митапа, который состоялся недавно в Москве.
Отдельные части системы SupplyLab по мере завершения разработки будут выкладываться в репозиторий открытого сообщества DevOpsHQ.
По ссылке представлены презентации 16 докладов, представленных в ходе мероприятия. Все презентации и видео выступлений будут добавлены в таблицу в конце этого топика-анонса.
Автор: Александр Паздников
Поделиться с друзьями