Compute Services

Unifying Containers, Apps, and Functions

Share this post:

Unifying containers, apps, and functions

At KubeCon in December 2018, Jason McGee, IBM Fellow, VP, and CTO of the IBM Cloud Platform, delivered an address about how IBM is unifying containers, functions, and apps through the IBM Cloud Kubernetes Service and key open source projects like Knative and Istio. This blog post is a summary of Jason’s address:

Cloud-native developers today have to decide between three separate container platforms. Some choose the flexibility of containers with Kubernetes, others the velocity of an opinionated platform like Cloud Foundry, and some believe the future is all about serverless functions. How do you know which ones to use? And should you have to pick?

I want to share with you a vision for the marriage of containers, apps, and functions—driven by Kubernetes, Istio, and the emergence of Knative—into a single combined container application platform. It’s time to break down the silos and see how these projects’ paths are converging to solve real microservice dilemmas: security, scale, and operations.

The platform challenge

I started my career 20+ years ago working on Java Application Servers. Application servers provided a platform for developers to efficiently build and run applications without having to solve all the plumbing problems. This might seem like a long time ago, but today, this community is solving the same platform challenge in the era of cloud. And we are doing it together in open source.

In any realistic application development project, you have different requirements that drive your different solution models. Some components of your application might be stateless web applications. Some components are stateful databases. Some are more event-oriented. Some components need high flexibility and some are simpler.

An effective runtime platform lets you handle all these requirements. In the cloud-native world today, we support three main styles of application components:

  • Containers
  • 12–factor applications
  • Functions

There are open and proprietary solutions addressing each style, from Cloud Foundry for 12-factor applications, to Kubernetes with container management, and OpenWhisk, AWS Lambda, and others for functions. The challenge is that we have mostly been building these three styles as three independent stacks. This has forced developers to pick sides. It has forced technology to get more complex as it attempts to handle all three styles at the same time. And it has complicated development projects as people try to mix dissimilar systems.

Making progress

Over the last few years, we have made a lot of progress on joining forces and agreeing to some common elements in the stack, including container runtimes (docker, garden, runc, Rkt -> Containerd) and container orchestration (Docker Swarm, Nomad, Mesos, etc -> Kubernetes).

And we have quickly agreed on new things together, including open service brokers/service catalog and service mesh and sidecars with Istio and Envoy

What about apps and functions? Most of our work and agreements have been at the level of containers on down. What’s next is to complete the stack with a common view for applications and functions.

Cloud Foundry (CF) is already the most prominent application platform for cloud-native. It’s already aligned on containerd, it pioneered service brokers, and it is in the process of incorporating Istio. With the Eirini project, Cloud Foundry will be able to better leverage Kubernetes as its orchestration layer. That is critical to getting us to a single stack.

What’s missing is alignment around a build model that works for CF and for Kubernetes . . .

With functions, the landscape is fragmented. There are many products and projects, each with different approaches for handling concurrency and scale. Some are aligned around Kubernetes, but many aren’t. Among the main cloud providers, everyone has a Functions-as-a-Service (FaaS) offering: AWS Lambda, IBM Cloud Functions, Azure Functions, and Google Cloud Functions. In the open source community, there are many active projects: OpenFaaS, Nuclio, Effe, Pivotal Functions, Fn Project, Kubeless, OpenWhisk, Fission, Iron.io, Gestalt, OpenLambda, etc.

Some of these, like IBM Cloud Functions, OpenFaaS, Kubeless, etc., run on top of Kubernetes. Some don’t. What’s missing is alignment around a build and run model that takes advantage of Kubernetes.

And that’s where Knative fits in.

Knative and running serverless platforms on Kubernetes

Knative gives us the building blocks for serverless platforms to run on top of Kubernetes. The Knative project is an opportunity for the community to work together on bringing apps and functions into the stack in a common way and reducing fragmentation for developers.

“In July, we introduced Knative, an open source serverless platform based on Kubernetes that provides critical building blocks for modern serverless applications,” said Oren Teich, Director of Product Management, Google Cloud. “In the four months since then, we have seen tremendous enthusiasm from contributing companies, many of whom are furthering Knative as the serverless standard for hybrid and multicloud users. IBM has been a contributor to Knative from the start, and the expanded support for Knative through the IBM Cloud Kubernetes Service is a key outcome of our joint open source efforts.” 

Knative focuses on the “boring but difficult” parts that everyone needs, but no one benefits from doing over and over again on their own. This, in turn, frees developers to spend more time writing application code, not worrying about how they are going to build, deploy, monitor, and debug it.

A unified container application platform

The end state is a unified container application platform that lets developers leverage the best of containers, apps, and functions in a single integrated way without edges and lets us, as a community, work together to enable the next 20 years of applications.

Kubernetes is the core of IBM Cloud. We’ve spent the past year migrating many of our core IBM Cloud services to Kubernetes. Now is the time to leverage Kubernetes and unify containers, apps, and functions using technology like Knative and Istio. At IBM Cloud, we are excited to help make this vision a reality. With services like the IBM Cloud Kubernetes Service, Cloud Foundry Enterprise Environment, IBM Cloud Functions, and IBM Cloud Private, we are delivering this modern stack today in our public and private clouds.

Further learning

IBM Fellow, VP, and CTO, Cloud Platform

More Compute Services stories
March 21, 2019

VIDEO – What is a GPU?

In this video, Alex Hudak covers the basics of GPUs, including the differences between a GPU and CPU, the top GPU applications (including industry examples), and why it’s beneficial to use GPUs on cloud infrastructure.

Continue reading

March 21, 2019

Knative on IBM Cloud Kubernetes Service: Your First App… Now Even Easier!

We're excited to bring you a change to how IBM Cloud Kubernetes Service exposes Knative. The process has been simplified greatly and will make your life much easier.

Continue reading

March 18, 2019

Kubernetes Clusters: Architecture for Rapid, Controlled Cloud App Delivery

Kubernetes clusters are the building blocks of Kubernetes, and they provide the architectural foundation for the platform. The modularity of this building block structure enables availability, scalability, and ease of deployment.

Continue reading