A new collaboration project has been initiated with the team Spirals of INRIA Lille laboratory. In this project, we want to address the steering, orchestration, and maintenance mechanisms for our applications’ packaging, delivery, and deployment activities. The lack of formalization and traceability on the actions that are carried out for the deployment of our applications, and the fact that some of them are manual or must adapt to technical or functional specificities, creates a complexity that is difficult to manage only by using traditional continuous integration and continuous deployment (CI/CD) platforms. Moreover, this lack of visibility and mastery of an automated and controlled DevOps process represents a real obstacle to our growth, as Berger-Levrault is always intending to gain clients across the world.
Therefore, and with the aim of continuously improving our level of service and our clients’ confidence in the digital resources that we provide, we are considering, in this project, the management and monitoring of our deployment activities. The aim is to harness the deployment process, facilitate its implementation, and enhance its reliability. Hereinafter are some of the considered scientific and technical approaches :
A Metamodel and a Knowledge Base for exploiting deployment elements
Multiple information depict a deployment environment: deployment modes (On-premise, SaaS, IaaS, PaaS, hybrids, or multi-cloud), clients’ operating environments, characteristics of the systems to be deployed (versions, prerequisites, OS, space, browsers, etc.), patches and updates, etc. These pieces of information should not be only known by operations teams or be stocked in configuration files. We, therefore, aim to formalize a metamodel to represent and manipulate the elements that constitute a deployment. This permits the construction of a knowledge base that can be used as an input for automated configuration management systems. Selected leads to investigate are automatic approaches to discover and catalog deployment infrastructures and infrastructure as code techniques that allow the definition and storing of deployment contexts.
Monitoring of the deployment process
The objective here is to study the possibilities of retrieving information on the actions that are carried out, trace, and collect them to have an overview of deployments status and issues. This permits to improve feedback in case of problems or suspend the process to avoid data loss or service interruption during the deployment. CI/CD pipelines can be a way to perform such monitoring, but they allow per-project monitoring. We, hence, tested monitoring tools such as the combination of Prometheus and Grafana to provide in a single view a set of indicators about several projects’ pipelines. In its current state, the tested stack allows us to gather information about project repositories, code versioning, and build status. The status of delivery and deployment actions are yet to be monitored. We also need to investigate existing correlations among the depicted indicators to help with the diagnosis in case of issues. Moreover, the link with the deployment environments and the characteristics of the deployed applications must be highlighted.
Furthermore, we project to study the possibility of using machine learning techniques to make use of the collected data to perform predictions of deployment status, detect unusual behavior and learn to continually improve delivery and deployment activities. Monitoring is also essential if we are willing to repair (or automatic repair) actions (updating configurations, infrastructures, etc.) as a reaction to events perceived by the monitoring system. This will help maintain the delivery and deployment system and ensure its reliability.
Administration means for the configuration and deployment of our applications
The goal here is to facilitate the implementation of new deployments, with administration and configuration mean. To do so, we need an approach to help specify the deployment environments and the applications to deploy and administrative means for applying the depicted elements. This can be based on the above-mentioned metamodel coupled with a DSL (Domain Specific Language). Spirals team has worked on such DSLs in their research on Model-Driven Configuration Management of Cloud Applications. Those means have to take into account :
- Packaging several of our business applications to form a software suite, while being managed by a single administrator, without having to mobilize a dedicated administrator for each application in the suite
- The distribution of our applications, where an application can consist of interconnected parts running in distributed hosts
- The deployment of a subset of the functionalities of our application in the case of product lines for instance, or a subset of components allowing to build tailored applications
Infrastructure as code has proven to be a good lead for a systematic way to create and maintain infrastructure and deploy applications. A relevant question that one can raise is: to what extent can we supply our own applications with infrastructure as code techniques?
Finally, it is important to mention that BL-Forge, a Continuous Integration Platform has been set up by BL-Tech teams, with up to date DevOps tools (GitLab, GitLab-CI, Docker registry manager, SonarQube, Nexus, Ansible, Jenkins, etc.). This work on a platform to be used by all Berger Levrault instances shows a real commitment to the modernization of our delivery and deployment methods. We will, therefore, consider the compliance of any future propositions during this project with the requirements of this platform. We can also question the use of such a “modern” platform in the context of our Legacy applications. Feasibility analysis will be necessary along with the definition of the path to set up to reach this target.