互联网和其他网络(包括电信网、移动网、物联网等)的交汇融合,进一步推动了人类社会、信息空间、物理世界的融合,形成新的人机物融合计算环境。作为互联网的延伸,人机物融合标志着我们从终端互联、用户互联、应用互联开始走向万物互联,信息技术及其应用更加无处不在,“大数据”现象随之产生,信息化的第三波浪潮(信息化3.0),即以数据的深度挖掘与融合应用为主要特征的智能化阶段,正在开启。人机物融合环境下,信息基础设施蕴含着覆盖数据中心(云)、通信网络(网和边缘设备)和智能终端及物联网设备(端)的海量异构资源,而信息技术及其应用开始呈现出泛在化、社会化、情境化、智能化等新型应用形态与模式,需求多样且多变。人机物融合环境下的新型应用对软件“基础设施化”提出了新的要求:软件平台需要更好地凝练应用共性,更有效地管理资源,并根据频繁变化的应用需求和动态多变的应用场景对各类资源作按需、深度、灵活的定制。而现有软件平台主要面向传统计算模式的应用需求,存在很大的局限:纵向上看,各类资源紧密耦合难以分割,很难根据应用特征进行性能优化和底层资源的弹性可伸缩地调度及分配;横向上看,各类资源被锁定在单个应用系统的内部,形成大量的“信息孤岛”难以实现互连互通。因此,现有软件平台的资源分配方式固定且有限,个性化定制能力严重不足,制约了人机物融合应用的发展。为了应对这些挑战,就需要实现海量异构资源的深度“软件定义”。
“软件定义”是近年来信息技术的热点术语。一般认为,软件定义的说法始于“软件定义的网络”(-,SDN)[3]。传统的网络体系结构,网络资源配置大多是对每个路由器/交换机进行独立的配置,网络设备制造商不允许第三方开发者对硬件进行重新编程,控制逻辑都是以硬编码的方式直接写入交换机或者路由器的,这种“硬件为中心”的网络体系结构,复杂性高、扩展性差、资源利用率低、管理维护工作量大,无法适应上层业务扩展演化的需要。2008年前后,斯坦福大学提出“软件定义网络”并研制了交换机原型。中,网络设备的管理控制功能从硬件中被分离出来成为一个单独的完全由软件形成的控制层,抽象了底层网络设备的具体细节,为上层应用提供了一组统一的管理视图和编程接口(,简称API),而用户则可以通过API对网络设备进行任意的编程从而实现新型的网络协议、拓扑架构而不需改动网络设备本身,满足上层应用对网络资源的不同需求。2011年前后,SDN逐渐被广泛应用于数据中心的网络管理,并取得了巨大的成功,重新“定义”了传统的网络架构,甚至改变了传统通信产业结构。在SDN之后,又陆续出现了软件定义的存储、软件定义的环境、软件定义的数据中心等。可以说,针对泛在化资源的“软件定义一切(-,SDX)”正在重塑传统的信息技术体系,成为信息技术产业发展的重要趋势。
2、软件定义的本质
实现SDX的技术途径,就是把过去的学术界对新兴行业的定义一体化硬件设施打破,实现“硬件资源的虚拟化”和“管理任务的可编程”,即,将传统的“一体式()”硬件设施分解为“基础硬件虚拟化及其API+管控软件”两部分[4]:基础硬件通过API提供标准化的基本功能,进而在其上新增一个软件层替换“一体式”硬件中实现管控的“硬”逻辑,为用户提供更开放、灵活的系统管控服务。采取这种技术手段的直接原因,主要是互联网环境下新型应用对计算资源的共享需求,以云计算、大数据为代表的新型互联网应用要求硬件基础设施能够以服务的方式灵活提供计算资源,而目前的计算资源管理、存储管理、网络管理在很大程度上是与应用业务脱离的,几乎都是手工管理、静态配置、极少变动、分割运行,难以满足上层应用对计算资源个性定制、灵活调度、开放共享的需求。而要满足上述需求,就必须改变目前应用软件开发和资源管理各自分离的情况,使得计算资源能够根据应用需求自动管理、动态配置,因此,“软件定义”就成为一个自然选择。通过软件定义,底层基础设施架构在抽象层次上就能趋于一致。换言之,对于上层应用而言不再有异构的计算设备、存储设备、网络设备、安全设备导致的区别,应用开发者能根据需求更加方便、灵活地来配置和使用这些资源,从而可以为云计算、大数据、移动计算、边缘计算、泛在计算等信息应用按需“定义”出适用的基础资源架构。需要指出的是,尽管“软件定义”是近期出现的热点概念,但其基于的资源虚拟化和管理可编程这两个核心原则,一直都是计算操作系统设计与实现的核心原则。计算机操作系统作为一种系统软件,向上为应用和用户和提供各种公共服务控制程序运行、改善人机界面,向下管理各类硬件资源。因此,从计算机系统用户的视角来看,操作系统就是一台软件定义的“计算机”;从软件研究者的视角,操作系统体现了“软件定义”之集大成[4]。就这个意义上而言,所有的SDX在本质上都没有脱离操作系统的三层架构的范畴,均符合“硬件资源虚拟化”与“管理任务可编程”的技术原理。软件定义和软件化是两个不同的概念。“软件化”仅仅描述了根据业务需求来开发具有相应功能的软件应用系统的过程,关注的是行业知识、能力和流程等的软件实现;而“软件定义”则是一种方法学及其实现技术手段,其关注点在于将底层基础设施资源进行虚拟化并开放API,通过可编程的方式实现灵活可定制的资源管理,同时,凝练和承载行业领域的共性,以更好适应上层业务系统的需求和变化。无论是软件定义的网络、软件定义的存储、软件定义的数据中心还是其他“SDX”,就其技术本质而言,均意味着构造针对“X”的“操作系统”。未来的面向人机物融合的软件平台,将是对海量异构基础设施资源进行按需、深度软件定义而形成的“泛在”操作系统()[5]。因此,软件定义是实现人机物融合环境下软件“基础设施化”的重要技术途径。
人机物融合环境下,万物皆可互联,一切均可编程,正在成为信息化的主要发展脉络。随着人机物融合环境下基础设施资源发生了巨大变化,软件定义正在逐渐走出信息世界的范畴,内涵和外延上均产生了新的发展,面临着新的机遇。软件定义不再仅限于计算、存储、网络等传统意义的基础硬件资源,还覆盖云网端的各类资源,包括电能、传感、平台、应用等软硬件与数据和服务资源等。软件定义概念正在“泛化”,将实现从单一资源的按需管控到全网资源的互连互通的跃变,支持纵向全栈式、横向一体化的多维资源按需可编程,最终形成面向人机物融合应用的基础设施架构。另一方面,软件定义正在向物理世界延伸。在“工业互联网”、“工业4.0”和我国“制造强国战略”的发展蓝图中,软件定义将成为核心竞争力和支撑技术。例如,制造业需要实现“硬件”、知识和工艺流程的软件化,进而实现软件的平台化,为制造业赋予数字化、网络化、定制化、智能化的新属性。伴随着软件定义的泛化与延伸,软件将有望为任意物理实体定义新的功能、效能与边界。在IT的泛在化并不断向物理世界延伸的基础上,软件定义将向人类社会延伸。通过“软件定义”的手段,可以为各领域的“虚拟组织”(如家庭、企业、政府等)打造更加高效、智能和便捷的基础设施。例如,“软件定义的城市”不仅将城市中各类信息/物理基础设施开放共享和互连互通,还需要为政务、交通、环境、卫生等社会公共服务部门构造出数据流通交换和业务功能组合的API,支持这些部门的智能联动,实现动态高效的精细化的城市治理。
4、软件定义的挑战
要实现更加全面、灵活和深度的软件定义,软件研究者需要解决一系列的技术挑战。
软件定义本质上需要对其管控的资源进行抽象,因此需要在体系结构角度来合理地划分和选择受管元素的“粒度”和“层次”。特别地,随着软件定义的泛化,如何界定软、硬件的功能划分并组装、配置相应元素,是值得探究的问题。