What do you use for service discovery?

There's a ton of choices out there - etcd, zookeeper, and more.

What are some of the pitfalls I should be aware of?

Should I keep things simple and roll my own using Redis backed by sentinel/clustering?

  • Can someone give a really brief description of what service discovery is, and when/why one would need it?

    What's wrong with simply having a config file that tells your code the URL for each service it depends on (assuming my understanding of what discovery is is valid)?