随着SOA日趋成熟,安全服务必不可少。ADP公司就是这种情况,该公司现正致力于部署标准安全模型,作为供其他所有服务使用的集中流程。同样,技术服 务提供商USi也在使用联合身份管理验证用户身份。高级技术部门的副总裁Mike Rulf说: “服务可能甚至不知道用户是谁,但知道该用户已在服务传送过程中的某个阶段通过了验证,因为服务传送了这些验证信息。”
AMR研究公司 的高级分析师Dennis Gaughan提醒道: “SOA中的安全没有得到足够的注意。”早期项目往往侧重于定义服务和传送接口,或者侧重于把业务逻辑与数据逻辑彼此分开来,并且把它们与执行及显示分开 来。但随着服务得到广泛使用及采用,重新改动服务以适应访问控制和授权机制就变得困难重重——这往往需要大范围改动,因为安全控制会改变流程和数据流。
USi公司的Rulf说,这就是为什么一开始考虑到安全性比较明智的原因,哪怕你的安全服务和系统还没有得到部署。在USi,所有服务都有一个标准的 Web服务描述语言(WSDL)模板,模板包括了安全验证和访问控制,还包括错误报告、调用行为及数据预期等,确保一开始服务就有安全性。
使用LDAP将是身份管理项目的关键,Turato计划让所有服务都包括调用LDAP查询的机制。为了防止每个服务在每次运行时进行直接查询,Avis Budget现计划在业务流程的特定阶段进行查询,然后把该验证信息传送给以后的服务。
这种方法存在的风险是,有人只要一路传送“通过验证的”属性,就可以骗过验证机制,所以Turato准备把验证属性变成签名,签名可以跟踪验证在何处进行、何时进行,目的是为了确保在合适流程的合适阶段进行了验证。
测试及调试服务
部署SOA时常不被重视的另一个工作就是测试及调试。ADP公司的Bongiorno说: “从许多方面来看,实施得当的SOA有助于你更快进入市场,但测试方面需要一些时间。”
虽然使用严格定义的服务接口有助于缓解服务集成测试工作,但服务之间多对多联系的性质以及配置服务的众多软硬件系统给测试带来了难度。eBay的 Barrese说: “你总不至于把整个企业变成质量保证实验室,”所以你得尽量扩大测试平台,但又不能影响企业业务的正常运作。
eBay自行开发了部分质量保证工具用于自动递归测试,帮助测试SOA固有的许多执行场景。同时也使用现成工具,譬如Mercury Interactive开发的工具(ADP公司也使用Mercury的自动递归测试工具)。另外,eBay正在评估采用开放源代码的Apache Axis服务测试工具与其BEA和IBM平台的兼容性。
一个与此有关的难题是版本控制。随着服务越来越大,常常需要支持多个版本,因为你没法同时更新所有服务。注册中心或者存储库可以维护版本信息,作为那些服务的标准属性的一部分。这种保护措施很重要,因为这样其他服务就可以相应调整期望。
当然,再全面的测试也不可能发现每个错误,比如,很可能会在监控过程发现事务错误。但要在运行时确认服务本身的逻辑错误,调用服务必须查看返回的消息,才能根据业务流程的规范,知道格式、策略或者其他预期属性是否出现不一致。
立足于自己掌握的技术
选择哪一种开发平台、注册中心/存储库、管理模式、消息传送系统、安全技术以及测试工具,这会让人晕头转向。人们很容易陷入战术性决策,譬如要不要购买ESB、向谁购买。但你应当在确定了业务流程、核心服务和整体架构之后,再去选择方案。
咨询公司TekFinancial Solutions的总裁Bill Adiletta说: “讨论一大堆技术只会让人分散精力。”别试图评估所有可能的技术,而是要看看已有的技术,摈弃无法满足你需求的任何技术。如果公司内部的技术无法胜任,不 妨把目光转向外面的厂商。他说,在剩下来的合适技术当中,选择最符合现有技术基础和技能组合的那些技术,尽可能避免专有技术。
文章来源于领测软件测试网 https://www.ltesting.net/