What is a DevOps approach?
The term DevOps comes from the combination of the terms “development and operations” to express a convergence between the development (dev) teams and the operations (ops) teams. The aim of this approach is to get these two teams, which have historically been quite far apart in the product construction process, to work together.
In this way, the practices, tools, constraints and expectations of the development teams are taken into account and spread within the operations team and vice versa.
The main purpose of implementing a DevOps approach is to provide for two common situations that are now more acceptable in a context of permanent change and demand for responsiveness, efficiency and performance. The first is often the unsuitability of a deliverablethat has been tested and developed quickly to meet the needs of production operations; there can be problems related to security or the lack of clear logs. The second, which is just as problematic, comes from a lack of a well-defined environment for the acceptance phases, or the simple unavailability of the delivery teams, which therefore tends to slow down the process considerably.
The implementation of a DevOps approach triggers a reflection on all the steps necessary to build as quickly as possible a high quality, secure, high-performance deliverable that is in line with the customer's environment.
DevOps and 4DConcept
At 4DConcept, the architects are immersed in the development and operations teams. As they understand each other's language, they help with communication, from taking into account the needs and constraints of each team to the training and distribution of new tools. The DevOps approach can be seen in particular in the following areas:
- The construction of deliverables
- Dynamic environments
- Infrastructure as code
Build and deployment pipeline
The delivery process set up by 4D Concept allows the tests to be automated. It ensures not only the proper execution of the controls linked to the quality of the code, but also all the points linked to security in order to propose a correctly tested deliverable.
These delivery chains are based on the shared libraries specific to 4D Concept. Each new project can thus quickly integrate one or more delivery pipelines by assembling pre-existing bricks. The use of these common bricks also makes it possible to encourage quality requirements or to integrate additional steps to continuously improve our build processes, which is a fundamental element of the DevOps approach.
The implementation of minimum thresholds required on test indicators makes it possible to increase the quality of deliverables as the months go by and to ensure that best practices are strengthened in the development teams.
Docker and dynamic environments
Docker is a tool that packages all the components required to run an application or product in containers.
Each modification of the source code gives rise to a “containerized” version of the application. This means that operating teams can continuously deploy a version of the corresponding application.
This environment can easily be replicated by reusing the same containers on a developer workstation, a receiver or an environment for a customer demonstration, thus offering greater speed and flexibility in the various deployment cases.
It is possible to deploy multiple partitioned continuous integration environments within the same machine. These volatile environments, which are very easy to create and destroy, optimise resources and provide a complete environment in record time. For example, this can be very useful to provide a functional environment for the acceptance team or to provide in advance an environment for demonstrating an expected functionality.
By integrating the approach into the build pipeline, 4D Concept handles all the tasks of qualification, creation of a test environment and then its destruction in a fully automated way. As a result, we ensure safe, qualified, regression-free and secure deliverables to our clients, all in a minimum amount of time.
Infrastructure as code : IaC
IaC consists of dealing with the entire definition and maintenance of infrastructure in the form of source code. This amounts to scripting all the steps required to deploy, update and maintain environments in operational condition.
Different tools (Terraform, Packer, Ansible) are used depending on the target environment, but some bricks are common and maintained for the whole.
By extension, implementing IaC enables operations teams to adopt best practices that were previously specific to software development, in particular:
- The use of a source version manager: each source file is stored in a tool that records each modification.
- Peer review: each code change proposed by a team member is reviewed, challenged and potentially annotated by the other team members.
- Unit tests: the code is accompanied by a test, i.e. another repeatable code that validates the expected operation. This practice can be systematised thanks to tools integrated into the technology used (e.g., Molecule for Ansible). It ensures that the code meets expectations but provides documentation and a non-regression safety net for future developments of the same code.
By implementing this working method, 4D concept is continuously improving its quality standards.
Firstly, the code serves as documentation for the infrastructure elements. Passing on knowledge of the process is facilitated and anyone reading the code later on can get an exhaustive view of the elements deployed, guaranteeing good traceability of the work carried out.
Secondly, the code is variabilized so that it can be used in several contexts or on several different projects. This makes it possible to quickly set up new infrastructure and deploy patches on all environments using this code base.
Thirdly, as the code is reviewed, tested and everything goes through it, there is less room for human error. Each deployment is standardized regardless of who is in charge of running the scripts.
As the changes on the scripts are versioned, it is possible to audit each change made. This is an important contribution, particularly in the context of security audits: being able to trace who did what and for what purpose on infrastructure.
What are the benefits of DevOps?
All these practices linked to the DevOps approach within 4D Concept bring numerous benefits, particularly in terms of the quality of our deliverables, the performance of both products and teams, and the improved security of our solutions.
The quality of deliverables
The quality of the deliverables is the first area where we see great improvement after implementing a DevOps approach. As the build and delivery processes make all tests mandatory and automatic, and continuously track a large number of KPIs, there is almost no room for human error. Statistical analysis, non-regression, code quality, are also areas in which a policy of tightening minimum thresholds makes for a rapid increase in overall quality.
By automating a large number of recurring actions with little added value, the teams are freed up for work related to product and process improvement or for the tests themselves. As a result, each team member can devote more time to the code, or developing new features, than to the build and delivery process. Finally, the intrinsic performance of the products is included in the battery of tests at the end of the production line, and here too, expectations are increasingly stringent to guarantee our users ever more efficient solutions.
Implementing DevOps and Docker in 4D Concept's processes makes it possible to increase the level of product security to match their performance, not only through systematic testing and regularly raised requirements, but also through the responsiveness of the teams and the speed and ease of deployment of new security patches. In addition, Docker enables iso-production environments for further audits or pentests . Finally, it is now quick and easy to replicate patches from one environment to another, meaning that customer environments can be set up more quickly and securely.
DevOps for our customers?
Implementing DevOps at 4D Concept has had a positive impact on all our processes; our teams are working faster, more efficiently and more securely. But despite the highly technical aspects of the approach, the first to benefit from it are our customers.
Naturally, we carry out current projects in accordance with best practices in terms of production methodology, so that we can translate statements of needs more quickly. In short, our clients have more direct access to the development team and have a more direct influence on product development.
In addition, the product as such is more regularly and continuously enriched by feedback from our customers through the operations teams, via the various projects, guaranteeing that everyone benefits from the developments carried out in each project.
Finally, not only has the quality, performance and security of our solutions rapidly improved, but the solutions are also developed with a high level of technological and methodological confidence. Providing new patches or functionalities to our customers is easy and without any risk of regression.