Tailetc Alternatives
-
sqlboiler
Generate a Go ORM tailored to your database schema.
-
go-memdb
Golang in-memory database built on immutable radix trees
-
homelab
Brad's homelab setup
-
lungo
A MongoDB compatible embeddable database and toolkit for Go.
-
pgtest
PostgreSQL test helper for Go
Posts
-
An Unlikely Database Migration
Interesting choice of technology, but you didn't completely convince me to why this is better than just using SQLite or PostgreSQL with a lagging replica. (You could probably start with either one and easily migrate to the other one if needed.)
In particular you've designed a very complicated system: Operationally you need an etcd cluster and a tailetc cluster. Code-wise you now have to maintain your own transaction-aware caching layer on top of etcd (https://github.com/tailscale/tailetc/blob/main/tailetc.go). That's quite a brave task considering how many databases fail at Jepsen. Have you tried running Jepsen tests on tailetc yourself? You also mentioned a secondary index system which I assume is built on top of tailetc again? How does that interact with tailetc?
Considering that high-availability was not a requirement and that the main problem with the previous solution was performance ("writes went from nearly a second (sometimes worse!) to milliseconds") it looks like a simple server with SQLite + some indexes could have gotten you quite far.
We don't really get the full overview from a short blog post like this though so maybe it turns out to be a great solution for you. The code quality itself looks great and it seems that you have thought about all of the hard problems.
Stats
tailscale/tailetc is an open source project licensed under BSD 3-clause "New" or "Revised" License which is an OSI approved license.