People that are interested in this blog post will interested in a book I wrote: Distributed Services with Go (https://pragprog.com/titles/tjgo/distributed-services-with-g...). The book walks the reader through building a distributed event service from scratch that uses Serf as a library for its service discovery.
This is another one of those posts where I had, like, two jobs (talking to our users about a way they can set up their Fly apps, and talking about Serf) and it definitely shows, but there was no way I was ever going to take the time to revise this into two documents. You can, if you like, just skim to the "What Serf Is Doing" section if you're interested in how Serf works, which was the fun part of this post to write.
I'm sort of kicking myself for not using Serf a lot more in the past; it's kind of like an inetd for clusters.
(Also: because I am the best, I forgot to set the repo public, which it is now; the links should all work now).