Adopting A DevOps Culture
Figuring out the most optimal way to rapidly and cost-effectively deliver software releases to customers – without compromising quality – continues to be one of the biggest challenges faced by IT enterprises.
Many IT leaders agree that implementing DevOps practices can enable the enhanced collaboration, automation, and transparency that is necessary for an enterprise to overcome this challenge.
A recent study by Grand View Research says that the DevOps market is anticipated to be worth 12.85 billion USD by 2025. However, according to Forrester Research, only 13 percent of organizations have implemented DevOps, with 50 percent trying it. Another 27 percent plan to implement DevOps within the year, while 9 percent are interested but have no plans to adopt DevOps within the next 12 months.
What Is DevOps?
A little over a decade old (pioneered in 2008), DevOps is an IT philosophy and practice that brings development, operations and testing personnel together in cross-functional teams, each of which is collectively responsible for the entire lifecycle of a particular software product or service.
Traditionally, a development team creates code and passes it on to a testing (QA) team that then turns it over to an operations team to put into production. On the other hand, in a DevOps team everyone is responsible both for delivering new application features and keeping the software stable.
By bringing together collaborative teams across the organization and working hand-in-hand with related IT practices like agile, fail fast, design thinking, cloud operations, and user analytics, DevOps enables:
- More customer-centric products
- Rapid product development and delivery
- Quicker product entry/roll-out into the market
- Faster fixing of bugs, weaknesses and defects
- Better responsiveness to market changes
- More efficient resource utilization
However, implementing DevOps in an organization isn’t as easy as simply buying a DevOps tool and declaring that everyone must use it. It requires significant changes in culture, processes and tech.
Here are the five key steps an organization looking to adopt a DevOps culture should follow:
1. Make Space for A DevOps Culture
Simply introducing new policies and procedures may work for a bit at first but will inevitably fail in the long term if the underlying organizational culture doesn’t change. In a 2017 study by Pensa approximately 20 percent of the IT decision-makers surveyed listed limited budgets as the top barrier, 9 percent cited company culture, 8 percent said limited IT skills, and 7 percent listed lack of executive buy-in.
This is why CIOs must address culture right from the start of their organizations’ DevOps journeys. They must get other executives to see it as a critical tool for digital transformation.
They must also get developers, testers and operations personnel to understand the value each brings to the organization before combining them together to work collaboratively in cross-functional teams.
To help get everyone in the company on the same page, enterprises should start with small projects to lay the foundation for the processes, principles and practices necessary for larger ventures.
Companies must also learn to embrace failure to foster an environment where the newly formed DevOps teams feel psychologically safe and empowered to radically transform how they do their jobs.
2. Build an Automated Deployment Pipeline
Once the organizational culture is oriented toward DevOps, the next thing to focus on is the DevOps team itself. This team will be involved in every stage of the software’s lifecycle, from requirements through to planning, deployment and maintenance (troubleshooting and debug problems).
Here, the key is to create an automated deployment pipeline that incorporates continuous integration, continuous development, continuous testing and continuous deployment into a single platform.
This is why developers must always be provided accurate, up-to-date information about the production environment. This way, they can adequately plan and execute a coordinated “build and run” approach.
3. Enable Continuous Testing
In the traditional approach, developers pass the complete code to the QA personnel who either clear it for production or send it back for editing. With DevOps, they are part of the cross-functional DevOps team and testing, whether manual or automated, is performed continually throughout the pipeline.
The key is to have sufficient QA practices and standards in place, log extensively, test early and often, and automate as many of the testing procedures and phases as possible. Manual testing should ideally only be applied where it’s absolutely necessary, such as for usability testing and exploratory testing.
To reduce downtime and mitigate risks, organizations can consider blue/green deployment. In this method, when a change is made and a new deployment (blue) is made in parallel to the old one (green).
Both deployments run side by side, with only a small amount of traffic initially redirected to the blue deployment. If it is successful, the rest of the traffic is slowly redirected to the blue deployment and the green deployment is slowly removed. If it fails, the traffic is sent back to green and the blue is removed.
This allows the enterprise to switch between deployments without any downtime or crashing. This is how sites that can’t halt their services at any time such as Facebook and Twitter introduce new features.
4. Continuously Monitor Performance
With an automated delivery pipeline, performance monitoring is critical. It’s even more important to know which metrics to monitor. When it comes to DevOps, some of the key things to monitor include:
- Server health and application performance
- How frequently code is release it to end-users
- How frequently the code released is being changed
- What percentage of changes result in degraded service
- How many objective features are being incorporated
- How long it takes to restore service after an incident
- How many bugs are being identified and fixed
- When an automated deployment fails
- When regulatory compliance is not met
5. Equip your team with the right DevOps tools
While successful DevOps adoption is rooted in the underlying cultural shift, tools are still important. IT leaders need to ensure their teams are comfortable with DevOps tools and give them ample room to experiment with these tools. Here are some of the tools typically used in a DevOps environment:
- Source code repository: Git, CloudForce, TFS, Subversion
- Build server: SonarQube, Jenkins, Artifactory
- Configuration management: Puppet, Ansible, Salt, Chef
- Automated testing: Selenium, Water
- Cloud environment: Amazon Web Services, Microsoft Azure, VMware vCloud
Are you embracing DevOps the right way?
Moving from traditional software development to DevOps is challenging, as it involves a significant change across the organization. Let the professionals at ASB Resources guide your company in making the necessary technological and cultural shifts to adopt DevOps correctly. Schedule a call with one of our experts today!