A new framework built atop Kubernetes is the latest project to offer serverless or AWS Lambda-style application architecture on your own hardware or in a Kubernetes-as-a-service offering.
The Fission framework keeps the details about Docker and Kubernetes away from developers, allowing them to concentrate on the software rather than the infrastructure. It's another example of Kubernetes becoming a foundational technology.
Some assembly, but little container knowledge, required
Written in Go and created by managed-infrastructure provider Platform9, Fission works in conjunction with any Kubernetes cluster. Developers write functions that use Fission's API, much the same as they would for AWS Lambda. Each function runs in what's called an environment, essentially a package for the language runtime. Triggers are used to map functions to events; HTTP routes are one common trigger.
Fission lets users effortlessly leverage Kubernetes and Docker to run applications on it. Developers don't need to know intimate details about Docker or Kubernetes simply to ensure the application can run well. Likewise, developers don't have to build app containers, but they can always use a prebuilt container if needed, especially if the app is larger and more complex than a single function can encapsulate.
Fission's design allows applications to be highly responsive to triggers. When launched, Fission creates a pool of "prewarmed" containers ready to receive functions. According to Fission's developers, this means an average of 100 milliseconds for the "cold start" of an application, although that figure will likely be dependent on the deployment and the hardware.
We're just getting warmed up!
A few good clues indicate what Fission's developers want to do with the project in the future. For one, the plan includes being as language- and runtime-agnostic as possible. Right now the only environments (read: runtimes) that ship with Fission are for Node.js and Python, but new ones can be added as needed, and existing ones can be modified freely. "An environment is essentially just a container with a web server and dynamic loader," explains Fission's documentation.
Another currently underdeveloped area that will be expanded in future releases: The variety of triggers available to Fission. Right now, HTTP routes are the only trigger type that can be used, but plans are on the table to add other triggers, such as Kubernetes events.