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.
DevOps, a question of cultural change
Speaking of DevOps tools, we can mention numerous tools categories, often open-source, each dedicated to specific phases of the development cycle. There are version control tools, such as Git, which keep track of all changes in the code base; pipeline automation servers like Jenkins; IaC tools like Ansible. There are continuous monitoring tools like Kibana and container orchestration softwares like Kubernetes. There are also platforms that allow you to organize and control all these tools from a single console, such as the Mia-Platform DevOps Console.
Adopting a DevOps strategy, however, does not only mean identifying and selecting certain tools and technologies for automating software development and IT infrastructure deployment.
These technological innovations, in fact, are not enough, if a real cultural change is not implemented, to overcome the traditional separation of skills and responsibilities between teams, to embrace a way of working in which new tools serve to generate communication between processes and collaboration between people.
The benefits and other DevOps-based paradigms
Among the key benefits that DevOps brings to an IT organization we find:
- Acceleration of the creation, testing, updating, and release of the application code;
- Enhancement of security and reliability of processes and code;
- Constant improvement of the SDLC, thanks to continuous feedback;
- Continuous adaptability to market changes and user requests.
The popularity of DevOps has led to the birth of other models, which intend to reproduce the principles of DevOps in specific contexts. Among these, there are DataOps, for data analysis, and GitOps, for version control on all the elements that come into play in the development cycle.
Migrating to DevOps cannot be accomplished by simply installing and using some tools and technologies: DevOps is a software development philosophy that can only be achieved through a path of cultural change and renovation of the work methods within the IT department. Today, for companies, adopting the DevOps paradigm is an essential step to be able to innovate and enhance software development methodologies, and keep pace with market dynamics.