DevOps is a software development paradigm that is increasingly popular in enterprise IT departments. This methodology is spreading because of its ability to provide key benefits. For example, by automating the build, test, and deployment phases, DevOps allows not only to reduce software release costs but also to increase the speed and frequency of releases themselves, without compromising the quality, reliability, and solidity of the code developed.
DevOps definition and origins
In the DevOps model – a contraction of the words ‘development’ (Dev) and ‘operations’ (Ops), which are the teams of professionals that traditionally form the IT department – feature teams find their place. These teams help to build a fully automated code distribution pipeline – by sharing practices, working principles, and using certain software tools throughout the development cycle.
The DevOps methodology was illustrated for the first time in 2009 at the O’Reilly Velocity Conference, by John Allspaw, software engineer, and Paul Hammond, web developer, at the time both employed in Flickr, the global online photo management and sharing platform.
DevOps integrates Agile and Lean Software Development (LSD) methods with a number of other practices, which extend the concepts of agility and efficiency beyond the domain of software development to encompass the entire code development cycle (SDLC) and the IT systems necessary for the functioning of the code itself.
Essential cornerstones of DevOps
The main pillars of DevOps are essentially three:
1) Infrastructure automation
By adopting infrastructure management methods such as “Infrastructure as Code” (IaC), it is possible to automate the deployment of the entire IT environment required for the creation and operation of the code via scripts. The scripts automatically configure the hardware, operating systems, networking, containers, and virtual machines. The IaC model also allows you to automatically manage testing activities, for example, by configuring and standardizing the implementation of environments and automating the execution of tests at an end-to-end level.
2) Iterative CI / CD development (continuous integration / continuous delivery / continuous deployment)
On the software development side, the CI / CD development practice automates, accelerates, and streamlines the development, testing, and deployment of the application code, making it possible to create a fully integrated software deployment pipeline.
3) Quality control and systems maintenance
Thanks to DevOps, quality control through test automation, software updates, and IT systems maintenance are continuously and automatically ensured throughout the code development cycle. This allows for improved IT governance, despite the complexity of the code and the increase in the speed and frequency of new software versions’ release. This is because, as already mentioned, through the IaC paradigm it is possible to automate not only the initial deployment of the IT infrastructure but also the subsequent version control and maintenance activities of server and system configurations in test and production environments that, otherwise, should be managed manually each time.