Humane Registry

2008 年 12 月 1 日

SOA 狂热者推崇的新服务世界的一个特点是注册中心的概念。这通常被描述为一种自动化系统,它允许系统自动在注册中心中查找有用的服务,并自行绑定和使用这些服务。

好吧,计算机偶尔看起来很聪明,但我并不特别相信这个想法。虽然可能存在自动服务查找的奇特边缘情况,但我认为 20 次中有 22 次,都是人类程序员在进行查找。

我最近和我的同事 Erik Dörnenburg 聊了聊他与 Halvard Skogsrud 合作构建的一个服务注册中心项目,该注册中心旨在供人类使用和维护。该组织已经在使用 ServiceCustodians 来管理项目的开发,因此注册中心需要在该环境中工作。这导致了以下原则:

  • 人们开发和使用服务,因此以人为本(抱歉 UDDI,感谢你的参与)。
  • 不要指望人们输入信息来保持其最新状态,人们已经很忙了。
  • 让人们易于阅读和贡献。

注册中心的核心是一个维基,它允许人们轻松地输入有关特定服务的的信息。不仅是服务的构建者,还有使用过它的人。毕竟,用户的意见通常比提供者的意见更有用(我猜产品评论网站的流量比供应商网站的流量要多)。

维基使人们能够轻松地描述服务,但这依赖于人们有时间贡献。维基有助于简化操作,因为你只需点击即可,但仍然需要时间。因此,他们通过一些自动收集的有用信息来备份人工输入。

  • 一个工具,它查询源代码控制系统并显示谁提交了服务,何时提交以及提交了多少。这有助于人类读者找出他们应该与哪些其他人交谈。一个曾经提交过大部分代码的人,即使是在一段时间之前,也可能对服务的核心设计和目的了如指掌。最近提交过几次代码的人可能更了解最近的使用情况和怪癖。
  • 来自 CI 服务器和源代码控制系统的 RSS 提要。
  • 来自问题跟踪系统的任务和错误信息。
  • 来自消息总线的流量数据,表明服务的使用频率和时间。消息总线还提供了一些关于服务消费者的线索。
  • EJB 容器中的拦截器,它捕获了消费者应用程序名称 - 再次了解谁在使用该服务。这些拦截器位于消费者端,用于捕获消费者应用程序名称,位于服务端,用于了解使用模式。
  • 来自 Ivy 依赖项的信息。

像这样的注册中心的目的是,它执行大量自动化工作来获取信息,但以期望人类读者的方式呈现信息。此外,它了解人类读者最关心的问题是关于在项目中工作的人员:他们是谁,他们何时在这个项目上工作,我应该给谁发邮件,以及我在哪里可以找到一杯非常棒的鸡尾酒?

致谢

许多功能的灵感来自 ohloh.net