Boring infrastructure is a feature

Every infrastructure choice is a bet about who will be on call in six months. Usually that person is you, with less context and more patience required.

The test

I try to apply one question before adding anything: if this breaks at 2am, what do I look at first?

If the answer involves a control plane I do not understand, a vendor status page, or a stack trace from a framework I adopted last week, the thing is not ready. It can still be right. It is just not free.

What survives

The things that have survived in my setup are the ones with obvious failure modes:

Choice Failure looks like
Static files on a CDN Nothing. There is nothing to fail.
Playbooks in git A host differs from the repo, and the diff says how
One database Queries get slow, and you can see which ones
Plain TLS certs Expiry warnings, long before expiry

What does not

Anything where the happy path is easy and the recovery path is a wiki page. Managed platforms are wonderful until the day the abstraction leaks and the leak is in someone else’s queue.

None of this is an argument for self-hosting everything. It is an argument for knowing which parts of your system you can actually reason about, and keeping that set as large as you can afford.

← All writing