Skip to content

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!

License

Notifications You must be signed in to change notification settings

thechangelog/pipely

Repository files navigation

Pipely™️

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 💚

How it started

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

How is it going (a.k.a. Roadmap)

  • 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

Local development and testing

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

How can you help

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:

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

Changelog on Zulip

Contributors

About

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!

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages