DevOps: Improving How IT Gets Done
DevOps is the confluence of software development and software operations. The idea behind putting the two more closely together – those who create the software with those who deploy/operate/maintain the software -- is to remove any territorial silos and drive collaboration to achieve continuous improvement and delivery of software to organizations.
Problems DevOps Solves
Continuous integration and continuous delivery of quality software depends on a system where deliverables can be packaged and automated as much as possible. That facilitates a more integrated process.
But problems often arise in traditional environments that have distinct software development and software operations departments. There can be a disconnect between those who develop software and those who put the software into productive use. Conflict and inefficiency often result.
Developers
- Tend to be agile and open to change
- Not always consistent in delivering software
- Want computers updated with the latest technology
Operations
- Prefer consistency
- View change as inefficient
- Use computers often years behind in technology updates
A typical problem is where the development team is using one tool to track tasks and another tool to track ‘bugs’, while the operations/maintenance staff is tracking issues in yet another tool. In this case, there are three tools being used for the same software application.
DevOps is a way to acknowledge the disconnect, get teams to work together toward a common goal, and provide the tools to support that common goal. DevOps makes the flow of the software delivery happen more quickly and more effectively.
How Can Dev and Ops Work Together?
A resource with considerable detail is Joakim Verona’s book Practical DevOps, which looks at the process conceptually as a continuous delivery pipeline.
Development environment
Developers work with the operations team to build a container-based or virtualization-based development environment that is set up according to operations standards.
Revision Control System
- Modifications to the software being developed are continuously deployed using build servers.
- Results of the changes are compiled in an artifact repository, where the organization’s code, infrastructure configurations and perhaps designs for hardware development are located.
Test Environments
- Code is installed and configured with the same methods used in production for integration testing and performance testing.
- Blue-green deployment strategy - When software releases are installed on staging servers, and pass final testing, the staging servers become the new production servers.
"Automation makes DevOps possible by creating confidence in the development process, integration, and testing to the point where you can trust it so implicitly that someone could literally ‘flip a switch’ and implement the new release."
The DevOps Culture
DevOps seeks to maximize technical aspects across the disciplines involved in software development. But it also affects the non-technical cultural aspects of organizations as well. Successful implementation of the continuous integration/continuous deployment (CICD) model requires a commitment throughout the organization -- starting from the top -- that involves time, resources, and training. At the heart of successful DevOps organizations, you will find shared responsibility, increased collaboration, and a willingness to change.
DevOps is more of a culture than a set of tools. It’s a mindset that nothing is sacred, that everything can change. But it must occur in a systematic, methodical way that accepts change, predicts change, wants change and grows with change
Successful DevOps organizations include autonomous teams, a concept driven by the agile mindset, that work across functions and have tools to transparently access everything that is changing in the workflow. Automation is key for as many processes as possible:
- Source-control
- Builds
- Code testing
- Configuration testing
- Deployment
- System metrics
To Recap
DevOps seeks to create a way where continuous integration and continuous delivery can take place quickly. But despite the automation that is fundamental to DevOps projects, communication will remain a key to success. The goal of DevOps is to make developers and operations specialists aware of the other’s tasks and duties so they can help each other.