For my most recent side project
tailsk8s, I've been hacking on a
bare metal Kubernetes cluster that uses Tailscale for networking.
I had a lot of fun and learned a lot, but the TL;DR is that each Kubernetes
node is a Tailscale subnet router and uses the
kubenet CNI …
When using a database in an application, there are many ways the idioms from the database ecosystem can disagree with the idioms in the programming language used to write the application. The object-relational impedance mismatch is one such example of this, but that is mostly about differences between …
Over time an application becomes a living thing. When operating a running service, it's crucial to not only ask the question
Does the code being deployed work?
it's also crucial to ask
Can I safely deploy this change given the currently running version of my service?
This second question …
As features are added, changed or deleted, the data model used by an application usually changes as well. For most database-backed applications, this means migrations are needed.
With this in mind, the fundamental goal of database migrations:
The current database schema should match the currently running code.
However, achieving …