Avanade的观点 面向服务的体系结构 加拿大首席技术官JeffKempiners和高级建筑师LarryBeck Contents 易于集成5 对新建筑的需求 许多组织在过去几十年中创建的信息技术解决方案已不足以满足当代业务需求。在当今的经济环境中,全球市场要求企业以更高的敏捷性、竞争力和生产力运营,以前所未有的低成本运营——因为现在他们的竞争对手来自全球各个角落。一家公司忽视的技术进步将被另一家公司采用,并利用它们的优势。 因此,公司必须迅速认识到并应对新的机遇和挑战以及日益激烈的全球竞争。我们需要更快速、更准确地响应客户需求,并针对不同客户的独特需求提供量身定制的响应。为了提高效率和生产力,需要更快地获取更深入、更准确和更及时的信息,以便做出更好的决策。随着公司通过建立虚拟供应链来应对挑战,从而将更多的全球合作伙伴和供应商带入其核心业务,他们需要与这些合作伙伴和供应商无缝集成的方法。 许多IT环境无法应对这一挑战。他们的系统不灵活,无法快速适应新的业务或监管要求。太多的系统是复杂的、专有的和孤立的,使得定制和集成变得困难。无法共享现有应用程序组件会增加开发、测试、部署和维护新解决方案的时间和成本。因此,太多的资源与修复、维护和尝试集成现有解决方案有关,而不是投资于满足新业务需求的创新解决方案。IT部门需要成为公司的战略资产,但往往是成本中心而不是创新中心。 幸运的是,趋势一直在朝着更有成效的方向发展。诸如可扩展标记语言(XML)和简单对象访问协议(SOAP)之类的技术为集成系统提供了新的方法。传统投资现在可以与跨平台、部门、地理边界甚至跨企业的新解决方案集成。大量的软件标准进一步促进了集成。在过去的40年里,软件重用已经从子例程发展到函数,最终演变成类、对象和方法。其结果是软件更快,更容易和更具成本效益的开发,维护和适应新的要求。 这些发展共同为解决业务和IT面临的问题提供了基础:面向服务的体系结构(SOA)。 SOA简介 SOA是一种为组织构建软件解决方案的方法,它允许更大的灵活性和敏捷性、更容易地将遗留系统集成到新技术以及改进的维护和可扩展性,并促进共享现有服务投资。通过基于SOA部署业务解决方案,IT成为战略资产,帮助组织获得竞争优势,同时降低风险。 领先的独立分析师对SOA为企业提供的价值非常感兴趣,并预测 SOA软件和服务的采用。IDC预测,2007年全球基于SOA的服务支出为104亿美元,比2006年增长63.4%。在 2011年预测期结束时,此类服务的支出预计将在全球范围内增长408亿美元。”1SOA背后的关键概念为上述优点提供了基础,包括: 基金会服务-作为应用程序功能的构建块开发,可以在IT基础架构中需要的任何地方共享使用。 流程编排-用于将公共服务构建块组装或聚合为更大、更复杂的业务流程。 开放标准-描述服务及其交互,使服务和业务流程能够无缝交互。 插件功能—允许在需要时将未来的服务、流程和应用程序添加到体系结构中。 灵活性和敏捷性 SOA提供的灵活性意味着基于SOA的解决方案可以在任何基于标准的平台上实现。 共享服务使SOA具有很大的灵活性和敏捷性。这些服务包括业务流程(检查库存或获得信用卡授权)和技术流程(安全 ,仪器或数据库连接)。SOA环境中的应用程序是通过组装这些服务的组并按特定顺序调用它们来创建的。更改应用程序功能或创建新功能变成了添加或更改调用的服务或更改调用它们的顺序,而不是必须通过编写新代码来创建功能。服务的适当粒度级别-它提供单个功能还是一组密切相关的功能?-取决于组织以及它计划如何将数据实体和/或功能分解为业务就绪应用程序。 举一个简单的例子,可以将在线购物车构建为一组服务,包括购物车创建、项目添加、更改数量、订单提交和清除购物车。如果组织想要添加功能(例如自动建议类似的购买),则可以创建并调用旨在提供该建议的服务。修改购物车将涉及在适当的时间插入对该服务的调用,而不是必须重写和重新测试购物车应用程序的大部分。然后,该建议服务可以由应用的其他区域共享 ,诸如项目细节屏幕或者当建议缺货项目的替代时。 1“2007-2011年全球基于SOA的服务预测与分析,IDC,2007年4月。 SOA也使应用程序之间的连接和交互变得更加容易。对于传统的体系结构,当组织环境中的一个应用程序被替换时,组织必须重写替换应用程序和环境其余部分之间的所有低级连接——这是一个耗时、艰苦和昂贵的提议。 相比之下,使用SOA,可以替换新的应用程序(它们是共享服务的聚合),而不需要大量重写来保持交互性。例如,在线订单输入系统可以连接到确认订购商品的库存可用性的仓库管理系统,以及连接到为订单放置提供客户支持的客户关系管理(CRM)系统。组织可能希望替换仓库管理或CRM应用程序,因为更好的替代方案可用。如果公司利用SOA实现系统之间的连接,他们现在可以调用新的仓库和CRM服务,而无需重写订单输入应用程序内部的连接。通常,这些连接是立即兼容的,仅需要小的适配器或外观来从实现中提取接口,就像消费者可以通过简单地将新组件插入现有系统来替换家庭娱乐系统中的CD播放器或电视一样。 基于SOA的解决方案带来的灵活性和敏捷性意味着组织可以更快地响应新的业务需求、客户需求、竞争压力和市场机会。这些收益中隐含的是IT部门的额外收益。通过SOA,预生产使用的每个阶段都会加速:开发、架构、测试和业务流程设计。这些节省加起来对大型企业来说是可观的数额。 它们对IT部门的意义不仅仅是成本效益高的运营。对于许多组织来说,更新和维护现有的解决方案消耗了大部分的IT预算(一些分析师表示,70%),为更具创新性的战略追求留下了很少的资源。通过减少引入新的或更新的解决方案的时间和成本,SOA使IT部门能够启动全新的计划,例如部署实时协作环境或整合服务器基础架构,从而在整个组织中获得新的成本节约和收益。 SOA还使业务用户及其IT同行能够更有效地协同工作。传统上,业务用户已将其需求传递给IT,并且IT在(几天、几周或几个月后)使用被认为可以满足业务需求的解决方案进行响应。相比之下,最好的SOA工具可以放在业务用户手中,使他们能够定义其解决方案的行为。IT人员仍在创建这些服务,但业务用户可以贡献他们最了解的内容:这些服务应如何协同工作以服务于客户、内部业务用户或其他最终用户。随着服务目录的增长,为当前和未来功能创建解决方案的机会也在增加。结果不仅仅是更快的解决方案。这是更好的解决方案。 更轻松的集成 SOA可以轻松地跨平台集成-但SOA也可以跨以前无法逾越的边界进行集成:非常长的距离。由于它们由特定解决方案所需调用的离散服务组成,因此您可以在任何地方托管SOA应用程序: 公司的纽约总部,位于帕洛阿尔托的研究设施,位于班加罗尔的软件开发运营,位于马尼拉的维护中心或其他任何地方 。只要提供适当的凭据,就可以通过任何应用程序从任何地方访问这些服务。 不仅仅是技术可以分散。人民也可以。跨地理边界的集成意味着组织可以在世界任何地方更有效地利用人力资源。一个团队可以编写新服务,而另一个团队可以更新现有服务。第三个团队可以将服务聚合到一个新的应用程序中,而第四个团队针对它测试脚本。软件生命周期的所有方面都可以在需要时发生,而不是等待单个设施按顺序管理生命周期过程。 SOA的易于集成还延长了组织可能依赖的数百万美元的大型机系统的寿命和投资回报。众所周知,大型机系统很难更新。编写代码的开发人员可能已经退休,新的开发人员可能很难找到。当一个应用程序运行到数十万行代码时,在一个部分中进行更改肯定会在其他地方产生意想不到的后果。 然而,竞争压力、客户需求、监管变化和其他因素都要求更新大型机代码。SOA可以作为大型机和其他系统之间的外观或接口 ,提供最具成本效益的方式——在许多情况下,也是唯一可行的方式——来实现所需的更改。例如,不断变化的合规性法规要求对大型机系统不提供的数据访问进行审计、报告和控制。通过使用SOA作为大型机的接口,IT可以相对较少的工作量来提供这些功能。这个外观层将为现代IT策略(如日志记录、缓存、安全和路由)提供一个归宿,单个SOA接口层可以为使用大型机的所有系统提供这些功能,从而无需为使用该服务的每个下游系统复制功能。 与任何快速发展的技术一样,在考虑复杂的互操作性场景时,在SOA实现时要谨慎。复杂性可以被定义为使用更新的、可能未经测试的标准的跨平台服务。诸如上下文传递,自路由,动态消息类型(模式)之类的高级场景,尤其是所谓的适应性服务,都应受到审查,公司应提防承诺。 —使用SOA的免费集成”。严格的端到端验证测试方法是所有涉及集成的SOA实现的关键原则。此外,密切监控行业标准以预测变化,以及适应这些变化的灵活性,可以使SOA实现免于一些潜在的严重陷阱。 维护和可扩展性 如前所述,SOA由于其灵活性、敏捷性和易于集成,减少了软件更新的时间和成本。SOA解决方案可以通过在服务级别进行更改并在整个基础架构中快速传播来反映新的业务单元策略和治理要求。组织可以更快地响应竞争威胁、立法变更或新的业务需求和机会。财务合规说明就是一个例子;如果企业颁布了额外的立法要求。 利用SOA将能够更轻松地扩展或修改其当前解决方案,以满足这些新需求。 数据隐私问题提出了另一个有趣的例子。当《健康保险流通和责任法案》(HIPAA)在美国成为法律时,已经转向基于Web服务的方法的公司能够将安全性,加密,访问控制和其他所需的隐私措施注入到服务层他们的应用程序,并立即满足新的隐私要求。HIPAA早于SOA的普及,一些使用SOA来解决HIPAA合规性的组织可能没有意识到他们正在这样做。当时的方法是使用XMLWeb服务作为集成机制。但是,用于将应用程序与服务松散耦合的基于SOAP的协议是SOA的基础元素,在随后的几年中,这些协议被标准化并被广泛采用,为当今的SOA实现铺平了道路。 SOA的维护和可扩展性优势不仅仅来自快速重新配置和添加兼容服务的能力。任务关键型应用程序需要高水平的可用性,IT部门在与其业务用户的服务级别协议(SLA)中保证可用性。保证的可用性越高,满足SLA所需的维护和关注就越多。当应用程序从头开始由集成代码构建时,必须投入时间和金钱来确保整个应用程序的可用性。 然而,并不是关键任务应用程序中的每一行代码本身都是关键任务;大多数关键任务应用程序将一些真正关键的功能与大多数更平凡的流程结合在一起。SOA以及构建它们的组件化服务允许IT部门将注意力集中在应用程序级别以下,将注意力集中在关键任务的特定服务上,并投入时间和资源以确保这些特定服务的SLA。不是关键任务的服务,同时也是应用程序的一部分,可以分配较低的优先级和SLA。结果是,虽然应用程序的某些更普通的功能有时可能不可用,但“关键”功能将始终在SLA的范围内可用,并且总体成本较低。to. 要做到这一点,调用共享服务的―主机应用程序必须与最关键的服务一样可用。但是,主机调用的许多非关键服务可能会参与更合理的SLA。除了更有效地利用人员之外,IT部门现在还可以更有效地利用硬件和其他资产,部署专门用于关键任务功能的服务,而不是用于关键任务应用程序中的所有软件功能。 结果:组织在需要的地方获得高可用性,IT部门进行更有效和更经济的投资,以确保可用性。作为一个额外的好处,确保任务关键型服务的高可用性的单一投资将相同的高可用性传播到调用该服务的每个应用程序,而不是要求IT部门在使用该功能的每个应用程序中花费维护资源。在这个模型中,团队将拥有特定的功能,而不是整个应用程序,提供更深入的专业知识和更集中的工作。 SOA以另一种方式实现高可用性。由于服务可以在全球企业网络中的任何位置运行,因此组织可以为关键任务创建冗余服务 需要,创建一个服务的网状网络,可以在任何给定服务或数据中心发生故障的情况下重新路由。 共享现有服务投资 SOA通常被描述为“重复使用”现有组件或服务。这是一个误称,低估了SOA