成功实施SOA的十大诀窍
reference: http://soft.chinabyte.com/162/11024162.shtml
SOA(服务导向架构)与其说是一种技术,倒不如说是一种思维方式,它是一项大胆的基础架构变革,帮我们通过技术和协同工作实现了文化变迁。如今,很多CIO都感受到了SOA的热度,福布斯500强中的大部分企业也都在考虑实施他们的SOA方案。
尽管技术确实扮演了重要角色,不过正确的SOA方法需求对软件研发方法进行重新设计(或重构)。我们习惯采用基于组件或基于项目的方法来进行应用程式研发,不过SOA需求采用自顶向下(top-down)的方法。这意味着我们应以全新的眼光来看待应用程式设计和项目管理。
然而如何才能成功实施SOA,让这颗看起来很诱人的葡萄吃起来也甜?笔者总结了10大秘诀与读者分享。
1.合理规划业务需求
与相关业务人员一起把诸多流程分解成服务,然后才可以进行各种技术决策。别指望全靠你自己对业务流程进行分解后,它们就会起作用。应当与相关业务人员合作,一起分析你已经确认的部门里的流程,并进行合理化精简;繁重工作主要应由业务人员来完成,因为他们需要想方设法弄清楚如何重新设计流程。共同明确分解后的流程,然后决定哪些流程有必要实现自动化。
解决办法就是纠正你的基础理念--特别是从旁边关注业务的规划及弹性,提高自身的技术水平,确保设计与需求相吻合。设法建立一个结构清晰,设计合理的管理进程,并能够预见进程的发展结果。
2.正确制定实施路线图
成立了企业架构团队之后,接下来的主要任务是和业务和IT团队合作,然后制定实施路线图。就像所有一个好的项目,计划得越细致,成功的机会就越大。
一个常见策略是开始创建当前状态和未来状态的文件,这些文件使得查看整体情况和理解系统的交互变得更加容易。这一方法还能帮助确定哪些是公司 "痛点"的系统。下一步是确定可行的里程碑(在大多数情况中,为6个月、12个月、24个月或36个月)。一些遗留下来的关键任务系统会随着时间的推移而修修补补,包括"粘缝在一起的借助于绷带"的解决方案。像这样的系统就是定时炸弹。有时候,这些就是实现 SOA的非常好的初始候选项目。通常,根据系统功能的紊乱情况怎么、修复他的可行性怎么及投资回报率(ROI)来挑选初始候选项目。
该路线图应和公司的战略利益联系在一起。诸如项目进度、资金筹集、人员安排、业务驱动因素和业界竞争等因素都可能影响实施的进程。由于一些因素可能使得SOA脱离正确的轨道,应当仔细地定期追踪进程。记住,最初的一些成功对于赢得对SOA的支持和给机构带来的重构十分重要。因此,从策略的角度看,在初始阶段选择正确的候选项目十分重要。
SOA路线图一般具有多个阶段。在第一阶段中,公司进行前期摸索并试图了解技术挑战。在这一阶段,实施诸如验证、授权、确认和数据转换等简单的水平服务。在第二阶段中,制定更多的面向业务的服务。这些服务常常从门户中冒出来,因此非常容易获得收集在后端系统中的信息。第三阶段包括聚合服务、研发工作流和集成各个不同的系统。
3.建立卓越中心
每一个获胜的案例研究都有某种形式的卓越中心。这种卓越中心也可以叫作别的名字,如配置控制委员会。但是,所有的获胜的案例研究都有一些正式的负责治理SOA计划的组织。有些企业已经拥有现成的具有IT治理功能的企业架构,仅仅需要为SOA做一些简单的调整。有些企业没有正式的治理计划,必须创建一个拥有足够的控制能力的机构帮助提供理想的业务结果。控制水平和每一个机构的治理模式的范围都是独特的,但是,每一个成功的项目都把治理作为一个关键的成功因素。
4.合理制定架构
只有具有健全的架构基础才可发挥SOA的主要好处(松散耦合、重用及技术和服务的抽象)。企业架构团队是个中心机构,掌控着整个企业的架构。从SOA的立场上看,架构和设计的以下方面十分重要。
平台:最根本的决定之一是使用什么技术。来自底层平台的支持非常重要,因为他能帮助我们避免自己编写解决方案。用户还需要考虑团队对具体平台的满意度。一个好的平台能显着减少研发和维护的总体成本。一些公司也使用多个平台的组合。SOA的好处是,当服务成熟到一定程度之后,界面比底层技术更加重要。由于ROI的原因,技术也变得"可插拔",即能任意选用技术。
标准:对于SOA来说,Web服务是业界最常选用的技术。在这一领域,标准正在不断发展,并且多个相互竞争的标准解决的是同一个特定问题。良好地掌控这些基本原理和要素的实施方向可确保资金不会花在错误的技术上。遵从标准的平台能够保护投资,并且使得和外部合作伙伴和软件研发商的的集成变得更轻松。
第三方:公司总是和外部合作伙伴保持联系。尽管我们不能控制第三方的架构,不过我们应试图使他们遵循SOA,这样在长期内使得每一方都更轻松和经济高效。这一点同样适用于系统集成商和研发商。尽量减少战略合作伙伴的数量对于控制复杂性非常有帮助。
服务:一个机构可能有几种服务。有一些是垂直的和以业务为中心的,而其他的更加广泛。后一类别中的服务??例如安全、数据转换、翻译和事件服务??一般是较好的初始SOA候选项目。企业架构团队负责在实现"横切"服务中提供设计模式和指导准则。
企业架构团队(和各垂直团队相合作)还负责培养Gartner所说的"生产力层",该"生产力层"促进服务的重用和聚合。Garner称:"没有他,在Web服务和其他服务方向中的投资将非常难得到回报。"因此,其中一些服务属于该类别。
像Web服务这样的技术使得这些服务独立于环境。这种独立性使得服务能跨多个水平项目而方便地使用。消息传递能使应用程式松散地耦合联结,不过为了实现最佳的重用,甚至环境也应被抽象掉。
强烈建议这些服务要经过具体计划和架构审查。这将为和之合作的垂直研发团队提供一致的和相似的模式样式、名称空间及其他。较好的策略是,在利用架构模式的同时,采用业界或领域模式。
管理服务:一旦研发和测试了这些服务,就需要将他们部署在生产环境中。正如Web研发世界中那样,研发应用程式是一回事,在生产环境中管理他们完全是另外一回事。服务水平目标(SLO)、服务质量(QoS)、安全、访问控制、故障转移、监视、灾难恢复、审计和通知仅仅是需要管理的长长列表中的一小部分。特定于行业的管理方法,如HIPAA和Sarbanes-Oxley(SOX)可能需要用于控制更改、审计、监视关键系统的附加基础设施。其他需要注意的事情包括:循环负载处理、版本管理、服务的生命周期管理和伸缩性等。
你应为服务的健康增长和发展制定规划。因此,应具有良好的变更管理策略。如果你需要遵照HIPAA和SOX等,则这可能是强制性的需求。