探索中国CIO人才现状 | 第四季调研报告
中间件可帮助企业实现应用现代化
2015-07-17  来源:techtarget

本文,Tom Nolle讲述了大家都需要了解的现代化的流行做法,“中间件”方式——解释了如何确保采用的是正确方法,如何简化流程,并且为将来做好准备。

对规划师和架构师而言,应用现代化(App Mod)不是个新问题,但随着业务敏捷趋势,在线客户/供应商关系,软件组件化,以及云计算等的盛行,以前暂时没有考虑应用现代化的公司现在都不得不重新慎重考虑这个问题。很多应用现代化的可选方案都涉及到”中间件“——应用和用户之间的工具集。要想确保基于中间件来构建现代化应用的方式的确适合自己,需要首先整体研究未来的应用模型,找到能够达到目标的最简单的方式,确保中间件的选择会在广度上支撑这个未来目标。

中间件基于基础操作系统或网络服务,将这些基础服务封装成能够辅助并标准化部署过程的高级功能/服务。主流软件厂商,比如IBM、Microsoft和Oracle,都有大量中间件工具资产,这些工具设计来支持各种场景,从数据库操作到通信。虽然所有这些产品都很灵活,并且有很多第三方提供的最佳组合使之更为灵活,但是不能让这些中间件在软件系统里肆意妄为——如果缺少标准化,花费和风险都会激增,尤其在ALM里。必须有统一的设计。

从多个主流软件公司购买软件的公司开始意识到必须开始研究这些软件公司支持的应用模型,以及中间件如何支持这些模型。如今大多数的应用要么是事务驱动,要么是分析驱动,前者在网络上从用户那里得到输入,后者是对存储数据的离线检查。事务驱动的应用程序的流行模型是web前端-后端模型,该模型的实现通常包括为已有应用创建web输入的方式。分析驱动的应用的应用模型完全取决于数据库的设计,因此这时数据库中间件是需要着重研究的方面。

在事务驱动的应用模型里,web服务器提供UI,通过门户接口将输入传递给应用程序流程。CGI曾经是事实上的门户标准,但是现在也涌现了一些其他中间件方案。备受关注的还有WSGI(Web Services Gateway Interface,Web服务门户接口),它不仅是web到应用的接口规则的规范,也是中间件(通常用Python语言)的模型。WSGI比CGI要灵活得多,其之上构建的中间件通常性能良好,有弹性。

在数据库驱动的应用程序里,最复杂的问题之一就是是否需要从经典的SQL模型切换到no-SQL,或者甚至更为松散的(Hadoop)数据存储模型。大部分业务应用倾向于使用SQL查询,因此在数据库驱动应用现代化里为数据访问找到高效的SQL中间件至关重要。最近,Spark项目得到了大量关注和厂商支持,因为Map-Reduce(像Hadoop)数据库模型执行非常快。和Hadoop相比速度的提升使得即使在大量使用SQL的情况下,Spark也能被用来实现成为分析式应用的现代化。

无论需要哪些中间件功能,能够高效和应用程序交互信息都至关重要。这意味着确保应用的前端-后端接口能够连接到中间件。对于数据库而言,意味着支持所需的查询接口,但是对于事务性应用而言,很可能在web前端-后端和应用程序之间需要搭建消息系统或者服务总线。

所有主流软件厂商和很多第三方厂商都提供了消息/服务总线产品,一些CGI/WSGI工具也包含了这些功能。企业一般使用J2EE作为事务性中间件,这也包括服务总线功能。因为使用单个高级中间件工具比多个低级产品更加容易,首先需要查看主要供应商的应用程序架构,对于高层无法找到的功能要深入研究下是否有特定的中间件可选产品。这样的过程也能够帮助确保底层工具在高层框架里能正常工作。

如果从头开始开发web前端-后端程序,考虑“自己实现”中间件可能会有益。大部分web相关的语言(Python、Ruby、Javascript和Java)都支持按照标准功能实现的”中间件“开发,可以按需合并到web网页/软件里。在实践中标准化重要特性/功能的实现方式,降低开发成本及时间,同时改进调试,减少软件错误。

中间件驱动的应用现代化最后需要考虑的方面是要意识到所选择的软件方案会持续影响很长的时间。中间件是几乎所有模块化应用程序的组件,也是云应用程序设计和开发的重要部分。要想在几年之后改变中间件策略至少是非常不方便的。展望应用程序的发展趋势以及未来管理这些程序的策略,更好得在当下对此做出选择。

在考虑应用现代化的面向未来的中间件时,容易忽略的一点是集成的灵活性。在组件化的软件里,通常使用消息/服务总线连接组件,因此如果选择了包含总线组件的应用模型中间件,要注意确保之后可以轻松集成到组件工作流管理系统里。类似地,云端的组件要求负载均衡来实现故障转移以及云爆发,中间件有很多种方式来支撑这样的场景——其中一些并不是最适合云平台的。注意验证这些方面来确保应用模型的选择不会拖累云平台演化的策略。

如上是使用中间件方式实现应用现代化的着重需要考虑的方面。解决某个项目本身的问题并不难,能全局考虑才是难点所在。规划师一般都是根据已知的问题寻找解决方案,可能并不是整体最优方案。”现代化“并不是一蹴而就的,需要随着时间根据需求和IT基础架构的演进而持续演进。