How we adjusted the process from storage to software licensing: SupplyLab project
Positive Technologies is a grocery company. This means that we develop a large number of products , and it is important to understand that all of them are boxed. Accordingly, we need to somehow deliver the solutions we have developed to the infrastructure of the final customer. Moreover, our software often has a complex configuration - there are many different components in it that must be installed on different target machines, and these computers have different roles, etc.
That is, we need to be able to release and deliver products through the Internet, and then also deploy them on the final infrastructure. In addition, we must not forget that not all customers buy everything they can - each product has its own types of licenses, implying access to certain functionality. So, you need to somehow make sure that our software not only gets to the client, but he can use exactly what he paid for. ')
To solve all these problems, we decided to develop a common system for publishing and updating software. The project was named SupplyLab, and today we would like to talk about this tool in more detail.
What should be able to system
Before proceeding to the creation of the system, we conducted an analysis and identified several of its functional features. So, she should be able to:
store release builds;
publish them;
license;
filter;
deliver software to customer infrastructure;
deploy it on this infrastructure;
configure the product for specific customer tasks.
All these tasks are performed by a huge number of programs and components, for example, storage can be performed using Yum and Nuget, licensing using Guardant and Gemalto Sentinel, and SaltStack or Ansible can be used for deployment. And how to combine all this diversity, and even make this solution cross-platform, running on any customer infrastructure (which we know nothing about in advance)?
SupplyLab: striving for the best combination.
As a result, we developed a system called SupplyLab, which combines a number of tools.
SaltStack is responsible for deployment;
Own Global Update Server (GUS) is used to publish updates;
Front Local Update Server (FLUS) is needed for delivery;
Artifactory - this system was chosen as a package repository;
LicenseLab - we could not find a ready-made licensing system on the market that would suit us, so we have to create it ourselves on the basis of Guardant and Gemalto Sentinel.
Let's talk about how the code "lives" in our system. After assembly, the package is stored in the Artifactory, then the release manager publishes it to the Global Update Server (this can be done automatically by selected criteria), and from there the code goes to Front Local Update servers that are deployed at specific sites. These servers are accessed by the SaltStack deployment tool - at the time of such a call, licensing is filtered (can the client get the update code).
One of the most important elements of the system is the licensing mechanism, which we get the name LicenseLab. Now we are developing this tool. At the moment, the ideology assumes the existence of a large number of licenses for one customer, and in each license there can be many soft keys.
In the end, the update deployment scheme using SupplyLab from the very beginning to the last stage looks like this:
We will be able to present the results of implementation and performance analysis of the system we are developing for SupplyLab next year.
Plans
We are not satisfied with what has been achieved, it is obvious that we still have a lot of work to do. In the future, we plan to refine the system and introduce new components into it. In particular, in the plans:
Creating a common LicenseServer on the customer side;
Identification of the installation of the customer will be carried out through the developed LicenseServer.
We also plan to expand the number of software and hardware manufacturers in order not to become attached to solutions of any one company.
In addition, we want to establish integration with CMS key manufacturers (for example, Gemalto) - this simplifies and speeds up work with keys.
PS The story about our system SupplyLab was presented within the DevOps-mitap, which took place recently in Moscow.
The link presents presentations of 16 reports presented during the event. All presentations and video presentations will be added to the table at the end of this topic-announcement .