Staples Case Study

Industry

Retail

Background

Staples Inc. is the world’s largest office products company and one of the biggest internet retailers. The company opened its first store in 1986, began offering its stock publicly in 1989, began selling online in 1998, and has grown to $22.5 billion in annual revenue.

Challenge

Automate private cloud used by application development teams; create self-service provisioning for developers; speed deployment cycles.

Solution

  • Automate cloud management & create a PaaS-like provisioning service.
  • Automate common IT operations tasks to provide consistency.
  • Free IT team to innovate.

Results

  • Deployment cycles went from weeks to hours, from days to minutes.
  • Developers can provision their own environments as needed.

Cloud Automation

Managing and making optimal use of Staples’ private cloud was the primary motivation behind finding a good configuration management tool, said Tom Sabin, IT manager for cloud and automation, and Jeff Quaintance, senior cloud and automation engineer at Staples.

The private cloud was set up as a service for Staples’ internal application development teams, to give them the flexibility to quickly acquire the development and test environments they need. The private cloud runs on Red Hat Enterprise Linux, and RHEL environments are managed with Red Hat Satellite. Other technologies used within the private cloud include Apache, Tomcat, NodeJS, MongoDB, Redis and Oracle.

Companies turn to the cloud to speed up application delivery. The hope is that the cloud will deliver VMs quickly and efficiently, so developers can focus on developing business value. Automation helps realize this value, as Staples has found.

“Staples had just a limited number of people with a set of very specialized skills who could automate,”
said Jeff. “We had a lot of development teams just chomping at the bit to start expanding the number of
tools that they used in house. They wanted that automated.”

The answer was to find a configuration management system that would be accessible for developers, platform engineers and others — not just sysadmins. “We needed to be able to say, ‘Here’s a configuration management tool; we don’t expect you be experts in it, but if you can get started in your own sandbox or development environment, and contribute back to us, that would help us build and scale out our configuration management capabilities,“ said Jeff. “That’s where Puppet came in.”

Today, with configuration managed by Puppet Enterprise, Staples’ IT team has created a user interface that allows colleagues on other teams to order new VMs equipped so they can start working right away.

“We’re not just handing out servers; we’re handing out servers with middleware or database on top of it, moving up the stack,” said Jeff. “Puppet has really helped us get to that point.”

Choosing the Right Configuration Management Platform

When Jeff and other Staples teams started analyzing several open source configuration management tools, they found an application development team at Staples that had already deployed Open Source Puppet to manage application code, and that was a strong advocate for the technology.

There were several factors that made Puppet highly attractive to the Staples IT team, including:

Puppet has a strong community of users producing modules, patterns and ideas that the Staples team could learn from and build on. “Other tools really didn’t have that,” Jeff said.

It was easier for people to quickly get to at least an intermediate level with Puppet. “In the past, other automation tools ended up being so complex that other groups couldn’t consume them without a dedicated person, and staffing for those skill sets is a significant challenge,” Jeff said. “We needed to identify a configuration management tool that other people in the organization who aren’t necessarily advanced experts could consume, use and become part of the automation community at Staples.”

The Puppet skill set was not difficult to hire for, particularly people who had experience with open source Puppet.

The application team used open source Puppet on a couple of different application stacks, hosted both internally and with a public cloud service. The application engineers opened requests, and platform engineers provisioned servers with Open Source Puppet and helped the developers manage their configurations.

While open source Puppet was working out well for this particular application team, Jeff and Tom knew they would need to expand quickly to other teams, and also from Linux-only to both Linux and AIX. That made Puppet Enterprise the best choice. Plus, getting bootstrapping help from Puppet professional services engineers, and knowing there would be ongoing professional support, made the choice easy.

“It was the knowledge transfer [from professional services engineers] that really set us on the right track, and got us up and going a lot faster than if we’d been doing it on our own,” Jeff said.

The new private cloud service was a big priority, so getting it launched with good processes and practices mattered, and as quickly as possible. Puppet professional services engineers showed the Staples engineers how to write Puppet code that was portable and reusable across applications, to make it faster and easier to scale beyond the original application development team’s specific needs.

Puppet Training

Puppet’s public and onsite private training helped get Staples engineers quickly comfortable with Puppet Enterprise. A few Staples engineers were naturals, though, and picked up Puppet quickly. “I know learning resources on the Puppet website has been quite helpful for people as well,” said Tom. “Some people used that [and other Puppet resources] to learn Puppet on their own, and there are quite a number who have been successful.”

Jeff was one of those who dived in and learned Puppet independently, but he advocates for training. “One thing to watch out for with self-training are gaps where you skipped some core things while learning on your own,” he observed.

Building Credibility for the IT Ops Team

Staples’ IT team is now using Puppet Enterprise to manage the VMs in its private cloud, which runs on Linux. While system engineers are certainly saving a lot of time on routine tasks, the biggest benefit is the vastly increased speed of getting a package developed and installed.

“If we have the package already developed, what took days before now takes literally minutes,” Jeff said. “For a new capability — say a new application server container we need to install — what took several weeks is now down to a week.”

That huge change has made a big change in the perception of IT Operations and its role within Staples. “We can turn this stuff around really, really fast, because we’ve done a good job with building the configurations within Puppet,” Jeff said. “People are amazed at how quickly we’re turning things around. We’re doing a good job of keeping pace with our development teams as they try to roll out new functionality for our business, and that’s helped me and my team build credibility within the global technology organization here at Staples.”

DevOps and Infrastructure as Code

Engineers have always automated with scripts, but everyone does it differently. Where sysadmins might favor shell scripts or Perl, developers might write scripts in Python. The problems in delivering quality automation arises not just from these technical differences, but also from differences between people’s individual scripting styles, even when using the same language.

Puppet has brought consistency to how Staples engineers in different departments automate. It’s made it possible for more people with different skill sets and jobs — application developers, system engineers, testing engineers — to automate work, spreading the responsibility to a much larger group.

Just as important, it’s now possible to put automation code, whether for applications or the systems that support it, into a source control tool. “With a centralized center of excellence around Puppet, it allows us to put that governance in place, allows us to put a processing place, so we have the right level of review prior to anything going out to production,” Tom said.

This shared responsibility for delivering code that moves the business forward is, of course, what DevOps is about. “I look at it as bringing operations and development closer together to solve business problems, regardless of whether that’s a software release or you have a priority incident to address,” Tom said.

Puppet has helped Staples improve its flow of code through each stage, from development through to production. The team uses r10k to manage distribution of Puppet code across all Puppet masters in Staples’ multiple data centers. Code is stored in a repository, and then after code review and approval, it’s merged. Here’s where r10k comes into play again, pushing approved, merged code to development and QA environments. Once testing is complete, a separate process is used to push code that’s passed tests into production.

“I really do see Puppet as a DevOps tool, because it helps bridge that gap between development and operations, and it really level-sets,” Tom said. “Anybody can contribute Puppet code, whereas in a legacy environment, you might actually need to have root access to be able to do certain configurations or install certain software packages. Puppet allows you to abstract that away, and provides enablement for our development teams to do some work that otherwise they’d be restricted from, from an access standpoint.”

Staples development teams have become interested in Puppet. “We’ve had some adoption; recently, we’ve had some teams going out and trying to do some things in Puppet on their own, and we’re working with them,” Tom said.

“What we’ve pushed on is, if you have something net new, where there was no standard beforehand, and we’re doing it for the first time in Puppet, let’s push to get as much managed by Puppet as we possibly can. Now there are a couple of examples out there, where it’s almost just click and go — they can build out an entire cluster with some piece of middleware on it, and Puppet is literally managing all aspects of that configuration. As they add new servers to the cluster, Puppet is automatically picking that up and making everyone else in the cluster aware of that.”

Once people see a few of these “shining examples,” as Tom calls them, “people see that and say, ‘Okay, I get it.’”

The Future of Puppet Enterprise at Staples

Eventually, Tom would like to expand Puppet to all systems at Staples, whether they’re running Linux, AIX or Windows. “The private cloud was a greenfield project, and could be carefully planned from scratch but it’s a whole different ballgame when you’re applying Puppet to existing running systems that have been built under a different set of standards,” Tom said. “We’re working on trying to retrofit and build up as much momentum behind the rest of our enterprise as we have with our private cloud.”

The team is eager to roll out several time-sensitive tools across the enterprise. Puppet Enterprise is installed, and nearly ready to automate rollout of one of these tools. Others will be rolled out in the same fashion once the process has been proven on the first tool.

Adopting Red Hat’s Satellite management system is another project now in the planning stage, and this too will rely on Puppet Enterprise. “The PuppetDB backend and exporter resources really enable us to have a lot more power and granularity over the configuration management,” Jeff said.

Beyond these projects, Jeff would like to manage network devices with Puppet Enterprise. “Puppet creates a lot of automation opportunities that we will look to leverage in the future,” he said.

Why Puppet Enterprise?

Staples needed to automate its private cloud spanning multiple data centers. The company also wanted to enable self-service provisioning for application development teams to free up IT Operations from having to provision developer environments so they can focus on activities that add more value to the business.

Starting environment

  • A private cloud service for the company’s development teams consisting of thousands of virtual machines in multiple data centers.
  • Private cloud runs on Red Hat Enterprise Linux.
  • Additional technology includes Red Hat Satellite, Apache, Tomcat, NodeJS, MongoDB, Oracle and Redis.

Top outcomes of using Puppet Enterprise

  • Fast provisioning of cloud resources for internal application development teams. • Automated systems management makes IT ops teams faster & more efficient.
  • Increased stability and reliability.

 

See for yourself what Puppet Enterprise can do for you.

TRY PUPPET ENTERPRISE