Self-hosted / federated / open-core Beneath
Problem to solve and solution
We want to offer a self-hosted version of Beneath. It will give people more flexibility and independence when using Beneath. And it's a necessity to enable another awesome feature: Federated data exploration and derivation. To achieve a self-hosted version, we need to refactor for an open-core + enterprise edition Beneath.
Proposed solution and changes
-
Implement a Postgres engine driver
- There's a dependency on #5 for that
-
Refactor codebase to an open-core + enterprise edition architecture
- We want to avoid multiple repos... research options (Go plugins?)
- Ideas for non-open features: billing, quotas and quota management, advanced drivers, federated replication,
-
Create a single Docker image that bundles the full self-hosted edition (like GitLab's Omnibus)
-
Great docs to explain how to deploy and administer it
-
Refactor client libraries to enable specifying host
-
Prepare a roadmap for how to get to federated exploration and derivations (and ensure this implementation lays the right foundation)
-
Self-hosting – Postgres driver (and multi-region/federated data processing)
-
Refactor for open-core / enterprise-edition
-
Open source and/or federated Beneath deployments
Risks and challenges
- Consider whether/how this might play into a multi-region hosted Beneath (us.beneath.dev, eu.beneath.dev, ...?)