产品将面对的社会形态
新研发的平台产品所面临的问题是:面对激烈的商业竞争形势,使大多数企业都面临着增长业绩、提高生产率和降低成本的压力,而产业的趋势是业务方法不断变化,特别表现在企业重构和解构这两个特征上。
企业重构:传统上的企业管理是一种层次化的垂直结构,打造了一个具有固定业务、确定交互、执行高效的模式。但是当竞争形势和市场需求发生变化的时候,它就与动态业务的趋势相冲突,阻碍了快速反应时间。这种外部压力迫使企业重新定位,向水平集成的业务流改变,这就形成了企业重构的趋势。
产业解构:在企业重构中,企业会根据自己的能力进行业务专业化。企业专注于自己的核心业务,业务以外的任务通常外包给第三方来提供实际的支援和交付,每个第三方再将重点放在提高自身的核心服务上,这就形成了产业的解构,以及新的产业链的形成。
这种业务不断变化的特征,对于以现代物流业为背景的仓库管理系统,同样有明显的表现。换句话说,所设计的仓库管理系统平台应该具有业务敏捷的变化特征。
面向服务的架构(SOA)的思想
软件是一种思维,而思维是受我们自己所处的社会形态影响的。
我们来观察社会形态的变化,随着社会需求趋向于复杂化和多样性,今天的社会形态逐步地向服务型社会转移。基于服务的企业诸如金融、交通、商店、法律等,它们本身有自己的工作流程,而流程的入口是用户需要,输出是用户需要的结果。
用户并不关心这些服务企业内部流程,他们需要的就是输入和输出。用户要做的事情,就是根据自己的需要,编排这些服务,以更方便、更快捷、更高的质量,来满足自己千变万化的需求。对这种基于服务的社会形态的理解,能给我们带来什么启示呢?如下图(A,C)所示。
如果在架构设计的时候也映射这种服务型社会的思想,把具备完整性和稳定性的业务做成一种托管服务,由上层应用业务去编排它们,如上图(B、D)所示。这样,当业务流程发生变化的时候,或者重新编排,或者加入新的服务,就可能使这种技术架构能够适应流程的变化。理解这一点很重要,它为我们的架构思想提供了基本的机制背景。
这就是面向服务的架构(SOA)的基本思想,它的特点是把软件部署为一种托管服务,可以通过网络访问,由客户按需定制和组合不同的服务完成既定的业务(业务敏捷)。还需要注意一点的是,与社会形态一样,服务必须强调规约,没有规约,服务本身也就不存在了。这些对于社会形态的考察,使我们对于软件架构形态与方法论的本源有了更深入的理解。
面向服务的架构(SOA)基本形式
综上所述,在实际产品设计中,技术架构可以分成服务提供、服务编排和服务消费三个层。为了避免点对点服务带来的问题(不能改变信息、难以跟踪服务使用状况、难以验证、安全隐患等),可以通过企业服务总线(Enterprise Service Bus,ESB)对服务进行集中管理。必要的时候,还可以应用云计算服务完成资源的合理配置。基本的面向服务架构如下图所示。
服务应该是无状态的,也就是服务不依赖于任何事先设定的条件和其它服务的状态,是状态无关的,所以它们可以被编排以执行商业逻辑。