Как мы наладили процесс от хранения до лицензирования софта: проект SupplyLab



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

    Автор: Александр Паздников
    Positive Technologies 278,85
    Компания
    Поделиться публикацией

    Вакансии компании Positive Technologies

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

    Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

    Самое читаемое