Why Deployments Will Never Be 100% Kubernetes
May 15, 2017 by Armory
Companies need to become increasingly efficient at what they do because all metrics and ROIs are inevitably measured by time. All good techniques, tools, and best practices are ultimately designed with time efficiency in mind – and a question that becomes pertinent to advancement is: Can this be automated? If yes, why haven’t we done so?
The history of technology is a history of automation.
All jobs fall into four quadrants of work in a matrix with these two axes: Cognitive versus manual, routine versus non-routine. A vast majority of work is cognitive in the world of technology – even the work that software developers consider “manual steps” – because all steps require an intelligent human with relevant knowledge to make a decision (this is why they’re paid the big bucks): testing, deploying, maintenance, etc. However, technology has also improved to the point where tasks that developers consider “rote” work such as canary deployments and automated pipelines can be automated and overseen by non-human intelligence.
Kubernetes is a strong container tool (among others) that does its job well: making sure your applications are correctly silo’d off and interacting in a way that doesn’t sink the ship. Kubernetes is great for distributing apps across a large number of instances while handling system failures. It also has primitives in regards to deployments, but they’re “dumb”. The onus is on the developer to provide it information to make decisions. Developers are also left with the responsibility to come up with glue-code for how they want pipelines to run for each individual pipeline.
This “rote” work can be moved; when the organizational mind-set utilizes a different workflow, developers are no longer singularly responsible for the deployments and can instead tell an intelligent system to “get it done.” As intelligent systems become better at following non-linear flows of commands for mostly routine work our pipeline executions can be built to take advantage of these systems. When a developer can push their code to a system and know that the system will make sure it goes through all the necessary steps to get it live to production, the developer’s time is saved for further iteration.
“Automation” is simply a name we give for turning a routine task into something that can be done requiring the least amount of further human input: something as simple as making sure your sprinklers turn on at a specified time or as complicated as running a pipeline with multiple modal routes per stage as contingency plans. Current platform tools like Kubernetes and ECS were not designed with automating “execution” in mind – yes they’re great systems for organizing your library of apps but the system is hampered by the requirement of a human librarian making sure everything is placed where it should be.
Spinnaker’s biggest value on top of a platform like Kubernetes is the ability to “be” that human librarian. The automation process of deployments to Kubernetes and AWS can be controlled on a granular level like Stages and a macro-level like multi-cloud, multi-region deployments. In addition, Kubernetes is incapable of seeing outside its own box (literally) whereas Spinnaker sees the whole picture of your cloud deployments.
In short, Kubernetes isn’t always enough to give you a fully automated deployment flow from code to production. This is the gap that Spinnaker fills by allowing for orchestration of multiple steps through defining your deployment pipelines.
We’ve previously covered with two Google engineers the perfect blend of Spinnaker on top of Kubernetes, an integration that Google has devoted engineers and time to. We’ve also covered how to deploy Kubernetes with Spinnaker, if you would like to learn how to automate your Kubernetes deployments.
Recently Published Posts
How to Take the Pain of Rollbacks out of Deployments
Software applications have become an integral part of the business climate in most modern organizations. With an ever-increasing demand for new features and enhancement of already-existing ones, software teams constantly face novel challenges, and the pace of software development is growing by the day. To keep up with this fast-paced business climate, software teams […]
Read more →
Monitoring Spinnaker: Part 1
Overview One of the questions that comes up a lot is how you monitor Spinnaker itself. Not the apps Spinnaker is deploying, but Spinnaker itself and how it’s performing. This is a question that has a lot of different answers. There are a few guidelines, but many of the answers are the same as how […]
Read more →
The Importance of Patents: Interview with Nick Petrella, Head of Legal
In honor of Armory’s recent acquisition of a patent for continuous software deployment, we sat down with Nick Petrella, Head of Legal, for a casual conversation covering a wide range of subjects, from patent law to Nick’s background as a software engineer and why he made the leap to the law. Check out […]
Read more →