In the beginning there was Iaas and Paas
When the cloud started Iaas was all the rage. You could spin up and manage servers like never before. Application developers could utilize cheap disposable systems for their needs. Unfortunately the old robust ci/cd pipelines couldn’t easily create and tear down these systems for app dev uses.
Enter platform as a service (Paas). Automation and abstractions were created to allow app devs to easily push code and see it running with no concern for the underlying mechanics of how the code became a running app. Heroku , Elastic Beanstalk ,and Cloud Foundry has stood out here. Early on this automation was done by forcing developers to conform to vendor patterns. The Paas vendor would provide a set of capabilities and ways to use them, apps that were built in this manner could take advantage of the great automation available.
As time went on developers wanted more and more customizations. So the vendors began allowing customized Buildpacks . Developers could use the base Buildpacks provided or build their own customizations.
Around the same time the Iaas crowd was feeling the pain that the freedom of the cloud brought. Trying to mange and scale infrastructure elements such as Nginx , Varnish , Redis , message queues, as well as many the custom apps their teams built, was challenging. Tools like Puppet , Chef , Ansible , Salt were brought in to manage and maintain systems, by installing, upgrading, patching, and keeping them healthy. This too was challenging with lots of code and complicated recipes being used to keep things consistent.
Enter Container Orchestration
A new patten began to emerge from the Iaas side, focusing on bundling things into containers that could be managed the same regardless of the contents. Docker was the technology front runner in this pack. The ability to package customized systems in highly efficient standardized containers was a huge draw. Orchestration engines such as Docker swarm , Mesos and Kubernetes were built to coordinate running and scaling these containers.
So at this point people were using turnkey Paas and Iaas solutions in the cloud, offloading the work that used to be associated with running those yourself. Container orchestration started to follow suit. Today multiple providers are running orchestration engines such as Kubernetes for you, taking the headache out of running and operating the tooling. Though you can also run it yourself on other providers or inside your data center.
Unfortunately at that point there were still limitations. Paas offerings are really focused just on app deployments. You wouldn’t run a Jenkins server inside a Paas for example. The containers and orchestration of docker and Kubernetes offer great power but add layers of complexity developers don’t want to worry about for their deployments.
Paas Style Automation for Kubernetes
Paas style automation for containers bridges this divide by providing the simplified interface developers love, but providing the power and flexibility of container orchestration. Now you can use the same system to deploy your code Paas style, and run your Jenkins or Redis servers. Standard Kubernetes tools can be used to operate both.
Deis Workflow provides robust automation for Kubernetes that allows developers to utilize simple “push” commands to deploy their code live. The resulting deployment is a standard set up Kubernetes resources.
At first glance a Paas on a Kubernetes may seem odd but it’s not. The Paas interface on a portable powerful vendor neutral container orchestration engine brings the best of both worlds into one solution.
Checkout Deis Workflow