PaaS is a platform upon which developers can build and deploy applications. Within the PaaS market, two of the major players are Pivotal Cloud Foundry and Kubernetes. They’re both platform services for deploying cloud-native apps, and they both deal with containers, and the list goes on. These products offer a higher level of abstraction than we get from IaaS products meaning that, beyond networking, storage and servers, the application’s O/S, middleware and runtime are all managed by the PaaS.
Pivotal Cloud Foundry and Kubernetes share many similar features like containerization, namespacing, and authentication, but their overall approaches to the deployment of cloud-native applications differ greatly.
PCF is one example of an “application” PaaS, while Kubernetes is a “container” PaaS (sometimes called CaaS). On the one hand, we have the platform abstraction at the application level, building and deploying a fully-configured application, and on the other hand, we have the platform abstraction at the container level, building and deploying containers as a part of a complete application.
Audience and use case:
Cloud Foundry 's primary audience is enterprise application developers, who want to deploy 12-factor stateless apps using Heroku-style buildpacks. Pivotal Cloud Foundry is a high-level abstraction of cloud-native application development. You give PCF an application, and the platform does the rest. It does everything from understanding application dependencies to container building and scaling and wiring up networking and routing. Cloud Foundry ’s higher-level abstraction offers a higher level of productivity to its users. With productivity, though, comes limitations in what can be customized in the runtime. PCF is ideal for new applications, cloud-native apps and apps that run fine out of a buildpack. PCF is for teams working with short lifecycles and frequent releases.
Kubernetes' audience is a little broader, including both stateless application and stateful service developers who provide their own containers. Kubernetes is a container scheduler or orchestrator. With container orchestration tools, the user creates and maintains the container themselves. For many teams, having this flexibility and control over the application is preferred. Instead of focusing only on the app, the developer needs to create the container and then maintain it in the future, for example, when anything on the stack has an update (a new JVM version, etc.). Kubernetes is a lower-level abstraction in the PaaS world meaning greater flexibility to implement customizations and build your containers to run how you want them to run. Unfortunately, this also means more work for your engineering teams and decreased productivity.
While both platforms promise the ability to deploy and run applications anywhere, Cloud Foundry ’s deployment has more specific requirements, typically deploying on dedicated on-prem virtual infrastructure or dedicated public cloud subscriptions. Kubernetes offers a lot more flexibility in terms of both the infrastructure or baremetal servers to run on as well as the ability to deploy Kubernetes across multiple clouds still offering a unified application developer experience.
Enterprises embarking on a digital transformation, speeding up their internal application development and delivery often start with taking greenfield development efforts and deploy, leverage Cloud Foundry to enable these application teams. When used with ideal applications (for example springboot based java application), it gets quick adoption for these teams and very successful for the specific development teams, who are appropriately trained and enabled.
As more application teams get involved, with a desire to leverage various development stacks, requiring more flexibility in combining together various services, the same enterprise organization often turns to Kubernetes, to complement the offering. This gets further adoption with ISVs providing a wide range of opensource and closed source components as containerized applications easily deployable in Kubernetes.
In these cases, organization often end up with a hybrid PaaS/CaaS offering, with the CaaS offering growing faster over time, while the opinionated PaaS offering’s adoption is limited by the new, greenfield, 12-factor applications being developed. Other enterprises start out with Kubernetes and while enjoying the flexibility offered by the CaaS platform, if investing the necessary engineering and operations to maintain the applications and the platform, may not ever adopt a more opinionated platform like Cloud Foundry .