Self-Hosting
BemiHQ/bemiWhen self-hosting Bemi, your data never leaves your premises.
Bemi consists of three main parts:
- Debezium, a very flexible tool for implementing Change Data Capture that is written in Java. It is used by many companies that need to implement ETL such as Airbyte and Materialize. We rely on it to be able to connect to PostgreSQL replication log, perform logical decoding, and send raw data to a data sink.
- NATS JetStream, a cloud-native messaging system written in Go. Debezium is historically designed to send data to Kafka, but it can be also re-configured to send data to NATS JetStream. It is much more lightweight and easy to manage while being very performant and having over 45 clients for different programming languages.
- Bemi Worker, a process responsible for stitching data change with app context sent via our open-source ORM packages and storing data changes. It is written in TypeScript and uses the
core
that we rely on for our Bemi cloud platform.
You can try it out locally by using a Docker image:
docker run \
-e DB_HOST=host.docker.internal \
-e DB_PORT=5434 \
-e DB_NAME=bemi_dev_source \
-e DB_USER=postgres \
-e DB_PASSWORD=postgres \
public.ecr.aws/bemi/dev:latest
DB_HOST
pointing to host.docker.internal
allows accessing 127.0.0.1
on your host machine if you run PostgreSQL outside Docker. See github.com/BemiHQ/bemi for more information.
Self-Hosting (OSS) | Bemi Cloud | |
---|---|---|
PostgreSQL source database | ✅ | ✅ |
Automatic data change tracking | ✅ | ✅ |
Automatic application context | ✅ | ✅ |
Audit Trail UI | ❌ | ✅ |
Priority support | ❌ | ✅ |
Automatic table partitioning | ❌ | ✅ |
Automatic data retention | ❌ | ✅ |
Autoscaling and high availability | ❌ | ✅ |
Column-based filter rules | ❌ | ✅ |
Automatic updates and backups | ❌ | ✅ |
Control plane and monitoring | ❌ | ✅ |
For production use cases, we recommend opting for Self-Hosting Enterprise instead of the OSS version. The open-source version is designed for evaluation and non-critical workloads, and while it provides core functionality, it lacks the advanced optimizations, monitoring, and edge cases needed for robust production environments.
Self-Hosting Enterprise
Bemi Self-Hosting Enterprise is the most robust way to run Bemi yourself. With this option, you'll get all the optimizations and UI functionality of Bemi Cloud.
To start with Self-Hosting Enterprise, you'll need a valid license key. Talk to us to get started.