软件定义一切:机遇和挑战

  现在软件很重要,每天的生活都离不开软件,可能大多数人每天早上起床的第一件事儿就是打开某个APP。我今天讲的题目很大——软件定义一切。

  无处不在的软件

  我们正在进入一个新的时代,我是从信息技术对人类社会的改造这个角度来谈这个新时代,不同的人从不同的角度也给了这个时代不同的赋名。从基础设施视角来看,这是一个互联网+时代;从计算模式视角来看,这是一个云计算时代;从信息资源视角来看,这是一个大数据时代;从信息应用视角来看,这是智能化时代。有一项很重要的技术,那就是软件。从某种意义上来说,这个时代就是一个软件定义的时代。

  软件产业呈持续增长态势。从国内来看,工信部公布的2012年到2016年的五年数据中,软件和信息技术服务业始终保持高增长,在电子信息行业的比重也在不断上升。2008年金融危机开始以后,很多行业都在下滑,而信息技术行业还在保持增长,而软件行业的增长又是远远高于信息技术其他的比重。工信部给出的近五年数据中,软件从业人数也在逐年增长,2016年达到576万人。但如果换一个视角,从开源社区来看,比如程序员经常去的一个软件问答网站stack overflow,注册3200万人,其中超过2500万人是多次访问。再比如CSDN的注册用户达2500万,活跃用户超过800万。这几个数据普遍都要比工信部公布的数据高,这说明和软件相关的从业人数有很多。

  互联网环境下软件呈现

  新特性和新特征

  我国学者自己定义了一个词:网构软件,指的就是面向互联网计算的软件新范型。这些新范型是什么,总结有几个性质:实体的自主性,实体对环境的情景感知,实体之间的自主协同,实体的在线演化,以及可信性需求。简单来说,软件呈现网络化体系结构,基于网络进行开发,通过网络交付分发并提供服务,这就是软件的服务化。软件和硬件相比,同样都作为功能性产品,但软件这种工具和互联网结合就能够实现一种真正的服务化。移动互联网的产生,又产生了一种新的模式,这就是APP。苹果商店拥有300万余个APP,累计下载量超过1500亿次。这个时候创造了一种新的模式,客户端要和服务器端合起来完成一件任务,也是一种拷贝,不过是一种新的拷贝方式。互联网深刻改变了人类社会和生活模式,而互联网的核心价值是连接,软件是实现互联网核心价值的重要使能技术。硬件连接虽然很重要,但最终的灵活连接还要靠软件。

  我引用两位名人的话,NetScape创始人Marc Andreessen说,软件吞噬世界。另一位是C++语言发明人Bjarne Stroustrup说,人类文明运行在软件之上。

  软件定义的时代

  互联网及其延伸,正在导向我们走在一个新的模式,人-机-物的融合。信息技术的网络化、泛在化、智能化趋势蕴含了人-机-物和谐发展的愿景。当前,正在兴起信息化的第三波浪潮,即以数据的深度挖掘与融合应用为特征的智慧化阶段。这个阶段我命名为智能化阶段,在这个新的环境下,人机物融合环境下的信息基础设施是海量的资源。人机物融合环境下的新型应用的需求形态多样。面对海量资源和应用需求形态多样的这两个特征,人机物融合需要新的平台环境,如何凝练应用共性,如何有效管理资源这是这个平台的基本要求。在这样的平台之下,由于应用需求变化频繁和应用场景动态多变,这个平台能否实现按需灵活定制?

  什么是软件定义

  软件定义的真正落地,还是在云计算平台里面的应用。在2015年的时候,Gartner战略报告首次出现SDN(软件定义),SDN重新“定义”了传统的网络架构甚至通信产业。软件定义网络的技术原理是通过一组API对网络设备进行任意的编程从而实现新型的网络协议、拓扑架构而不需改动网络设备本身。

  计算机的操作系统是管理硬件资源、控制程序运行、改善人机界面和为应用软件提供支持的一种系统软件,即向上提供公共服务,向下管理资源。如果从操作系统视角来看软件定义,操作系统是软件定义的“计算机”,从软件研究者的视角,操作系统体现了“软件定义”之集大成。

  在我看来,软件定义的技术本质就是把过去的一体化硬件设施打破,基础硬件及其虚拟化提供标准化的基本功能,然后通过管控软件控制基本功能,提供更开放、灵活、智能的管控服务。

  软件定义的技术本质:硬件资源虚拟化,管理功能可编程。硬件资源抽象为虚拟资源,然后用系统软件对虚拟资源管理和调度。就是在硬件资源虚拟化的基础上,用户可编写应用程序,满足访问资源的多样性的需求。大家现在可以看到软件定义出现了各种各样的延伸,软件定义的存储,软件定义的计算,软件定义的环境,软件定义的数据中心等等。但所有架构都跳不出操作系统的三层架构,就是说软件平台的三层架构,这些SDX均符合“硬件资源虚拟化”与“管理任务可编程”的技术原理。

  这就是我对软件定义的理解。

  软件定义带来机遇和挑战

  我们可以看到的机遇就是软件定义一切,人-机-物互联是我们追求的目标。我们是不是最终能做到万物皆可互联,一切均可编程呢?这就是软件定义给未来世界达成的目标,也就是我们的机遇所在。软件定义的本身进一步泛化和延伸,要用软件定义物理世界,再进入城市、行业、校园,从单一的资源管控到人、机、物融合环境下对各种资源全方位的互联互通。这是今后努力的方向。

  人工智能是当今的热潮,但我个人的观点还是认为处于数据驱动的算法智能阶段,软件平台如何提供“通用”的智能应用支撑,并允许按需深度定制?是否会出现面对AI的操作系统?我想这个也是可以通过平台的方式去实现。

  软件技术在新一轮革命技术中毫无疑问是核心竞争力之一,新一轮制造革命需要实现“硬件”、知识和工艺流程的软件化,进而实现软件的平台化,本质上即“软件定义”。

  随着人、机、物的融合,软件定义的挑战可以分为这几个方面:体系结构设计决策,系统质量,系统安全,更轻量的虚拟化,从原有系统到软件定义系统平滑过渡,高度自适应智能软件平台。

  体系结构设计决策,包括如何确定受管元素的合理“粒度”和“层次”?如何界定软、硬件的功能划分并组装、配置相应元素等问题。

  系统的质量,需要解决的问题有如何合理平衡管理灵活性和“虚拟化”后的性能损耗,如何降低“软件实现”的复杂性和故障率,有效定位故障以保障可靠性等等。

  系统安全,对硬件资源管理可编程带来开放性、灵活性的同时,也可能会带来更多的安全隐患。

  更轻量的虚拟化。大量的新设备产生,虚拟化实现了对硬件资源的软化,是软件定义的基础技术,现有以虚拟机为单位的技术过于重载,难以满足性能和实时性要求。

  原有系统到软件定义系统平滑过渡。如何将原有系统平滑过渡到软件定义系统?通过对已有的资源进行大幅度的改造,我们需要安装新的硬件,需要做新的软件管理系统,以及面临的人力,时间,经济,风控等因素。这个平滑过渡也需要合理的方案,否则很难做成这样的事情。

  高度自适应软件平台。从软件人追求的目标来看,我们想追求一种更为高度自适应的智能软件平台。现在平台方式是以硬件资源为中心的,如果基础设施层发生变化,软件平台就要发生改变,改完之后,上面的应用也可能发生改变。我们追求的理想方式是,软件平台具有预测和管理未来硬件资源变化的能力。

  (本文根据梅宏在2017中国计算机大会上的演讲整理而成,未经本人确认。)

  中国科学院院士 梅宏

关注读览天下微信, 100万篇深度好文, 等你来看……