The statistics are impressive. In a business world now driven by software, enterprises and organizations can speed up their application development cycles by a factor of 30, yet with 50 percent fewer failures. These achievements come from using DevOps, which represents a fundamental change in the way IT development, operations, and service delivery are done. Put simply, DevOps is IT developers and IT operations staff working together, instead of being two separate groups, often with diverging goals.
The Challenge of Making and Releasing Software
With the old way of making and releasing software, developers produced code and tested it on their development machines. They then may navigate through a multi-tier environment for test, integration and stage before they then handed it over to IT operations for deployment in a production environment. However, these real world conditions and machine configurations were often still different than stage for the code to run successfully. Developers had to rework the code, IT operations had to potentially update systems and redeploy, and there was a lengthy to-and-fro cycle to get any useful results.
How DevOps Improves the Process
With the new way, meaning the DevOps way, developers and operations staff work together. Code is produced together with the infrastructure information needed to run in the real world. Workflows are automated, code is released more rapidly, in a more reliable and more consistent way, and code fixes are accelerated too. DevOps tools are then used in the following stages of the code development and release cycle:
- Code version control. Code is stored in a way that lets developers work on different parts at the same time. Afterwards, the changes are merged back into one new master version. Version control applies to application code and also other code, such as configuration code for servers running the application code in production.
- Continuous integration. Developers may work on separate parts of code, but all the parts must also work together. By bringing together new developments more frequently and testing them together, any problems are found faster. Continuous integration can be automated and triggered every time a new master version of code is produced.
- Applications often need to access other modules such as specific runtime libraries, in order to run. Instead of relying on other servers to have the right modules available, the applications and the modules can be put into a container, which is then portable and works across many servers.
- Code deployment. After code has been developed and integrated (and successfully tested), the next step is to put it into production. This may mean installation across many servers in different locations. Automated deployment allows configurations to be applied in a repeatable and consistent way.
- Performance and log monitoring. By measuring and monitoring applications in production, DevOps teams can spot problems and opportunities for improvement.
Successful DevOps also means reconciling developer and IT operations goals. The role of developers is to change software. IT operations staff on the other hand want stability. By working together and using the concepts described above, both goals can be achieved by making sure software is continually produced and tested in a ready-to-deploy state. The cultural change (the close collaboration) and the automated tools are both crucial for improving the speed and quality of software development and deployment. For the enterprise as a whole, DevOps then means higher productivity, faster time to market, and increased competitiveness overall.