For those working at small companies, discussing the benefits of a slow adoption of orchestrated containers will come off sounding crazy. Agile companies have been reaping the benefits of container-tooling like Docker and service-orchestrators like Kubernetes for a couple of years now.
Unfortunately, for those of us in the enterprise, things unfold at a much different pace. When building and selling products to very large companies, the excellence of your technical stack is often a low priority when compared to adherence to well-established policies and regulations. For companies where tech adoption cycles are measured in years, not months or heaven-forbid weeks, a justifiable fear of falling for the latest tech fad will loom large over all decisions.
Many tech departments in large organizations are coming off a decade-long successful transition to virtual machines (VMs) from bare metal servers. While improved, request times for VMs may still be weeks or even months. Often the IT department will send a monthly “bill” out to you for each running VM they have provisioned. VM uptime can be problematic.
Into this mix comes the promise of containers, particularly when paired with a cloud-provider offering fast access to cheap VMs. On demand VMs are a breath of fresh air for R&D teams used to waiting and waiting for resources. Adding infrastructure-as-code tools like Terraform with deployment pipelines like Jenkins, it’s easy to start pushing out Docker images to a private registry. Unfortunately, this new found speed of development can quickly outrun the comfort-level of compliance and security departments, resulting in them vetoing some or all such deployments.
Assuming that you’re able to clear all the hurdles of container deployment in the enterprise, you’ll still need to manage interacting and dependent services across numerous containers. Whether scaling traditional web-tier apps or newer microservices, managing their deployment in an automated manner is critical.
Container orchestration is a fast moving space, however Docker and Kubernetes are looking like the current front-runners with the most community and industry momentum. DC/OS, built on Marathon & Mesos, shown below, is also promising:
Currently, these all have free community editions with optional commercial add-ons, which can be a benefit or concern depending on your viewpoint. For example, Docker DataCenter is commercial option. If you’re not worried by cloud-provider lock-in, then AWS, Azure, and GCP all offer dedicated services.
To ease the development pipeline for your programmers, take a look at the application provider space (APaaS) including Cloud Foundry and Open Shift. I’ve heard good things about Convox, Deis, Flynn, and Dokku. Currently, I’m experimenting with ochothon on DC/OS.
With so many options, it’s understandable that the enterprise is hesitant to make a serious commitment. Ignoring these innovations however is not a good plan, so take the time to explore to find the best tools for your teams. Let us know what works for you by discussing it below.