Keep it Boring
We are selling a service to people who care about reliability, and people who know reliability know that keeping things simple is one of the best steps on the path to keeping things reliable.
So here’s what we use!
We use default, boring technology whenever possible. Every time we are clever, we should know the reason why. We use our cleverness on the core of the service (keeping the check-in service reliable using master-master DBs and CRDTs), and we keep the rest simple.
This means we use:
- SQLite for our database.
- Tailscale for internal networking.
- Letsencrypt for SSL/TLS certificates.
- cert-manager to manage them on each host.
- nginx for our public web server and reverse proxy.
- Docker for containerization.
- Docker Hub to hold our container images.
- Prometheus to generate our metrics.
- Grafana for our monitoring dashboards.
- Github for our source code management.
- Github Actions for CI/CD.
- Go for our server programming language.
- Kotlin and Swift for our mobile programming languages.
- AWS and GCP for our cloud providers, and only vanilla EC2/GCE machines to avoid lock-in
- Godaddy and CloudFlare for our DNS providers
- Hugo for our static website generator
We also use every available linter and formatter to make sure our code, configs, and output are internally clean and consistent and align with the expectations of the outside world.
It’s been a great experience so far, and we’re excited to see how it goes.
Contribute to the discussion by replying on BlueSky!