“让我们想象一个快乐 SOA 的美好世界,在这里企业所需的计算能力被分解到许多小型的应用当中,相互提供服务以支持有效的协作。一个晴朗的早晨某个消费者服务需要请求某个供应者服务的一些信息。” Martin Fowler 设置了一个任何多业务单元 SOA 基础设施都可能遇到问题的场景。
在理想化的世界里,消费服务的开发者只需要请求供应者服务开发相应的潜在服务,一切就搞定了。但生活不是一帆风顺的——症结在于供应服务的开发者还要做其它的事,通常这对于他们的客户和管理层来说,要比帮助这个消费者服务团队重要得多。
Martin 指出了该问题的一个真实世界解决案例,它已被其同事 Erik Dörnenburg 使用。
他们借鉴了开源的做法,将他们所有的服务都实现为内部的开源系统。这让消费服务开发者可以自己编写服务。
他建议每个人都能够增强服务并提交“补丁”,然后由服务监管人审阅和“应用”。他将服务监管者的角色比拟成开源项目的维护者,并且“尽管通过监管人的方式不能完全消除消费开发者需要等待供应服务开发者这一问题,但它极大地减轻了这一难题”。他认为监管人应用“补丁”要比自己开发服务改进要容易得多,而且这一流程伸缩性极佳,只要消费服务开发者随着时间发展赢得了监管人的信任即可。
服务监管者的责任对于这一方式的成功是至关重要的。Martin 提及的解决方案,类似于 Jim Webber 的 Geurilla SOA ,一个草根 SOA 实施方法。Tony Baer,在 SOA Insights 的播客中,警告了这一方式的潜在风险。
如果项目变得足够大,你从头开始创建一个新服务就为了能快点把新需求搞定,结果会如何?这正是大杂烩代码(你得到的是一堆相互缠绕的程序)产生的方式--尽管能更快的产出,但你最后真的就不会想要去维护那些垃圾了。
到底服务重用需要被制度化并由各自的功能团队来治理,还是应当在企业内部采取草根式的开源运动并由每个功能团队的服务监管人来充当牧师?请一定亲自查看Martin Fowlers 的原文并分享你的经验。
查看英文原文: Service Custodian
评论