Extricate focused concerns (like authentication or service discovery) so they can be well-tested, well-designed, and reused in new services.
What else is there out there apart from ZooKeeper?
Doozer is the other option I've heard of that fills this role, but I don't personally know of anyone using it.
In terms of initial discoverability, services register in a designated place in ZooKeeper using an ephemeral node and then other services can find them there. You can set a "watch" on the ephemeral node to get notified if it goes away for any reason (ie. the other service or node goes down)
It is actually pretty neat because the same login session can still be used within multiple engines. You can also release them as gems too.
I used to work on an enterprise app which we created the whole chat system with Rails engine. Then, we release the engine as a gem so that it can be used on the main app. I think it works quite well for us so far.
more info: http://stackoverflow.com/questions/6118905/rails-3-1-engine-...
I've been using the same pattern. It works ok, but still feels clunky. ∞ bundle update. dev mode reloading for certain classes can be a major pain as well.
Was the implication that it's a layer on top of ZooKeeper or something completely different?
Our service discovery system is indeed a layer that sits between ZooKeeper and the application. But it's also pluggable -- that means that you don't have to use ZooKeeper as the system that tracks which service nodes are available; you can use something else, and write a plugin for our service discovery system that will talk to that instead. So it's not necessarily a layer on top of ZooKeeper, although we certainly use it that way.
I don't want to say too much about the technical details yet since we're still rolling it out in production and may change some pieces before it's released. Also, I'm not one of the primary authors and don't want to steal their thunder. ;) But yes, we do plan to open source it once the code is fairly stable (and once we have some time to jump through all the usual hoops of open sourcing code), and then we'll do a detailed post about how it all works. It's really cool and stunningly simple.