You Don't Need Kubernetes, You Need an Application Framework
A Platform for Platforms
Since becoming the industry standard, Kubernetes continues to draw controversy on whether it's the right solution for rapidly growing startups. Some developers argue that it only makes sense for Google-scale companies, while others happily use it for personal, small scale projects.
Both sides are right.
Kubernetes is a powerful framework for managing large scale deployments and microservices, but it does not provide an out-of-the-box workflow that makes teams productive. This is because Kubernetes was never designed to provide the end-user experience:
Kubernetes can help infra teams automate deployments and scaling, but it forces application developers to operate at the wrong level of abstraction. What most application developers really want is way to package and deploy their applications, without having to worry about them scalability or uptime. In other words, they want an Application Framework. And vanilla Kubernetes is not an Application Framework.
What is a Cloud Application Framework?
A solid application framework provides the right abstractions and structure so developers can focus their energy on the application logic. A framework for a single machine applications abstract away the underlying hardware and system resources, and provides a standard project structure and workflow for development. Application frameworks for the cloud should do the same thing, but at the whole cluster level instead of for a single machine.
The key components of an application framework are:
- A single workflow for building and deploying the project. This reduces the toil involved with getting your application into a running state
- An intuitive API for describing how you want the application to run — which parts should run asynchronously or in parallel? Which functions should be scheduled for later?
- An API that exposes the inner workings of the framework, so that you can tune or adjust it for high performance scenarios. For example: developers may want to add middleware that runs during the deployment workflow.
Building each of these components is a huge project, and most companies that move to Kubernetes find themselves spending tons of resources and dev hours cobbling a solution together from scratch. It’s a challenging project — easy and costly to get wrong.
Jetpack: a Power-Up for Kubernetes
Our team has spent a combined 35 years helping companies move into Kubernetes, and we’ve seen the challenges that face companies making this transition. It’s why we built Jetpack — a Cloud Native application framework that lets developers build their cloud backends just like they were building them for a single machine.
Our application framework provides the key elements needed to keep developers productive when working with Kubernetes:
- Jetpack's CLI provides a single workflow to deploy and run your backend. Jetpack handles the Kubernetes boilerplate and config generation for you, so you can deploy to any cluster with just
jetpack up
. - Jetpack's Clusterless Runtime makes it possible to schedule and run functions as Kubernetes pods. With a few simple annotations, you can orchestrate complex workflows, services, and scheduled tasks directly in code, no external config or DSL required.
- Jetpack's Launch Control service helps synchronize custom configuration and provision developer environments across your team. Administrators can configure how Jetpack creates deployments and provisions resources for developers, so that Jetpack augments their existing infrastructure and workflow.
Using a cloud application framework like Jetpack empowers you to take full advantage of Kubernetes' scalability and fault tolerance without sacrificing developer productivity. In a future post, we'll dive into each of these areas in detail, to show how developers can benefit from a cloud application framework