The word “unprecedented” is thrown around quite a lot when describing the way container technology is catching on, and it would be an understatement to say everyone wants a piece of the action. Microsoft is certainly leading the way with regards to “enterprise containers,” and most commercial open source software companies say Azure is the best cloud to negotiate and partner with. Azure is also making a name for itself with regards to being the easiest cloud to use and operate, and the latest addition of “Draft” makes things even easier.
It’s pretty uniformly agreed upon that if you’re going to use containers, you’re going to need Kubernetes to orchestrate them. A key problem to address, however, is the steep learning curve that comes with Kubernetes. While small, technically sound teams find it relatively straightforward to get up and running, Gabe Monroy, a program management lead at Microsoft, said, “This stuff is way too hard, the conceptual barrier is way too difficult, and people don’t know how to get started with it.”
The Deis Acquisition
The difficult part, of course, is educating an entire DevOps team on how to use Kubernetes, which, in the case of really large organizations, just isn’t feasible. Microsoft acquired Deis from Engine Yard earlier this year and also joined the CNCF as a platinum member about a month ago to get across this barrier. The Deis acquisition was great for Microsoft because with it came a bunch of cool Kubernetes stuff like Kubernetes Helm, Workflow and Steward. Kubernetes Helm is a core component of Draft, and continues to be developed and improved by Microsoft engineers.
This just goes to show the extent to which Microsoft is willing to go to gain an edge over everyone else with regards to Kubernetes, and it’s working, too. Scott Guthrie, Microsoft’s executive vice president of Cloud and Enterprise, said the acquisition is part of Microsoft’s quest to ensure Azure is the best place to run containerized workloads. In addition to the Deis acquisition, Microsoft also employed Brendan Burns, one of the co-creators of Kubernetes, and has been on a headhunting spree, buying players like it’s football season.
And it’s not the only one. A lot of companies are trying to make it easier to use Kubernetes. Heptio, for example, released ksonnet a few weeks ago, which is a tool that makes it easier to reuse code libraries on Kubernetes. Draft was made so that developers with zero knowledge of Kubernetes (or even Docker, for that matter) can get started with containers right from the get-go, and it does just that. Running two commands is pretty much all you have to do to have your app deployed to a Kubernetes cluster in the cloud or on-premises.
Draft create
Once you’re done with your code, you need to first run “draft create,” which is a tool that detects your programming language and accordingly writes a Dockerfile and Kubernetes Helm Chart straight to your source tree. Helm Charts are Kubernetes charts managed by Helm. Helm consists of a Helm CLI, which either runs on your computer or in the cloud, and a “Tiller” which is your server running on the Kubernetes cluster. The Tiller manages the lifecycle of all your Kubernetes applications.
You can think of these charts as treasure maps to packages of preconfigured Kubernetes resources called “buildpacks.” The concept of “buildpacks” is another thing that came from the Deis acquisition, and a language detection system uses configurable Draft “packs” that can support any language, framework, or runtime environment. A Draft pack consists of a detection script, a Dockerfile and a Helm Chart.
Draft up
The next command is “draft up” (and that’s pretty much it). What it does is ship your code to a Kubernetes cluster (cloud or on-premises), compiles it there with the Dockerfile, and deploys it with the Helm Chart. Additionally, any changes go live in seconds, and you can edit straight off your laptop without the need to install Kubernetes and Docker.
This allows coders to build a tight loop from dev to deployment that’s essentially automated and hassle free. Draft is also highly customizable, and ships with support for languages including Node.js, Go, Java, Python, PHP, and Ruby. While Draft lets you do quite a lot of customization to streamline the development of your apps, where it really stands out from the crowd is the fact that it writes straight to your source tree. It’s also unique in the sense that it allows you to deploy to either cloud, on-premises or even your own computer (if required).
Laptop Woes
A common complaint among cloud-native developers is that while they prefer to write code on their laptops, in most cases, the dependencies are just too much for their machines to handle. Draft takes care of that problem, and more. What makes it a great “all-round” CI/CD tool is the fact that users can edit their code locally in their dev environment while their app is simultaneously running in the cloud (with all its dependencies).
It’s probably also worth mentioning that Draft is officially Azure’s first open source appdev tool. There was probably some pride-swallowing involved with supporting a tool that originated at Google, but Microsoft knows that open source scales far better than any single organization on its own. Draft takes away the technical requirement or steep learning curve associated with deploying to Kubernetes, and leaves developers in an environment they’re familiar with. This looks like Microsoft’s go-to strategy, and Azure aims to be the “Matrix” where you end up in the cloud without even knowing it.
The Gateway Drug
Microsoft encourages everyone to spin up a Kubernetes Cluster on ACS and take Draft for a test drive, while others are calling it the “gateway drug” to Kubernetes. What rings true in that statement is that everyone wants to get in on the Kubernetes action. Unfortunately, not everyone knows how, and Microsoft is looking to fix that with two simple commands.