Introduction
Fission brings serverless functions to any Kubernetes cluster without vendor lock-in. Developers write functions in their preferred language, and Fission handles packaging, routing, scaling, and lifecycle management with minimal cold-start latency.
What Fission Does
- Deploys functions from source code directly, no Dockerfile or container build step needed
- Maintains pre-warmed environment pools for sub-second cold starts
- Automatically scales functions from zero to thousands of instances based on demand
- Provides HTTP triggers, message queue triggers (Kafka, NATS), and timer triggers
- Supports canary deployments with traffic splitting for safe function rollouts
Architecture Overview
Fission runs three core components on Kubernetes: the Controller (API server), the Router (HTTP gateway), and the Executor (manages function pods). The Executor uses a pool-based strategy that keeps warm containers ready, or a new-deploy strategy for heavier workloads. Functions are injected into pre-built environment containers at invocation time.
Self-Hosting & Configuration
- Requires an existing Kubernetes cluster (1.23+) with Helm 3 for installation
- Environment images for Python, Go, Node.js, Java, Ruby, and .NET are provided officially
- Persistent storage for function source and build artifacts uses Kubernetes PVCs
- Prometheus and OpenTelemetry integrations are available for metrics and tracing
- Istio integration enables advanced traffic management and mTLS between functions
Key Features
- Pool-based executor pre-warms containers for sub-second cold starts
- Multi-language support with pluggable environment images
- Built-in Kafka and NATS connectors for event-driven architectures
- Canary deployments with percentage-based traffic splitting
- Composable workflows chain multiple functions into pipelines
Comparison with Similar Tools
- OpenFaaS — Also runs on K8s but requires building container images; Fission deploys from source directly
- Knative — More general-purpose serving platform; Fission is purpose-built for functions with faster cold starts
- Kubeless — Archived project; Fission is actively maintained with regular releases
- AWS Lambda — Vendor-locked SaaS; Fission runs on any Kubernetes cluster you control
- Nuclio — Strong on real-time data; Fission offers broader language support and simpler developer experience
FAQ
Q: How fast are Fission cold starts? A: With pool-based execution, cold starts are typically under 100ms since containers are pre-warmed and only the function code is loaded at invocation.
Q: Can I use custom container images? A: Yes. You can build custom environment images or use the new-deploy executor strategy with your own Docker images.
Q: Does Fission scale to zero? A: Yes. The new-deploy executor scales functions to zero replicas when idle and scales up on incoming requests.
Q: What languages are supported? A: Official environments exist for Python, Go, Node.js, Java, Ruby, PHP, and .NET. Custom environments can be created for any language.