Anyone have any good recommendations for developing VCL configs? Both in terms of concepts (the docs pretty much show a state machine but don’t really cover what pass vs hash etc. mean that I can see), and in terms of practical dev tricks. I’ve been trying to get a testbed set up locally where I’d be able to have a varnish/ folder in my repo, run a command, and have varnish hotswap a new config.
At a past employer we replaced our varnish edge app (with ~1500 lines of config) with a home-grown one based on the golang stdlib.
It was slightly (only slightly) more CPU and RAM-intensive (not a problem in our case), not measurably slower on IO (the bit we cared about) and meant most of our devs could contribute changes (instead of 1-2 who knew enough to write VCL without crashing the site).