New in Fission: Live-Reload, Record-Replay, Canary Deployments, Prometheus integration
October 16, 2018
Today we’re really excited to launch a set of new features for
Fission, our open source Kubernetes-native
serverless framework. These features are all designed to help you
improve the quality and reliability of your serverless applications on
Serverless architectures have obvious productivity advantages. You
can get your apps up and running quickly, reducing the total lead time
to ship your new application. However, to make this “production
ready”, serverless architecture needs to be not just about moving
fast, but also about moving fast safely, and at scale. That means
we need features focussed on code quality, testing, better deployment
and release practices.
Fission is the first open source serverless framwork to offer
live-reload, record-replay, and automated canary deployments. We’re
making serverless functions on Kubernetes more mature, and ready for
Live-reload: Test as you type
With Live-reload, Fission automatically deploys the code as it is
written into a live Kubernetes test cluster, and allows developers to
toggle between their development environment and the runtime of the
function, to rapidly iterate through their coding and testing cycles.
This allows bugs to be found and fixed earlier in the application
development lifecycle, when it is cheaper to do so – before they are
discovered in the higher environments or cause any service disruption
in Production. Further, it simplifies and increases the fidelity of
integration tests, by running them earlier in the process using a live
environment that’s consistent with the configuration and related
services (i.e. database, API calls, etc.) that are used in Production.
Fission is the first serverless solution to offer Record-replay for
functions. This feature allows you to record function invocations
into a database, examine these recordings, and replay them on-demand
for testing and troubleshooting.
You can configure which functions and workflows to record and for how
long to retain the recorded events.
Record-replay is useful for developers to reproduce complex failures
during testing or debugging. It can also make regression testing
easier. In addition, operations teams can enable recording on a
subset of live production traffic – this can help developers
reproduce failures, and test application updates.
Automated Canary Deployments: Reduce the risk of failed releases
Canary deployments are a proven deployment strategy to minimize the
risk in deploying new releases.
In this strategy, a new version is initially released only to a small
fraction of users. If this version works well, it’s released to more
and more users; if it doesn’t work, those users are shifted back to
the stable version, and only that small set of users was affected by
the unstable new version.
Fission is the first open source serverless framework to provide fully
automated Canary Deployments. This means that Fission helps with not
just the traffic-splitting portion of Canary Deployments, but also the
feedback loop of checking for success and slowly rolling forward or
Fission automatically increments traffic proportions to the newer
version of a function as long as it succeeds, and rolls back to the
old version if the new version fails. You can configure the initial
percentage of traffic for the new version of the function, the the
release rate at which to roll out the new version, and the error rate
that will trigger a roll back.
Prometheus Integration: Easy metrics collection and alerts
Fission exposes Prometheus metrics for all your functions, so you
don’t have to build Prometheus integration into any of your code. You
get metrics simply by deploying functions into Fission.
Fission’s Prometheus integration gives you metrics for function
invocation rate, function duration, and error rate. These metrics can
also be used to set up alerts with Prometheus’ AlertManager service.
Prometheus has a powerful query language that you can use to produce
graphs. Additionally, Prometheus metrics can also feed Grafana to
Cost Optimizations in Fission
Since Fission is open source and works on any Kubernetes cluster, it
enables you to run on any infrastructure -– this means you can use
cheaper VM instance types on public clouds (such as spot instances on
AWS or preemptible instances on GCP).
And if you’re in a company with investments in datacenters, you can
continue taking advantage of those datacenters. Fission scales
resource usage up and down with demand, allowing you to maximize
infrastrcuture utilization (in both public cloud and on-premises
Fission functions can be configured with specific CPU and memory
resource usage limits, minimum/maximum number of instances and
These parameters allow for functions to be tuned with an execution
strategy that best fits the specific business use case – you can
optimize for cost, for performance, or for something in between.
For example, functions that have severe cost constraints can be
deployed into containers on-demand, minimizing costs at the expense of
performance. Conversely, functions that need performance above all
other requirements can be configured to have instances always running,
ensuring low latency but driving up costs. Functions can also take
advantage of Fission’s pre-warmed container pools, which aggregate the
cost of pooling over a large number of functions, while providing
performance benefits for all of them.
Headquartered in San Francisco, CA., Snapfish is the leader in online
photo printing services. Founded in 1999, it provides high-quality
photo products to consumers looking for great value and selection. The
company operates in multiple countries around the world and supports
blue-chip companies’ photo efforts.
Using Fission, Snapfish is able to simplify their development
experience, modernizing their applications to take advantage of
Serverless while leveraging their existing datacenter investments.
“Our global photo platform helps hundreds of millions of devoted users
preserve their memories by combining all of their favorite photos on
thousands of customized products. We are always looking for ways to
improve the way we manage the scale and quality of our
applications. These new Fission features will help our developers
deliver new customer experiences built on serverless applications
without the dependency of managing the complexity of scale”, said
Kenneth Lam, Director of Technology at Snapfish. “Fission allows our
company to benefit from the speed, cost savings and scalability of a
cloud-native development pattern on any environment we choose, whether
it be the public cloud or on-prem.”
See a quick demo of all the new features in Fission