Implementing a successful DevOps initiative requires time, effort, and discipline. While it may look daunting, successful companies develop momentum by creating achievable steps that show value within teams. Learning from the successes and failures of previous DevOps implementations helps the rest of us as we embark on our own journeys.
Puppet and Splunk teamed up to create the 2018 State of DevOps Report, a data-driven guide to achieving DevOps success. This report is based on a survey of more than 3,000 technology professionals from around the world, and the results can be used to create a comprehensive plan for migrating your company to DevOps methodologies.
The State of DevOps Report outlines five stages of DevOps evolution, modeled on the paths taken by the highest-achieving organizations. In a series of posts over the coming weeks, we will provide an overview of each stage, from building a foundation to automation to full self-service capabilities.
Building the Foundation
A lasting structure requires a strong foundation. This is true for DevOps as much as it is for building a home. The State of DevOps Report identifies five foundational practices that successful teams applied before they implemented DevOps practices.
A team is ready for success at the next stage in DevOps evolution when it has adopted the following five practices:
- Monitoring and alerting are configurable by the team operating the service.
- Deployment patterns for building applications or services are reused.
- Testing patterns for building applications or services are reused.
- Teams contribute improvements to tooling provided by other teams.
- Configurations are managed by a configuration management tool.
One common theme underlies these practices: sharing. DevOps originally gained popularity as a cross-team collaboration between software developers (the “Dev”) and IT operations (the “Ops”). The notion of cross-team collaboration becomes more important as DevOps methodologies are employed. When teams share their success stories, techniques that work can be adopted in other areas of an organization. As working practices continue to be applied across teams, the sharing aspect of DevOps becomes self-perpetuating. The bottom line? Success spreads.
Configurable Monitoring and Alerting
In high-performing DevOps organizations, teams that run applications and services in production also define their own monitoring and alerting criteria. The team in charge of a service knows what good service is, and they know how to determine if it’s operating properly. On the flip side, they also know how to tell when something is wrong.
Highly specialized, siloed teams impede efficiency, accountability, and the essential culture of sharing that powers good DevOps. The State of DevOps Report found that 47% of highly evolved DevOps organizations are able to define and configure their own monitoring and alerting criteria for apps in production.
Reusing Successful Deployment and Testing Patterns
In traditional IT organizations, development and operations are so completely separated that they frequently only intersect during application deployment. Each team approaches the deployment independently from its own point of view, methodology, and philosophy. The end result often bears more resemblance to a head-on collision than a meeting of allies.
In comparison, the collaborative sharing method of DevOps seems like an easy choice to make. When teams work together to create dependable, repeatable deployment patterns, there is naturally less failure and more efficiency. Even better, successful deployment patterns can be shared across multiple teams, promoting a collaborative culture.
Testing patterns can also be scaled across teams – though depending on the structure of an organization and the variety of technologies used, this can be a bigger challenge. It may make sense to defer the adoption of testing patterns until after development patterns have been well established. You can start by establishing testing patterns within your own team, such as having a good process for testing infrastructure changes before deploying to production or implementing test-driven development as part of your agile workflow.
Every Team Contributes Improvements to Tooling
Following on the heels of reusing successful deployment patterns comes the concept of cross-team collaboration on tooling. If one team is automating package management, it only makes sense that other teams pitch in to make sure that all packages are equally managed. Again, sharing is the key to good DevOps.
Collaboration naturally leads to more improvements. As techniques spread from one team to the next, each team will need to adapt and improve tools. When the sharing goes both ways, these improvements can be beneficial to all.
Adopting a Configuration Management Tool
As development and operations continue to share tools and practices, both sides will begin to expand automation. Development, in particular, should begin to embrace automated deployment and provisioning techniques, leading to the adoption of continuous delivery methods.
This is a great step – it is DevOps in action. When automation spreads beyond one small corner of a company, you can see that the sharing mentality is working and improving the IT infrastructure. However, increased automation and continuous delivery put a new burden on operations teams. They will face greater pressure to maintain uptime, performance, and availability in production.
Configuration management tools can help by enabling stable, reliable, and auditable production environments. Provisioning, configuring, and then monitoring the changes in servers can be almost entirely automated, so operations can keep up with increasing demands from development teams.
Starting on Solid Ground
If your organization is just getting started with DevOps, these initial practices will ensure that you’re set up for success and can begin reaping benefits quickly. The foundation you build will enable your organization to blossom into a fully evolved, efficient, and powerful DevOps shop.
Make sure you revisit the list as your organization grows and adopts more DevOps practices. It can be easy to slip back into old habits, which means reviewing these practices is just as crucial for established DevOps teams as it is for those teams just starting on the DevOps journey.
Are you ready to take the next step? Download the 2018 State of DevOps Report by Puppet and Splunk to learn more about the evolution of a DevOps team. In it, you will find the questions, key findings, and methodology used to build the report.