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 докладов, представленных в ходе мероприятия. Все презентации и видео выступлений будут добавлены в таблицу в конце этого топика-анонса.

Автор: Александр Паздников
Поделиться с друзьями
-->

Комментарии (0)