I don’t think you can reasonably call this “service discovery”. This is a key-value store with a REST interface. That’s great, but service discovery is more than that:
- your service should only register when it’s healthy. You’d need a separate process monitoring health and posting it up to metadata, preferably on a separate VM and preferably in many zones
- you need a dead man’s switch. If the VM shuts off entirely, it’s not going to clean up the entry
- if two services of the same type start up at the same time, you’ve got a race condition, and I doubt metadata handles that well
And at any rate, service discovery via REST is pretty unwieldy vs DNS.