Why Knative

Why Knative

I got elected to the Knative TOC a few months ago, which is nice (and then I stopped blogging for a bit).

I'd like to write a few very biased paragraphs about why I think Knative might be the future of PaaS and Platforms and Serverless.

If we've learnt anything in the last few years, with the rise of Cloud and Kubernetes it's that there's a pretty large set of people who prefer building stuff and running it themselves, even if there are pretty good services available to do a lot of it for you. A lot of people like to use Cloud services, but they like to have the flexibility to run some stuff themselves, and they're a lot happier to use lower-level services (that still leave a lot of flexibility and opinions up to the user) than very high-level services. (A lot of others prefer things that take the business of running servers completely away, and let you just focus on pushing code or containers or functions).

The reason a lot of people like to build their own platforms even with pretty good ones (Heroku, Cloud Foundry etc) available is simple: at a certain scale a 1% efficiency, or a 1% ability to customise a developer workflow is pretty important. Also developers like to build things and learn things.

Things you can build on also have an ecosystem effect of plugins and value-add services and tutorials and skills transfer that's pretty important.

But! Not everyone is actually at the sort of scale where running your own platform department makes sense. And! It'd sure be nice if having worked for a company on a PaaS/FaaS-style platform, most of the skills and knowledge would work at another.

That's where Knative comes in. We have a well specified platform API that's supported by major cloud providers and easy to run locally, so you can start on the cloud. Then we make it easy to run on your own Kubernetes cluster, and to customise and extend to build your own platform. You can do this with Kubernetes directly, but Knative gives you a lot of stuff out of the box (scale to zero, ingress integration, a well thought out api with good defaults, a nice eventing layer based on CloudEvents..), and standardisation which means Knative apps will run on (non-exhaustively) IBM Code Engine (disclaimer: I work for IBM!) and Google Cloud Run and VMware's Tanzu Cloud Runtimes and Red Hat OpenShift Serverless and Triggermesh. Hopefully over time even more people will package Knative up in to interesting offerings, but once you've learnt one you're in a good position to use another – or to build your own internal one.

Tldr Knative is the sweet spot of a kubernetes-based API that gives you a nice developer-focused platform with scale to zero and code-to-container workflows and nice integration (if you want it) with things like Tekton and Service Meshes and all that good stuff /and also/ it scales from something a provider can give you with all bells and whistles out of the box (Code Engine, Cloud Run, OpenShift, Tanzu..), to something you can customise and build yourself internally for your organisation.

Show Comments