一、应用现代化已经成为驱动软件架构发展的核心
以人工智能、大数据、云计算、微服务、云原生等代表的新型“根技术”的发展,不仅重塑了整个软件产业的技术生态,也在深刻地改变着软件技术的技术架构和商业应用,推动了软件设计、开发、生产、应用等各个环节的发展模式变革。整个软件产业在“软件定义一切”的同时,软件也以“润物细无声”的形式融入到所有的现实场景中,正在发生着以应用和服务为核心的场景化、碎片化、智能化和服务化的重构。在新的发展场景中,软件不再是一种以独立的产品形态存在的商品,而是与数据、与计算能力、与独特的应用场景结合在一起的一种综合性的、基于特定问题解决的、生态化的新型发展形态,软件也不再是一种商品,而是一种综合性的解决方案,是一种新型的计算服务,是一种现实能力的具体应用。在这种新的形式下,软件的应用化发展呈现出数据化、平台化、智能化、云化等方面的特点。
其实从本质上来说,现代的现代化应用更多地体现为服务化的特征,因为现代应用的目标还是为了服务。基于服务的应用已经成为行业主流的技术发展趋势。应用现代化是通过使用现代化新一代的技术栈,对遗留应用软件和系统进行现代化改造的过程,使其升级到具有高弹性、高伸缩性的云原生环境。通过这个过程,应用程序可以跟上技术发展步伐,可持续地满足用户期望与需求,解锁企业未来价值增长空间。随着技术的演进和市场的变化,应用程序现代化也将是行业一项持久性的、系统性的工作。基于云计算技术,对云技术进行服务化的重构,形成了基于服务的、高度分布的微服务架构需求。下图(图1)是基于微服务架构的应用平台系统需求特征图,这样就能够较好地满足以应用为特点的技术需求。
图1 微服务架构下的软件平台系统特征图
在当今数字化时代,软件应用程序的规模和复杂性不断增加。为了应对这种挑战,开发团队需要采用合适的软件架构来确保应用程序的可扩展性、可维护性和可靠性。软件架构的服务化已经成为引领软件技术发展的主导性逻辑,无论是现在流行的微服务架构,或者是云原生架构,或者是DEVPS,基本上都是沿着服务化的思路来进行创新布局。软件服务架构形式的演进不仅关乎代码的组织结构,还涉及到系统的设计原则、通信机制和数据管理等方面。现代软件架构是把传统上软件系统中分散的复杂性进行集中抽象,然后利用软件分层技术,对软件功能进行合理的分工,旨在解决传统软件架构中的通信问题、数据接入问题、程序编排等相关的问题,帮助开发团队构建出高质量的应用程序。
二、应用现代化背景下信息服务系统架构逻辑
应用现代化作为指导软件系统应用发展的新理念,其对软件的设计、开发、运维等都提出了新的要求。因为以技术创新牵引的技术发展,与以应用为核心的技术发展驱动逻辑的发生了深刻的变化,而且应用会“反作用”于软件技术的发展,成为指导技术发展的新型逻辑。基于应用的信息系统发展,对软件技术的作用更强,技术发展的规律要回归到以应用为中心的发展需求。以下是基于应用逻辑对信息系统提出的需求。在服务与应用的驱动下,软件体系的具体演进轨迹入下图(图2)所示。
图2 服务驱动的技术形态向应用演进变革
当前信息技术的发展已经到了一个新的发展阶段,由传统上由技术驱动产业发展的形态向以应用为主导的技术发展阶段。在过去的发展过程中,各种新型技术理念和技术形式风起云涌,让信息技术自身发生了翻天覆地的变化。尤其是云计算技术、云原生、微服务架构等软件技术架构形态的变化;人工智能中深度学习、知识图谱,物联网、大数据等新型技术形态极大地丰富了软件的内涵和外延;而DeVops、低代码无代码技术、开源技术的发展,则彻底颠覆了软件的应用模式。这些新技术的发展,已经能够相对完整地对为应用导向的技术发展提供了基础。基于应用的软件系统变化如下图(图3 所示)
图3 软件系统变化趋势图
软件架构作为构建任何复杂应用程序的基石,在应用化的产品发展中发挥着重要作用。一个良好的软件架构能够提供可扩展性、可维护性和可靠性,从而帮助开发团队构建出高质量的应用程序。探讨现代软件架构的关键原则和常见的架构模式,以及如何在实际开发中应用它们来构建出优秀的应用软件系统,是决定信息系统应用现代化发展的前提和基础。以应用为核心的信息系统属性是建立在信息系统架构,尤其是软件系统架构基础之上,只有建立起了软件架构体系,才能够保障应用服务功能的最终实现。
异构分布式架构和细粒度的模块化和网格化架构。模块化架构已经不是什么新鲜的内容,事实上模块化是工业化时代的产物,各种生产系统通过模块化架构就能够实现标准化的作业,这样就可以轻松实现批量化的生产。这样的生产方式虽然在个性化定制时代受到一定的挑战,但是其所包含的底层逻辑却不会过时,最起码在个性化定制时代的初期还是会遵循模块化的底层逻辑,只是这种模块会越来越小,因此由模块组合而成的系统也会彼此不同,表现出个性化的特征。而这样的架构特征也体现在信息系统应用的重构之中。
随着规模和复杂性的增长,服务网格也越来越难以理解和管理。这样的技术需求包括服务发现、负载均衡、故障恢复、指标收集、监控以及通常更加复杂的运维需求,例如 A/B测试、金丝雀发布、限流、访问控制和端到端认证等。简单来说,服务网格通过一个代理模式工作,把所有的服务间通信经过代理,将网络中的应用流量载入到网格中,并支持复杂的管理和调控操作。
三、基于应用现代化软件架构面临的挑战
第一是现代化应用如何与业务更好地融合的挑战。现代化应用作为一种新型技术形态,其生存和发展的根本是必须要对业务系统形成支持,而且其本身也是支持业务系统发展的产物。因此在与业务系统如何有效融合还是决定其发展的根本。在与业务融合方面,由于业务形式千差万别,而且业务系统也面临不断优化,不断调整的问题,相应的应用系统也需要进行灵活的调整,才能够实现与业务系统的真正融合,实现预期的调控目标。
第二是现代化应用所面临的安全方面的挑战。现代化应用将信息系统的各个部分与业务实现了融合,并使各种感知设备遍布了整个业务运作的空间,所以信息系统的业务安全域划分出现了问题。事实上,可以在一定程度上说,信息系统基于应用的可用性、课伸缩性、灵活的解耦和重构等特性是建立在信息系统安全保护方面的代价基础之上的。现代化应用所包含的信息系统弹性、可观测性和安全等特征,与云的特性具有一定的天然适配性,但是物联网、深度学习算法等具有拓展性的功能,无疑会增加应用的管理复杂度。
第三是现代化应用本身的管理以及标准化挑战。在应用主导的现代化发展中,软件架构的选择和设计应该根据具体的应用需求和场景进行,并且需要不断地演化和改进,以应对不断变化的技术和业务要求。这就为信息系统现代化应用本身提出了挑战,需要在各个现场具有一定技能的操作人员,能够拥有专业的知识和技能,将各种具体的技术应用转变为信息系统可以实现的功能架构。尤其是现代化应用的标准化问题已经成为迫在眉睫的问题。
第四是市场引导教育方面的挑战。云计算的服务化应用本身已经具备面向现代化应用的整套方法论,比如通过组装式交付,让应用开发从专业开发者走向全民开发;通过将数据、AI、视频能力融入到应用中,让数据驱动运营、智能辅助决策。并通过DevOps开发流程,TTM缩短到周甚至天级,开发全流程上云等等。但是在市场引导和教育方面,很多人还是不熟悉,造成了各种应用方面的问题。