What are the best DevOps practices and how can they improve software development?
DevOps is a framework of practices used in software engineering. It describes ways that operation and development engineers can work together over the entire product lifecycle.
“Dev” is shorthand for the people involved in developing a software product or service; and “Ops” refers to those involved in operations, such as systems engineers, system administrators, operations staff and security professionals.
So, what are DevOps practices, and how can they help organisations to innovate?
DevOps practices are designed to remove barriers between development teams and operations teams. The goal is to develop a close collaboration between customers, product management, developers and systems engineers, in order to rapidly develop and improve software products.
In DevOps, the developer side and the operations side pay less attention to their traditional roles and titles. Instead, they focus on working together to rapidly meet the needs of the end user.
There is no definitive list of standard DevOps practices. Instead, DevOps teams use a variety of practices and tools that aim to automate and streamline the software development and infrastructure management processes.
Microservices and continuous integration practices
A key practice and a hallmark of DevOps is a focus on improving communication and collaboration. This involves physically bringing together the development and operations teams. It also includes setting up innovative ways to facilitate information sharing, such as the use of chat applications, project tracking systems and wikis. Speeding up communications makes it easier for all the parts of the organisation to collaborate.
Microservices is another key DevOps practice. In this approach, each application is built as a set of small services. Typically, each service has a single purpose and communicates with other services through a well-defined interface, such as an application programming interface (API). An API is a set of routines, protocols and tools for building software applications; it specifies how software components should interact.
Microservices can either be launched individually, or as part of a group of services. Using a microservices approach means that new software is released more frequently. This, in turn, can present operational challenges, such as how to quickly identify and eliminate bugs. Some common DevOps practices aiming to solve these challenges include continuous integration and continuous delivery.
In continuous integration, software developers frequently merge their code changes together into a central repository. Automated builds and test runs are then made from the code in the repository. This enables bugs to be identified, and reduces the time it takes to validate and release new software updates.
Moreover, in continuous delivery, all changes that are made to the code are continuously tested and released to production. This allows developers to constantly have products ready for market that have already passed through the standardised testing process.
Another DevOps practice is to treat changes to the system infrastructure in a similar way to changes to software code. This practice is called ‘infrastructure as code’ (IoS). In IoS practice, software tools are used to reconfigure system hardware. These tools allow developers and system administrators to manage infrastructure using software (code), as opposed to manually setting up and configuring servers and other hardware. IoS approaches are often used in cloud computing.
One benefit of using an IoS approach is that it allows changes to the system to be automatically tracked, and any non-compliant software can be flagged for investigation or automatically brought back into compliance. Active monitoring of a service or product is another important DevOps practice, especially when services need to be available 24/7.
Practices such as creating alerts or performing real-time analysis of data help organisations to monitor their services. Together, these automation practices help engineers track the performance of applications and infrastructure, so they can react quickly to problems.
Popular DevOps tools
Although DevOps is a very recent development, there are already a number of tools available that help engineers integrate DevOps practices. For example, Git is a distributed source code management tool which allows users to track the progress of their development work.
Users can save different versions of their source code, create separate branches and merge new features only when they’re ready to go. Jenkins and Bamboo are tools that allow users to automate the different stages of their development pipeline, from build to deployment. Docker is one of the most popular DevOps tools. It allows distributed development and automates software deployment.
Another very popular IoS tool is Puppet, which allows users to manage their IoS code and automates infrastructure management.
The future of DevOps
DevOps is still in its infancy, and there is no single set of practices that are used universally. There is even disagreement about whether DevOps is a philosophy, a movement or an operational framework.
According to the DevOps Institute, the core DevOps principles are: “go faster, shorten feedback loops, experiment and learn, cultural transformation, and deliver business and customer value constantly and consistently.” As DevOps practices become more common, there is the potential to deliver greater transformation faster than ever.
24th July 2019