我有时觉得SOA很想禅宗里讲的,“说是一物即不中”。其中最难的,就是把这样一个抽象的概念说给没有技术背景的人去听,建立概念唯一的办法就是利用比喻。在我听说过的几十个关于SOA的比喻之中,有几个比喻得到更多人的认同。那些想把这个概念说给业务人员和管理者的技术人员,不要再冒险了,用这几个比喻试一下。
面向服务架构是一个面向服务的、对分布式计算环境基础设施进行设计、建设和管理的架构。SOA建立了商业与IT服务之间的联系,为分布、动态变化的商业环境提供稳定、可扩展、安全和可管理的IT支撑环境。SOA是当今电信领军企业率先考虑的方法论并成为提升通信服务的能力引擎,它使IT部门可搭建灵活的可配置体系以支持随需应变的电信业务。
过分炒作“REST是比SOAP更适合于SOA的技术实现手段”、“SOA未来的希望在REST”这类危险的观念(上回谈的主题),其最终的结果,可能是既伤害了REST,又对SOA没好处的双输局面。
SOA的成功实施和价值体现在于大规模重用。为了重用,企业必须在组织内部推动文化变革,改变传统以项目和应用为基础的IT交付方式,建立一种有益于跨部门的参与和分享的文化、组织和制度。这需要得到来自高层的支持,强烈的认同感和持续不断的努力。不知道有几个CIO能够幸运地同时拥有这三点?
IDC预测,到2010年,全球基于SOA的服务开支将高达338亿美元。这一数字表明,SOA时代的到来已经不可阻挡。那么,谁将会是这场激战中的最终赢家,需要时间来为我们证明。
采用最佳实践和正确的架构,以确保共享服务的短期和长期内的成功 面向服务的架构(Service-OrientedArchitecture,SOA)在概念上是简单的,但是它的价值还不是很明显,在分布式企业中实现共享服务基础架构仍然十分困难。构建正确的架构和采用实现共享服务前景所需的最佳实践可以使过渡变得容易,并有助于确保短期和长期内的成功。 让我们从更广的范围着手。企业需要建立公司级的最佳实践,以用于构建成功的SOA。“OrganizationalandOperationalBestPractices”中描述了我们在企业内使用的企业级最佳实践。此外,我们还有六个技术和架构方面的最佳实践(请参阅“ABetterWaytoBuild”)。现在,让我们看看构建SOA时,企业和技术团队都应该考虑的一些主要的特性、设计注意事项和实现选择。
业务用户希望将BI融入工作环境的需求,迫使BI必须适应复杂的IT环境。鉴于BI部署时必须考虑多种应用、平台和数据源,基于SOA的集成成为最佳选择。
在那场关于内聚对SOA是否重要的争论中,CarlosPerez表达了他关于软件构造中的耦合(coupling)及其在SOA领域的演变的观点。他首先给出了BertrandMeyer的模块性原理(principlesofmodularity),然后将之延伸到自己的一套面向服务的原则上。
SaaS正在改变整个IT产业的格局。如果把IT行业看成是一个大舞台,原来的IT公司就是演员,而SaaS服务供应商们就是引座员(有时它们也是演员),用户则是观众。在舞台上,各个厂商极力展示自己的优势,如功能、成本、效率,想方设法来吸引用户的注意。这意味着,客户在选择适合自己的IT厂商时,可以挑肥拣瘦。
观察过去一年SOA在美国的发展,一个愈来愈明显的趋势是,SOA和传统EA(EnterpriseArchitecture;企业架构)领域逐渐在协作和融合。不久前,美国知名的SOA顾问大卫·林锡肯,DavidLinthicum在一个由TheOpenGroup主办的大会上预言:五年后,大家将不再像现在这么看待SOA,因为SOA将逐渐融入EA,变成只是EA实践中的一部份。
面向服务的架构承诺,一旦被采用,将会带来许多好处。任何新方法所带来的典型问题都是,如何克服初始成本和中断采用的问题。对于SOA来说,其现实问题是,大多数企业信息尚未支持WebService,甚至无法以XML格式交付数据。现实中的数据仍被“老信徒”们所统治着的——从逗号分隔的数据到Cobol数据格式。更有甚者,许多使用这些格式的系统恐怕根本就碰不得——它们太重要或者太脆弱了,不能乱动,也就无法达到启用WebService的目的。
企业产品和服务的表现形式正在跟随终端用户的需求发生着快速变化——你的企业可能不得不每年推出一个甚至多个新产品、新业务、新服务,因为落后和迟缓就意味着被残酷的市场淘汰。
SOA寻求跨组织边界的重用的本性决定了它在降低开发成本、灵活响应业务变化的同时,也大大增加了设计开发的复杂性,并因此带来在沟通、协作和管理上的复杂性。
今天,越来越多的CIO已经意识到,这是一个要求实时响应的时代。为了抓住商业机会,获得竞争优势,企业要求IT能够改变流程或者调整应用”on-the-fly”,在不破坏现有应用的情况下,多快好省地交付新的业务能力,响应业务的变化。
像一声春雷,SOA已经被IT界迅速接受,它帮助企业用模块化的方法搭建并部署服务。然而,架构的实际应用需要仔细的规划。感兴趣的企业必须首先确定他们适合长期应用和支持SOA。
选择SOA就意味着将业务流程或功能用服务来表达,而服务的颗粒度直接影响到服务的质量,包括灵活性和效率等诸多方面。因此,选择合适的颗粒度对服务设计是至关重要的。因为老被人问起,节前就有了就“服务颗粒度”问题写点东西的想法,没想到却因此困扰了我整个国庆节。回头想这其中很重要的一个原因,就是业界并没有就此形成一个非常清晰的答案。一个服务应该选择怎样的颗粒度,目前来看基本上还是一个主观的度量,并没有一个严格的标准可以遵循,很大程度上取决于设计者的经验。
企业2.0(Enterprise 2.0)是哈佛大学的Andrew McAfee教授最早提出的一个概念,指的是在企业内部、企业与合作伙伴之间利用刚刚出现的各种社交软件平台完成沟通和协作。Andrew McAfee还同时给出企业2.0与SOA的区别,他认为,SOA是一种模块化的软件架构,这里的模块就是一小段代码,相互之间能够交互,而企业2.0指的是企业内部和企业与合作伙伴之间使用的各种形式的社交软件。
随着加入SaaS ERP阵营的服务商越来越多,中小企业的选择范围也越来越大。然而,不管采用那种方法来选择服务商,都不要忽略安全调查的重要性。IDG报告表示有2/3以上参与调查的受访者表示会把安全问题作为SaaS ERP选型时重要的考虑因素,因为在安全问题上,SaaS ERP的风险一般来说会大于用户在内部自行架设软件,而且对于企业内部IT人员而言,外部式的SaaS ERP安全风险也颇难掌控。