"A single ad can double or triple our site traffic, so we've got to be able to respond in real-time if we're going to keep all our customers smiling. Enterprise Chef gives us the agility to handle even the craziest spikes in demand because everything from spinning up new compute to delivering app updates is automated and rock-solid." Jake Vanderdray, WebOps Team Lead, CustomInk
CustomInk makes it easy for anyone to create customized T-shirts, sweatshirts, and much more online, bringing people together whether it's for charity, sports, or a birthday party. The company employs proprietary and primarily Ruby-based software applications running on both virtualized and cloud servers to manage their entire business. With only four IT operations personnel on staff, keeping up with huge customer demand presented a range of challenges:
CustomInk deployed the hosted service version of Enterprise Chef™ to automate configuration management across virtualized servers in their co-located data center and AWS cloud resources. Using Enterprise Chef, CustomInk has standardized their IT infrastructure on a set of Chef Cookbooks shared between both development and operations teams.
When Jake Vanderdray joined CustomInk in 2010 to lead the company's web operations team, he found the template-based automation tool in use didn't have the scale, flexibility, or ease of integration necessary for long-term business growth. The company's application stack was primarily Ruby-based with various custom-written applications running nearly all core business systems - even the printers pumping out the clothing designs. With major growth on the horizon and an imperative to help engineers work better with operations in getting the resources needed for development projects, Jake and his team set about architecting a new automation strategy.
"When I started almost three years ago, we all agreed we needed to be more agile and develop apps faster to keep pace with customer growth," Jake recalled. "That meant two things. First, add AWS resources to reduce compute costs and be more flexible. Second, find an automation platform that works well with Ruby and can scale to whatever size we may need to go."
Jake and his team soon brought in Enterprise Chef and its Ruby-based, primitives-driven automation model. Next, they began standardizing CustomInk's infrastructure as Chef resources all managed with a rock-solid set of Chef Cookbooks shared between development and operations on GitHub. Now, developers can submit pull requests for resources and operations can easily approve and deliver resources in hours, or make any necessary code changes before approving the new resource configurations and still deliver new AWS servers in less than a day.
"Chef has standardized 95 percent of our infrastructure and we're closing in on having everything done with Chef," Jake continued. "It's made collaboration between development and operations much smoother and more frequent. As a result, we can move a lot faster all while being confident in Chef to ensure system consistency."
To stay ahead of changes in site traffic, Jake and his team use Chef in combination with Jenkins CI to dynamically provision not only new AWS servers, but also automate the build, test, and staging of new applications. Using Chef, Jake and his team can automatically create new environments for developers in just minutes that mirror CustomInk's production system. Within these environments developers use Chef and Jenkins to automate application builds and tests before moving approved code updates to Capistrano for deployment. Once the code is deployed and the additional compute is no longer in use, CustomInk's operations team can easily destroy the AWS servers to further reduce costs.
"AWS, Chef, and Jenkins give us an automated tool chain for our entire development lifecycle, making us much more agile when demand pops," Jake added. "We can spin servers up and down pretty much at will, which means devs get the resources they need when they need them and everybody's happier."