Today we are excited to announce Fanout Platform!
Fanout Platform is infrastructure software for building HTTP streaming and WebSocket APIs. It is comprised of our open source project, Pushpin, along with special add-ons for scaling. Helm charts are available for installation on Kubernetes.
Here’s a short video that shows how easy it is to upgrade from Pushpin to Fanout Platform:
Read on to learn about why we are doing this, and how it works.
The need for a self-hostable push platform
“Nobody should want to build their own pub sub mechanism.”
- Amir Kashani, VP Cloud Native Development & IoT at Rackspace.
Building and scaling a data push system is messy business. On one hand, the basics have gotten easier over the years, with async programming & green threads hitting the mainstream. However, there’s still stateful code to write and long-running processes to manage, and distributed systems are still hard.
This problem space naturally deserves pre-built components that can be reached for. Indeed, there are several SaaS offerings that help with pushing data in realtime, including our own Fanout Cloud. Despite this, plenty of companies still choose to build.
How companies choose to build or buy is complicated. It’s not simply about cloud vs on-prem. It’s also about features, security, and switching costs, and each customer has different requirements. There’s even a chicken-and-egg problem around switching costs, because there needs to be something to switch to.
By releasing Fanout Platform, we hope to give a real on-prem option for the companies that need it. But, we also hope this release will further improve the viability of our SaaS product. It’s 2021, and developers shouldn’t feel like they need to reinvent this particular wheel.
Fanout’s set of offerings has now reached the trifecta of:
- Open source core: Pushpin
- Enterprise self-hostable: Fanout Platform
- SaaS: Fanout Cloud
All three offerings have identical programming interfaces. You can switch between them without any code changes.
How to get it
Fanout Platform is a commercial solution. Please contact sales to obtain a trial license to download.
Once you have download access, Fanout Platform can be easily installed using Helm, which will automatically download container images from Fanout’s private Docker registry. See the documentation to get an idea of what to expect.
How it works
Fanout Platform is comprised of several components, notably including:
- Pushpin. The push proxy you know and love.
- Redis. For accepting published messages and enforcing rate limits.
- fc-adapter. For interfacing Pushpin with the rest of the cluster.
- fc-broker. For relaying messages within a cluster and across clusters (multi-region).
- fc-dbworker. For fairly processing messages stored in Redis and dispatching to fc-broker.
- fc-api. For receiving published messages and authorizing publishers.
- fc-subsaggregator. For processing subscription events.
- fc-conftool. For dynamically reconfiguring components based on cluster changes.
(The “fc-“ prefixing stands for “Fanout Cluster”, a collection of components for, well, running a Fanout cluster.)
When deployed to Kubernetes, these components are organized into pods and linked together according to the diagram below:
The system is horizontally scalable on all the important dimensions: connections, messages, channels. Scaling is simply a matter of changing the number of pod replicas; new pods are autodiscovered and incorporated into the cluster.
Multitenancy is supported, too. Different channel scopes (with their own DNS domains) can be segmented by realms, similar to how our cloud service works.