On personal infrastructure

My personal infrastructure is a collection of small, purpose-built services spread across AWS Lambda, Cloudflare Pages, and a k3s homelab cluster. There’s no grand unified platform. Each project gets deployed wherever makes sense for its constraints.

The constellation approach

josh.bot is a Go API on Lambda. k8-one.josh.bot is an Astro site on Cloudflare. The resume site is static HTML on S3 + CloudFront. LiftLog has a SvelteKit frontend with a Go backend. Each one is independent, each one is simple.

This mirrors how I think about infrastructure professionally. Small services with clear boundaries, deployed independently, composed through well-defined interfaces. The same principles that work at scale work for personal projects - they just happen to be cheaper.

Why not a monolith

I could consolidate everything into one app. But then every deployment risks everything. Every dependency upgrade touches everything. Every experiment contaminates the stable stuff.

With independent services, I can rebuild any piece without touching the rest. I can try Elixir for one project and Go for another. I can let something sit untouched for months and it keeps running because it has no dependencies on anything that changed.

The homelab

The k3s cluster runs monitoring and a few internal tools. It’s small - three nodes, nothing fancy. But it gives me a place to run things that don’t fit the serverless model, and it keeps my Kubernetes skills sharp for work.