Self-Hosting
BemiHQ/bemiBemi 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.
If you want to self-host our solution in a production environment, please contact us, and we'll be happy to provide you with a Docker image and assist with configuring the system in exchange for your feedback :)
Self-Hosting vs Bemi Cloud
Self-Hosting | Bemi Cloud | |
---|---|---|
Automatic data change tracking | ✅ | ✅ |
PostgreSQL source database | ✅ | ✅ |
Automatic table partitioning | ❌ | ✅ |
Automatic data retention | ❌ | ✅ |
Autoscaling and high availability | ❌ | ✅ |
Control plane and monitoring | ❌ | ✅ |
Automatic updates | ❌ | ✅ |
Included support | ❌ | ✅ |
Activity Log UI (coming soon) | ❌ | ✅ |