Як ми налагодили процес від зберігання до ліцензування софта: проект SupplyLab



Positive Technologies — продуктова компанія. Це означає, що ми розробляємо велику кількість продуктів, і важливо розуміти, що всі вони «коробкові». Відповідно, нам потрібно якимось чином доставляти розроблені нами рішення до інфраструктури кінцевого замовника. При цьому, найчастіше наш софт володіє складною конфігурацією — в ньому багато різних компонентів, які повинні встановлюватися на різні цільові машини, а ці комп'ютери мають різними ролями і т. п.

Тобто, нам потрібно вміти релізувати і доставляти продукти через інтернет, а потім ще і розгортати їх на кінцевій інфраструктурі. Крім того, не можна забувати і про те, що не всі замовники купують все, що можна — у кожного продукту є свої типи ліцензій, які передбачають доступ до певної функціональності. А значить, потрібно зробити так, щоб наш софт не лише потрапив до клієнта, але і він зміг використовувати саме те, за що заплатив.

Для вирішення всіх цих завдань ми вирішили розробити загальну систему публікації та оновлення софта. Проект отримав назву SupplyLab, і сьогодні ми хотіли б розповісти про цьому інструменті докладніше.

Що повинна вміти система

Перед тим, як приступити до створення системи, ми провели аналіз і виділили кілька її функціональних особливостей. Отже, вона повинна вміти:

  • зберігати релизные складання;
  • публікувати їх;
  • ліцензувати;
  • фільтрувати;
  • доставляти софт до інфраструктури замовника;
  • розгортати його на цій інфраструктурі;
  • конфігурувати продукт під конкретні завдання замовника.
За виконання всіх цих завдань відповідає величезна кількість програм і компонентів, наприклад, зберігання можна здійснювати за допомогою Yum і Nuget, ліцензування з допомогою Guardant і Gemalto Sentinel, а для розгортання застосовувати SaltStack або Ansible. І як об'єднати все це різноманіття, та ще й зробити це рішення кросплатформним, що працює на будь-інфраструктури замовника (про яку нам заздалегідь нічого не відомо)?

SupplyLab: прагнення до оптимальної комбінації

У підсумку ми розробили систему під назвою SupplyLab, яка об'єднує ряд інструментів.

  • SaltStack відповідає за розгортання;
  • Власний Global Update Server (GUS) використовується для публікації оновлення;
  • Front Local Server Update (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 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.