Suppose you develop a system that has multiple services (implemented by different teams, in different countries, using different technologies including java, php, c#, c++ and more). Let's assume that despite using different technologies, somehow you have agreed to integrate using RESTful APIs.

Does such a system need a Service Registry?

I understand that basically it's not mandatory, since each service may have its own configuration where the service it uses are located. However, creating a central location makes the life of operations easier: they don't need to configure the same service multiple times.

But creating a Service Registry may be complex. It's another system in the solution and it requires resources and even more important ownership. Who will owner it?

I can think about more pros and cons of a Service Registry. So what do you think?


In a complex system like you describe, I would say that the configuration of that system is at least as important, if not more so, than any individual component. Often in my experience, when a complex system I work on is not working, it is the configuration, not any individual component, that is responsible for the failure. An analogy I like to use is that of a lock: only when all the tumblers are aligned properly will it open.

So I recommend that you put a lot of effort into making correct configurations easy to set up, monitor, and deploy. Whether you use a separate service registry or some other mechanism is up to you. Recently I have taken to packaging configuration information as Debian packages (we use Ubuntu) that are installed from a central repository. Others use third-party systems like ZooKeeper.

So to answer your specific questions, a qualified yes to having a service registry. Qualified because the exact form of the management system is less important than having one and using it well. Its owner should be the same person or group that is responsible for a correctly functioning system. This might be the developers themselves (a DevOps organization), or perhaps a dedicated Operations team (more traditional). The initial set up of the systems should be a joint endeavor with all stakeholders participating in the specification of the configuration. Once that is done, a small group or person can handle the implementation.

  • Thank you for an extended answer. One of the problems with the ownership, is that each individual component has some business need it's quite clear for the management if it's profitable or not. While the central infrastructure component does not have a clear business need. – Tarlog Apr 30 '12 at 6:22
  • I would say it has an inherent business need which is the smooth functioning of the other components, kind of like management itself. :) – Randall Cook Apr 30 '12 at 6:38

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.