A single-purpose, single-tenant CDN for changelog.com. Runs Varnish Cache (open source) on Fly.io. This repository exists for a single reason: build the simplest CDN on Fly.io. You are welcome to fork it and make it your own. OSS FTW 💚
I like the idea of having like this 20-line Varnish config that we deploy around the world, and it’s like “Look at our CDN, guys.”
It’s so simple, and it can do exactly what we want it to do, and nothing more.
But I understand that that’s a pipe dream, because that Varnish config will be slightly longer than 20 lines, and we’d run into all sorts of issues that we end up sinking all kinds of time into.
🧢 Jerod Santo - March 29, 2024 - Changelog & Friends #38
- Static backend, 1 day stale, stale on error, x-headers - Initial commit
- Dynamic backend, cache-status header - PR #1
- Add tests - PR #3
- Make it easy to develop locally - PR #7
- Support TLS origins
- Add feeds backend: /feed -> http://feeds.changelog.place/feed.xml
- Send logs to Honeycomb.io (same structure as Fastly logs)
- Send logs to S3 (for stats)
- Implement purge across all app instances (Fly.io machines)
- Add edge redirects from Fastly service
While it's fun watching other people experiment with digital resin (varnish 😂), it's a whole lot more fun when you can repeat those experiments yourself, understand more how it works, and make your own modifications.
You can find some instructions and notes for kicking the tires and developing & testing this locally.
A few other commands that you may be interested in:
# Requires https://github.com/casey/just
just
Available recipes:
report # Open the test report
test *ARGS # Run the tests
# Run the tests
just test
# There is a script which precedes `just`
# Yes, we should combine them. Contributions welcome!
./run
First argument must be one of the following
deploy → deploys to Fly.io
world-scale → makes it World Scale™
small-scale → makes it Small Scale™
http-detailed → shows detailed http response
http-measure → measures http response times
http-profile → profiles http responses
demo-2024-01-26 → runs through the first demo
demo-2024-06-21 → runs through the second demo
💡 All following arguments are passed to the command
If you have any ideas on how to improve this, please open an issue or go straight for a pull request. We make this as easy as possible:
- All commits emphasize good commit messages (more text for humans)
- This repository is kept small & simple (single purpose: build the simplest CDN on Fly.io)
- Slow & thoughtful approach - join our journey via audio with transcripts or written
See you in our Zulip Chat 👋
Note
Join from https://changelog.com/~ . It requires signing up and requesting an invite before you can Log in
- James A Rosen, Staff Engineer
- Matt Johnson, Senior Site Reliability Engineer