3.2 技术演进趋势
从技术演进趋势看,虚拟化、云计算、容器、微服务等新技术正在逐渐将应用的业务逻辑与基础设施解耦。虚拟化技术将计算、存储、网络资源从物理硬件设备中剥离出来。云计算技术则将虚拟化资源形成资源池,并以自助的方式向租户交付随需即取的资源。容器技术将应用中间件从操作系统中解放出来。近些年逐渐兴起的微服务技术进一步将应用业务逻辑从中间件中剥离出来。应用本身运行对底层硬件环境的依赖逐渐减弱,映射关系的不确定性和动态性更加明显。这就导致应用运维与传统IT基础设施运维的目标大相径庭。由于更贴近用户和业务,应用运维的重要性和复杂度更高。
目前,金融、航空、汽车等行业都处在数字化转型的前沿,由于应用性能问题导致用户体验下降、企业用户流失和经济损失的案例在逐渐增加,而传统以应用性能管理工具和网络性能管理工具建设为主的应用运维系统的被动响应式风险处理机制已难以应对。实现主动预防的风险处理机制、建设智能化的应用性能管理平台已逐渐成为企业构建面向未来的运维体系的关键。
这些场景之所以能在今天成为现实,主要原因是,一系列新技术的发展和成熟,使得制约应用落地的障碍得以清除。其中,对数字信息系统应用的架构及开发、运维方式产生深远影响的技术如下。
1. 服务器虚拟化、云计算
近年来,首先掀起波澜的是服务器虚拟化、云计算技术的普及应用。创立于1998年的VMware公司推出的VMware Workstation服务器虚拟化软件将操作系统与硬件基础设施解耦,使得软件系统不再与硬件平台绑定。2006年,亚马逊以虚拟化技术为基础推出了首个云计算服务——AWS Elastic Compute Cloud(EC2),将数据中心剩余的计算、存储、网络资源以在线服务的方式出售。应用系统部署安装不再依赖特定的硬件和数据中心,软件定义基础设施成为可能。
2. 大数据
数据量的快速增长使得大数据存储分析技术成为研究热点。2006年,基于Google File System论文[1]研发的Hadoop大数据存储分析平台成为行业焦点。有别于传统的结构化关系数据库,Hadoop半结构海量的大数据存储能力和基于MapReduce算法的信息提取能力,为应对智能、互联场景下激增的数据量提供了解决方案。
3. 容器
出现于2008年的Linux操作系统层虚拟化LXC(Linux Containers)技术在服务器虚拟化基础之上,通过将操作系统资源隔离,进一步将应用中间件与操作系统解耦,使得应用动态部署、更新、迁移和弹性伸缩控制更加灵活。LXC对应的商业产品Docker的快速普及和应用已经证明了容器技术的商业价值。
4. 微服务
微服务(Microservices)技术进一步将业务逻辑和应用中间件解耦。2011年5月,在威尼斯附近举行的软件架构师研讨会上,“微服务”一词被与会者用来特指业界正在普遍探索和实践的一种通用软件架构设计风格。2012年,James Lewis在克拉科夫的一次题为Micro Services:Java, the Unix Way的演讲中介绍了这些新想法。他描述了通过“分而治之”的方式使用康威定律(Conway’s law)来构建软件开发团队的一种更敏捷的软件开发方式,并把这种方式称为“微服务”。利用微服务架构和技术,应用业务模块被拆分成独立的微服务节点,以方便复杂系统的多团队协作开发、更新和测试;由于业务模块对应微服务节点的独立部署,其扩展性更高;每个微服务节点可以由不同语言、不同架构实现,支持对接遗留系统服务,业务需求变化导致的对应应用系统的架构重构不影响其他微服务节点。
如图3-4所示为某电子商务应用系统,在传统单体架构中,所有应用的业务代码部署在一个独立的服务节点上,运行在一台应用服务器上,代码耦合度高。一个独立服务对应的开发团队需要在同一个开发框架中使用一样的技术堆栈和开发语言。所有业务访问数据库,需要通过统一的数据访问层接入数据库。一旦需要升级功能、修改缺陷,所有代码需要重新编译发布。而微服务架构将电子商务系统中的服务配送、查询详单、接收订单、结账收款等业务功能解耦,使其成为可以独立开发部署的节点。各服务通过服务发现、注册方式进行管理,并通过接口交互。每个节点可以采用不同的架构、开发语言,可以有自己的数据库。这样,业务逻辑多样且多变、架构复杂的互联网和物联网应用系统,可以通过多团队协作开发来划清任务目标和功能边界,不再局限于一个统一的技术堆栈。虽然微服务架构优点很明显,但并不完美。在解决多团队协作问题的同时,微服务架构也加剧了系统的复杂程度,使系统的运行维护成本激增,数据量增加。
图3-4 单体架构应用与微服务架构应用的结构对比
5. 人工智能
在计算机科学中,人工智能(也称为机器智能)是机器通过算法实现的智能。人工智能研究领域诞生于1956年达特茅斯学院的一个研讨会上,约翰·麦卡锡(John McCarthy)提出了“人工智能”一词[2],以区分该领域与控制论,并摆脱了控制论专家诺伯特·维纳(Norbert Wiener)的影响。人工智能技术被认为是推动第三次信息技术浪潮的关键技术。近几年来,人工智能发展迅速,产业界和学术界对相关技术的研究、落地兴趣很浓。随着硬件平台计算能力的提升和算法的突破,人工智能的应用场景越来越多。例如,人脸识别应用于身份认证,图像识别应用于海量图片处理和搜索,异常检测和因果推理分析算法应用于海量机器数据的处理等。
[1]Sanjay Ghemawat, Howard Gobioff, Shun-Tak Leung. The Google File System[C]. SOSP’03, Bolton Landing, New York, USA. 2003.
[2]John McCarthy,Crevier,Russell Norvig. McCorduck [C].Dartmouth conference, 2004.