How Skytap Complements, not Competes with, Puppet and Chef
Skytap is occasionally asked if our cloud overlaps with provisioning and deployment tools like Puppet, Chef, OpenStack Heat, etc. Given Skytap’s ability to make complete clones of working virtual data centers, the confusion is understandable. While Skytap and provisioning tools do have some conceptual overlap, their roles are distinct in practice and are actually best used together.
Skytap Cloud provides environments on-demand for complex enterprise applications. Environments are self-contained virtual data centers that have everything needed to run a complex application: from network segments to fully deployed applications. We give our customers the ability to easily create, clone, share, and collaborate with these environments while maintaining tight IT visibility and control for security, compliance, and budgetary purposes. What is a “complex application?” It can be anything from customized off-the-shelf software like SAP to custom built N-tier client/server applications. They are almost always designed to run on traditional infrastructure rather than a typical public cloud.
The problems Skytap solves for teams who own these complex applications are different from those solved by Chef, Puppet, Ansible, Heat, etc. The key point to remember is that Skytap is not a provisioning tool. Skytap Cloud provides environments in which to run and then clone complex applications and their tooling. Skytap’s unique capabilities include on-premises compatible infrastructure that makes it possible to lift-and-shift these applications into our cloud unchanged, combined with the ability to make as many clones of the resulting environments as you want. Each clone will be identical to the original—from MAC addresses on NICs to the running state of the application.
Cloning environments may sound like provisioning, but it really isn’t. Under the covers, Skytap is replicating the current state of environments, not creating them from a set of rules. A helpful analogy is containers. Docker containers are conceptually similar to Skytap environments. If you save a container as an image (similar to a Template in Skytap) and make copies of the image, you are duplicating the results of a build process rather than the set of rules to rebuild it from scratch. This is like cloning a Skytap environment. In the Docker world, you can create images by hand or automatically by using Dockerfiles. The same idea applies to Skytap. Some customers use manual processes to create environments while others use automation tools like Heat, Puppet, Ansible, etc., to create Skytap environments. Once you have the results, you can copy them as often as needed.
In some cases, our customers are already using provisioning tools like Chef or Heat before starting with Skytap. Others sign up for Skytap Cloud to serve as the workbench in which to develop automated provisioning. In both cases, these customers simply point their tool of choice at the Skytap API, and their compute resources within, to build working environments. Customers new to this space occasionally ask us to recommend the “best” provisioning tool. Our recommendation is to use the same tools to create Skytap environments that they plan to use outside of Skytap. For complex enterprise applications, this automation is often combined with some amount of manual provisioning.
Once customers have canonical Skytap environments—created automatically or by hand—we suggest they give self-service access to instantly clonable environments and the rules for building environments to everyone on their teams. There are a variety of fundamental reasons to operate this way. Most importantly, you want your technical teams to have immediate access to working environments and to be able to treat the environments as throw-away. Provisioning tools alone are too slow and error prone to provide immediate working environments, particularly for complex applications. Among other benefits, easy access to working environments helps teams collaborate sooner. Early integration of development, operations, and QA systems is one of the keys to DevOps success.
This is exactly how Skytap’s SDLC works internally (we use Puppet, Ansible, Docker, Kubernetes, etc.). A provisioning run for even a portion of Skytap’s stack takes hours to complete, and few members of our technical teams are truly familiar with (or are interested in) fixing inevitable provisioning problems. So we create and validate Skytap environments from scratch several times a day using automated tools, and we make the results available to everyone. These canonical environments might remain valid for only a day or for many weeks depending on the need. All of our technical teams can clone the specific version of a ready-to-go environment they need, and they can modify just the parts they care about without messing with provisioning tools or having to wait around.
Another great example is one of Skytap’s large retail customers. They have a large toolset for environment provisioning, which is mostly automated, but it still takes days to complete due to the complexity of their stack. If you include the time required to obtain the on-premises infrastructure on which to run their provisioning tools, it can take over a week to stand up new environments. That’s fine if they only wanted to create a few new environments per month, but this customer wanted to create many working environments per day.
Their goals were to run automated system tests for most commits on clean, known-good environments that matched on-premises environments, and to give individual developers and testers a way to run unit and system tests pre-commit. Even with full automation, waiting days or a week for new environments was a fundamental blocker to productivity. With Skytap, they can get the best of both practices. They specify and create known configurations in their provisioning tools and then copy new working environments in seconds. It still takes them days to create each new “golden template”, but that no longer blocks usage of those results.
Cloning and automated provisioning are perfect complements. For complex applications, one without the other is an incomplete solution that results in delays in obtaining working resources (missing cloning) or long-term consistency problems (missing automated provisioning). Skytap used together with your choice of provisioning and deployment tooling are a perfect combination for complex enterprise applications.