Entries filed under: DevOps December

Back to Index

2013 State of DevOps: Benchmark your organization

Posted on
By
michelle
in
Blog, DevOps, DevOps December
Responses
0 Comments

In December 2012, we surveyed over 4,000 IT Operations professionals and Developers to gain a better understanding of the state of DevOps today. Until now, most of our information about DevOps has been largely anecdotal: We’ve all heard the stories about large WebOps shops outrunning their competition and start-ups experiencing four-digit growth while touting DevOps as their competitive advantage. DevOps is changing the way organizations operate in a good way, and for the first time we have the data to prove it.

The survey results revealed that DevOps is not just for WebOps shops and start-ups anymore. DevOps practices are being adopted by organizations of all sizes. The key findings are listed below, but the the data and analysis is too great to limit to a single blog post. Download the report for the full story, detailing how DevOps enables high performance, steps to improve your organization, how to remove DevOps barriers, and how to stay ahead of the curve as demand for DevOps skills grow.

Key Findings

  • DevOps adoption is accelerating. Sixty-three percent of respondents have implemented DevOps practices, compared to 50 percent in 2011—a 26 percent increase in DevOps adoption rate.
  • DevOps offers increased agility and reliability. Respondents from organizations that had implemented DevOps reported benefits in staggering numbers: More frequent software releases and improved software deployment quality were both reported by 63 percent. Beyond directly reporting benefits, these respondents were five times more likely to be part of a high-performing organization.
  • High-performing organizations enabled by DevOps deploy code 30 times more frequently than their peers. These organizations are deploying several times a day instead of once a month, and completing those deployments 8,000 times faster.
  • High-performing organizations enabled by DevOps have 50 percent fewer failures. Respondents from these organizations reported double the change success rate of their peers, and reported restoring service 12 times faster.
  • Demand for DevOps skills continues to grow. Job listings for “DevOps” are up by 75 percent, and those hiring for DevOps positions are primarily looking for coding/scripting abilities and people skills.

Click through to see the full infographic for more information:

DevOps-Infographic-thumbnail

Learn More

Hang with Your Ops Peeps

Posted on
By
Alanna Brown
in
Blog, Community, DevOps, DevOps December
Responses
0 Comments

Once a year, at PuppetConf, the best minds in IT get together to discuss what’s going on in the world of Operations. But the rest of the year, sometimes we just want to hang with our Ops peeps, minus the travel. Lucky for us, great minds think alike. Hangops is the brainchild of Brandon Burton, Web Operations Engineer at Mozilla, and Jordan Sissel, author of LogStash. They started it as a way to bring remote Ops professionals together via Google Hangout and YouTube.

Discussions range from technical to personal. Last week, James Turnbull dropped in to talk about logging and his newly released title, The LogStash Book. Other recent topics include monitoring, communication, continuous delivery tools, life on AWS, and personal growth. Want to discuss something with the #hangops community? You can submit an issue and get your friends to vote.

This Friday at 11am PST, Gene Kim, Jez Humble, and Wally Zabaglio will be discussing the 2012 DevOps Survey results. Space is limited, but sessions are recorded for posterity. Plus, you can tweet your burning devops questions with #hangops for a chance to win one of five copies of Gene Kim’s new book, The Phoenix Project: A Novel About IT, DevOps, and Helping Your Business Win. Just follow #hangops on Twitter and and watch for the Hangout URL shortly before the event on Friday at 11am PST.

Learn More

Behind the DevOps Survey: Methodology and Early Results

Posted on
By
Wally Zabaglio
in
Blog, Community, DevOps, DevOps December
Responses
3 Comments »

We launched our 2012 Devops Survey back in December, in collaboration with Gene Kim and Jez Humble. It was our intent to gain better understanding of the state of DevOps today and share it with the world.

We wanted to see whether people cared about DevOps, and what they were doing about it. Our goal was to benchmark the performance, benefits & barriers, demographics, tooling and community across the spectrum of Devops adoption.

While we’re still crunching some of the more advanced (and more interesting) data, we wanted to share some of the demographics of the survey population. At the end of this post, we’ll share some a sneak peak of some of the analysis, and you’ll have some idea of why Gene, Jez and I are jumping up and down with excitement.

Who took the survey?

Read the rest of this entry »

Looking Back at DevOps December

Posted on
By
michelle
in
Blog, Community, DevOps, DevOps December, General News
Responses
0 Comments

Over the last month, we brought together nine DevOps blog posts from guest authors and Puppet Labs employees—covering the spectrum from development, SQA, and operations. These posts came in the form of technical tutorials, thought pieces, case studies, podcasts, and comics. We want to thank every one of our contributors for helping us end a great year, and setting the tone for a collaborative 2013.

James Turnbull, Has DevOps Made a Difference?

James looks at some of the data around DevOps jobs, the hype around the movement, and asks the big questions:

Some have argued DevOps jumped the shark when the first analyst added it to their portfolio. Whatever side of the argument you fell on, the DevOps movement provoked a lot of discussion about the future of IT management. But has DevOps resulted in changes in the culture and processes of IT organisations? Has DevOps become another silo in your organisation? Or are you still asking “What the hell is DevOps?”

Read the rest of this entry »

Last Chance: 2012 DevOps Survey Closes at Midnight Tonight

Posted on
By
michelle
in
Blog, DevOps, DevOps December
Responses
0 Comments

2012-devops-survey

Happy New Year! The 2012 DevOps Survey submission period extends a single day into 2013, so don’t miss your opportunity to have your voice heard. We’re currently at 3,723 completions, but we think we can make it to 4,000 with your help.

As our in-house data analyst Wally is constantly reminding us, “As n increases, the standard error of the mean decreases.” The more people who fill out the survey, the better the data will be. We’re exceptionally excited to start sharing our results, and every additional completion helps make our survey more robust. We ask that you take the 10-minute survey and share it out to increase it’s awesome data power:

All participants will be entered into a drawing for PuppetConf 2013 tickets, Puppet Labs t-shirts, and a copy of Gene Kim’s upcoming book: The Phoenix Project: A Novel About IT, DevOps, and Helping Your Business Win. Look for more information on the data and design behind the survey soon, and a series of analysis posts in February.

Learn More:

DevOps: The Internal User Growth Team

Posted on
By
Nick Galbreath
in
Blog, Community, DevOps, DevOps December, guest post, Tips
Responses
2 Comments »

The “User Growth Team,” while not an entirely new concept, has been recently popularized by some articles on Facebook. This team works somewhat out-of-band of traditional marketing, product, and business cycles to do whatever it takes to grow the member base. More details of this can be found in these threads on Quora.

I’ve always thought of DevOps as having a similar mandate, but being more of the “Internal User Growth Team,” where users are employees and growth means performance, not volume. The team does what it takes to make the company and its employees work better, typically achieving these goals with code. The current DevOps focus of merging software development and operations places an emphasis on automation and transparency, two characteristics that certainly work towards these improvement goals. But unless your company is in a hyper-growth phase (where you are always behind), the DevOps team is going to hit diminishing returns in traditional operations work. Can we apply the lessons learned to the other areas of the organization? By following the data, we find many opportunities for DevOps to expand its mandate.

Read the rest of this entry »

A Configuration Management Carol

Posted on
By
Santa Claus
in
Blog, Community, DevOps December
Responses
0 Comments

Dear Puppet Labs,

I got your wishlist. Manual tasks keep the elves out of trouble, so I have to deny your request to “Automate All the Things.” Because you’ve been good this year, I tweeted my friend, Patrick Debois, and he created this comic just for you.

Merry Christmas!

Santa Claus

Stocking Stuffers

About the Authors

Santa Claus is a jolly, seasonal gift-giver to children around the world, who strongly recommends visiting Patrick Debois’ blog, slideshare, and twitter.

Patrick Debois is an independent IT consultant with expertise in bridging the gap between projects and operations by using Agile techniques in development, project management and system administration. Patrick is the organizer of the Devopsdays conferences, and is a frequent presenter at conferences across the globe.

DevOps Culture Podcast

Posted on
By
Dawn Foster
in
Blog, DevOps, DevOps December, Podcast
Responses
3 Comments »

DevOps Culture Podcast


In this episode of the Puppet Labs Podcast, Mike Stahnke and Dawn Foster talked to Kelsey Hightower (Ops Manager at Puppet Labs) and Eric Shamow (Professional Services Engineer) about what it takes to build a solid DevOps culture within your organization. We talked about how to convince management, measure progress, build a grassroots culture and more.

See the rest of the podcasts

Learn More

A Deployment Pipeline for Infrastructure: A DevOps Case Study at NBN

Posted on
By
Jez Humble
in
Blog, Community, DevOps, DevOps December, Users
Responses
0 Comments
Written by Andrew Cunningham (acunning@thoughtworks.com), ThoughtWorks; Andrew Myers (AndrewMyers@nbnco.com.au), NBN Co; and edited by Jez Humble.

The Problem

The National Broadband Network (NBN Co) is an Australian govern­ment owned enterprise formed in 2009 to build a broadband network which will provide a fiber-optic connection to 93% of Australian homes and businesses, with fixed wireless and satellite services to the remainder. After its creation, the NBN quickly needed to establish a public website in order to disseminate information, and to create a set of business services to allow partners to begin the process of requesting access to the new network. The internal development teams used a combination of bespoke application development, service development, and configuration of commercial off-the-shelf software to provide these services.

Because the NBN was in such a rapid startup mode, the infrastructure necessary to support the development of these websites and services was being created as the development proceeded. In development and test environments, projects could request new nodes and then manage them as they saw fit. In production-like environments, there were a limited number of available nodes that needed to be shared between multiple projects. However, each project focused only on their own infrastructure requirements and issues started to appear. For example:

  • Two teams sharing infrastructure would make incompatible changes and only one team’s application would work.
  • Nodes were being set up by hand, and changes that were made in development environments to resolve defects were not being applied to later environments, leading to regressions.
  • No one had a good idea of what was actually on each machine or who owned it, leading to anxiety about deployments, configuration changes and the ability to audit IT systems effectively.
  • Because each node was being created by hand by different individuals, the loss of a node required a considerable amount of work to recover.

A group of developers got together to work on resolving these problems. They set out to accomplish a few goals:

  1. Stand up production and production-like test systems quickly from scratch.
  2. Capture all the configuration information in version control so that machines could be provisioned quickly without manual intervention.
  3. Have a single source of truth to determine what a node should look like so changes and their impacts could be analyzed prior to making them.
  4. Integrate infrastructure as early as possible. If four teams were going to share a node in production, make them share nodes in test environments as well.
  5. Make infrastructure changes using the same process as application changes—in particular, applying them in test environments so that their impact can be understood before they are applied to production.

Initial Implementation

The first implementation that was built started to address some of these goals, but when we came to use it we discovered several problems that needed to be fixed. Some of these issues are discussed in Figure 1, which presents this initial implementation, below.

Infrastucture Setup before pipeline
Figure 1: Initial implementation of infrastructure configuration management system

The initial setup was as follows:

  • Puppet was installed on all new servers being provisioned and setup to run in the out of the box configuration—it would poll for configuration changes at 30 minute intervals.
  • Puppet usage across all development teams was inconsistent. Some teams had their server setup fully automated, some were partially automated, and some were hand-created masterpieces.
  • The Puppetmaster daemons were set up manually.
  • Each environment had its own repository, and migration of infrastructure code between environments was done manually.

This implementation lead to the following issues:

  • The process to make infrastructure changes ended up being “Check in changes, log on to target server, manually trigger Puppet”
  • Since changes were migrated manually between environments, not all changes would get migrated. This led to inconsistencies between environments and configuration drift.
  • Environment-specific code bases lead to massive duplication in manifests and modules.
  • Lack of automated processes for migrating code and inconsistent implementation of automation across all servers lead to frequent breakages and reduced trust in the infrastructure deployment.

Fixing the issues: Implementing a Deployment Pipeline for Infrastructure

As a result of these problems, a dedicated DevOps team was formed. The purpose of this team was to help development teams automate their server setup and configuration, and to create a better and more reliable process for migrating infrastructure code up to production environments.

By this stage, most teams had implemented a deployment pipeline to move their code from development to production, using a number of different technologies (Capistrano, Maven etc). The DevOps team decided to implement the same pattern for the infrastructure code, and chose to standardise on MCollective to roll out changes to nodes, Puppet for performing the migrations, and Go to manage the deployment pipeline. The aim was to be able to check a change into version control once, and then be able to promote it through test environments and finally into production at the click of a button.

The implementation of this pipeline consisted of the following steps as outlined in diagram 2 below:

Figure 2: Infrastructure deployment pipeline setup
  1. “Unit testing” of infrastructure code
    • RSpec tests against custom Puppet/MCollective code.
    • Local compilation of all node manifests using the Puppet API.
    • Execution of a system wide Puppet ‘dry-run’ to catch errors and create a report detailing expected changes when applying that revision of the infrastructure code.
  2. Promoting successful changes up to the next environments
    • Instead of packaging up and promoting the entire infrastructure codebase, we simply promoted version control revision numbers through the deployment pipeline.
    • When a new revision was migrated to the next environment, we used MCollective to tell the Puppetmaster to update its repository to the specified revision, which was taken from the previous successful run of the upstream environment.
  3. Update environment using the specified configuration
    • Where before we had Puppet running in daemon mode on a 30 minute loop, we now wanted to have Puppet trigger only when the upstream pipelines had succeeded, or when manually requested by a user.
    • We implemented an MCollective agent to allow a command to be sent to all the machines in an environment to cause them to execute a Puppet update.
  4. Post-update smoke tests
    • To ensure that the update of the infrastructure code was working as expected, we wrote a limited number of smoke tests to quickly ascertain whether all the expected applications on the nodes were running.
  5. Publish packaged configuration information and update CMDB
    • Provided that the update and smoke tests succeeded on all nodes in the environment, the revision in version control would be made available to update the next environment.
    • In addition, each node would also write out a report to a CMDB detailing its current Puppet manifest.

This implementation has several important benefits:

  • RSpec tests and local compilation could both be run on a developer’s machine prior to committing code. This enabled much faster feedback for developers so they could quickly catch issues such as syntax errors, cyclical dependencies and missing files.
  • Code only had to be checked in once, and then could be migrated all the way to production with a click of a button. If we required a major production fix, we could push it through all stages of the pipeline from development to production in about 20 minutes.
  • The output from the dry-run in the first phase of the pipeline provided a detailed report as to what would be changed on each node. This report was used by both developers and the Software Change Control Board to understand the impact of the changes that were going to go into production.
  • The use of MCollective to trigger Puppet updates meant that we had complete control over when a particular revision was pushed into a new environment.
  • Repeatability and consistency of infrastructure code deployments were much improved. Developers had confidence that what was getting pushed to production was the same baseline that had been tested extensively in pre-production environments. If necessary, we could re-deploy the same revision to an environment and have confidence that the results would be same: infrastructure deployment was idempotent.
  • There were also some limitations to this model:

    • Because Puppet is additive only, there was no ability to revert changes as you would in a typical application deployment. If a change needs to be backed out, you must explicitly add configuration to reverse it, check this configuration in, and promote it to production using the pipeline. This meant that if a breaking change did get deployed into production, typically a manual fix was applied, with the proper fix checked into version control subsequently.
    • Certain types of configuration are node-specific and could only be really tested when applied to the environment in which the node resided. We mitigated this risk as much as possible by using Vagrant to stand up virtual clusters on development machines, but these were never exact simulacra of the production environment, so bugs would very occasionally get through.
    • Because the dry run report was the first step in promoting a change, it could be hard to dig out this report to determine the impact of a given revision to an environment when the promotion happened potentially days later. One possible solution would have been to implement the dry run report as the last stage in the previous environment’s build steps.

    Conclusion

    Storing configuration information in version control and using a tool like Puppet to apply infrastructure changes to your environments is a good first step to getting your infrastructure under control. Unfortunately, it is only the first step. In the same way that a business would never check in a change to a codebase and push it directly to production, operation teams need to be aware that simply adding Puppet as an entry point for changes is not enough to ensure success. A poorly-designed infrastructure change applied directly to production via Puppet is just as likely to cause an outage as a manual change made directly on the node.

    The deployment pipeline model for software provides a path to production for every code change checked in by a developer. It implements a series of tests and verifications which the change must pass through to ensure that it is ready to go live. The benefit of this setup is that, provided the code change passes all the verifications, the team and the business both have confidence that changes can safely be made to production at any time.

    Applying this same pattern to infrastructure changes allowed us to realize the same benefits. Since we had a single path to production, the only way a change could be applied to production was to have it applied and tested in each and every prior environment. In order to verify changes, we ensured that the infrastructure required for a project to run in production was also available in testing environments. Project-specific infrastructure changes could therefore be tested and promoted up to production alongside the application changes that required them.

    The pipeline management tool we used—Go—provided both automated and manual configuration for promoting changes between environments. For testing environments, changes were automatically applied after check-in once the unit tests had passed. For controlled environments, changes that had made it through test environments could be promoted on demand. Finally, because our pipeline also produced a report of what it had done, we were able to detect uncontrolled changes and find out which well-meaning developer had been monkeying with an environment manually. This helped us to catch most uncontrolled changes and get them into version control to ensure they would be applied and promoted using our standard, controlled process.

    Ultimately our infrastructure deployment pipeline gave us the ability to push changes to production on demand with a very high confidence that the change would work as expected. Reports were produced detailing what changes would take place on which nodes, and then the changes were verified using smoke tests. The teams became so confident that it was not unexpected to see changes being applied to production in the middle of the day. The combination of MCollective, Puppet, Go and the deployment pipeline pattern has enabled NBN Co to treat their infrastructure in the same way they treat any project. A project that can deliver specific requirements on time in a reliable, automated, and repeatable fashion.

    Learn More:

    About the authors:

    Andrew Cunningham has just joined Telstra as a Senior Middleware Engineer after spending 7 years with ThoughtWorks in Canada, USA and Australia. He has worked in a mixture of QA, development and operation roles for a wide variety of industries and projects. He has been focusing on DevOps work for the last three years since discovering that he could play as a systems administrator while still getting to write code.

    Andrew Myers joined NBN Co in 2011 to play a part in building a high speed broadband network for all Australians. There he helped grow what was initially a small DevOps experiment, into it’s current state where the automation capabilities he helped design and implement are depended on by multiple teams every day. Preivously he’s worked as a software developer, experiencing the “old ways” first hand, as well as working on the other side of the fence providing technical support for development and collaboration tools. Andrew’s passionate about DevOps because it allows him to combine software development and system administration skills and be involved across the whole software development lifecycle.

Mr. Engineering Manager, Tear Down This Wall: The Time for Cooperative Dev and QA is Now!

Posted on
By
Dominic Maraglia
in
Blog, DevOps, DevOps December, QA
Responses
1 Comment »

The winds of change have swept the development and testing landscape. The days of waterfall design, planning, and development and then ‘tossing’ the resulting builds over ‘the wall’ to a beleaguered QA team have come to an end. Development and QA have started working together closely, and it has become clear that new tools and methodologies are needed to fully realize efficiency gains of a collaborative paradigm. Enter Continuous Integration. Continuous Integration begat Continuous Delivery, Continuous Delivery begat DevOps. It’s a Brave New World!

While testing code is clearly an SQA engineering focus, test automation, automated provisioning of test environments, setup and tuning of CI and CD pipelines are vital ingredients in the efficient use of CI/CD and DevOps methodology for testing. Effective use of these methods allows SQA teams to be smaller and more agile, while still maintaining high code quality and release velocity. Indeed, entire organizations benefit from the adoption of CI/CD/DevOps as engineering efforts can be deftly shifted to meet new market opportunities and challenges, with rapid time to market, increased quality and lower overall cost.

Collaborate, Automate or Die

Read the rest of this entry »