Get Puppet Enterprise First 10 nodes are free!
Try it now
Request a demo
Automate IT and infrastructure, manage complex workflows, and mitigate risk at scale.
Try the full-featured Puppet Enterprise for free on 10 nodes.
Puppet Comply Find and prevent compliance failures
Compliance Enforcement Modules Remediate to stay in compliance
Continuous Delivery for Puppet Enterprise Build, test, and deploy infrastructure as code faster and easier
Content & Modules Pre-built scripts to automate common tasks
Find thousands of component modules built by the community and guidance on using them in your own infrastructure.
Visit Puppet Forge >>
Open Source PuppetPerfect for individuals and small infrastructure
BoltAutomate tasks in orchestration workflows
See all open source projects >>
Contribute to open source projects >>
High-performing organizations are built on a solid DevOps foundation that evolves and grows with them over time. Let's explore five ways that you can build strong foundational practices for your DevOps evolution.
Table of Contents:
A DevOps foundation is a series of best practices and optimizations that are established to help the DevOps team to continuously improve and deliver for their organization.
In our 2018 State of DevOps Report, we surveyed over 3,000 IT and development professionals around the world. Our analysis revealed five stages of DevOps evolution, and the critical practices at each stage that help you get to the next phase of your journey. Additionally, we found that five foundational practices had the greatest impact on the DevOps evolutionary journey.
From previous reports, we already know that DevOps practices predict IT and organizational performance. The 2018 State of DevOps Report takes this one step further by providing a prescriptive and pragmatic approach to adopting and scaling DevOps practices.
Future posts in this series will delve into the nature of each stage. Here we want to provide a brief overview of the foundational practices.
From our statistical analysis, we revealed five foundational practices that have the greatest impact on the entire DevOps evolutionary journey. When we examined each of these practices more closely, we found that highly evolved organizations were much more likely to always be using these practices throughout the evolutionary journey than the less-evolved organizations. What we take from our findings is that the foundational practices listed below are integral to DevOps and critical for DevOps success.
One of our recommendations from the 2018 State of DevOps Report is to start with the practices that are closest to production, then address processes that happen earlier in the software delivery cycle. We recommend this approach because application deployment is typically where Dev and Ops collide. Improving collaboration across this one critical functional boundary will not only alleviate deployment pain but also create repeatable patterns that other teams can then adopt. To that end, as you’re adopting these five foundational practices, we recommend that you:
...Then focus on
While allowing a team to configure its own monitoring and alerting seems straightforward on the surface, it can be challenging to do in practice as it requires both cross-team collaboration and a high degree of trust. Empowering teams to define their own monitoring and alerting promotes sharing which is one of the four pillars of DevOps in the CAMS model. Monitoring and alerting is key to sharing information about how systems and applications are running and getting everyone to a common understanding. This common understanding is vital for making improvements, whether within a single team and function or across multiple teams and functions.
We place a heavy emphasis on improving deployments because application deployment is where Dev and Ops most often meet — and most painfully collide. In our 2015 State of DevOps Report, we found that a high degree of deployment pain correlated with low performance across the board — IT performance, organizational performance, and culture are all negatively affected when deployment pain is high.
The main causes of deployment pain are manual handoffs between teams and inconsistencies across environments due to manual processes. The countermeasures to this are:
Once you have a successful blueprint for deployment, see where it might make sense to emulate the same pattern for other applications—for example, you may identify several n-tier web apps that can be deployed in a similar fashion using similar tools. As we learned from Stages 1 and 2 of the DevOps evolutionary journey, too much variance in the system creates complexity which limits agility. Standardizing as much of the deployment process as possible and sharing patterns across the organization allows teams to spend time on truly differentiating work.
In the State of DevOps Survey, 13% of the least-evolved category used configuration management “always” or “most of the time.” In comparison, ninety-three percent of the highly evolved teams used configuration management “always” or “most of the time.” A solid foundation in configuration management is a force multiplier. It enables teams to define their infrastructure as code once and deploy endlessly. It eases deployments by ensuring consistency across all environments. It improves both the reliability and agility of the infrastructure while also making it auditable.
”Everyone wants to have stability while still being fast; that’s one of the main objectives we have for configuration management.… when you become standardized, you become more stable.” – Tom Sabin, IT manager for cloud & automation, Staples
Automating testing is one of the harder challenges an organization will face in its DevOps journey. We typically recommend addressing testing after the activities that are closest to production, such as provisioning, monitoring, alerting, etc. are dealt with. However, once you do adopt this practice, it’s important to ensure that testing patterns are shareable. For example, you can encode reusable tests into automated testing tools, and share access to those tools — along with the resulting reports or dashboards — among all stakeholders.
“DevOps is a human problem.” – Patrick DeBois
As software organizations naturally evolve, teams start by solving their own problems and don’t develop methods for sharing those solutions with other teams. Improvements to tooling are typically manual and ad hoc, and siloed within a single team until some change drives the need to open up to other teams.
Perhaps the most obviously cultural-not-technology challenge, the sharing of tooling nevertheless can be driven from changes such as unifying data or other exposure of operations between teams.
While every organization has different starting points, they typically face the same challenges as they progress through their DevOps journey. The five stages of DevOps evolution provide a prescriptive and pragmatic approach to adopting and scaling DevOps that also meets you where you are today. If you’re struggling with where to start, we’ve provided a roadmap that will help you achieve success faster. If you’re feeling stuck, we provide concrete ways to get to the next stage.
How does your organization implement these five fundamentals of DevOps? To learn more, please download "The 5 Stages of DevOps Evolution" white paper. It will help you to identify where in the DevOps evolution you find yourself and chart a path forward.
Get the White Paper
Technical Product Marketing Director, Puppet by Perforce
Alanna Brown is the mastermind behind the State of DevOps Report, which has become the most widely referenced body of DevOps research available since she launched it in 2012. Having overseen over seven years of data gathered from more than 30,000 technical professionals, Alanna brings an informed perspective around the world between IT performance, DevOps practices, culture, organizational performance and other elements that affect business outcomes.