本文作者:何文强 — CODING 高级解决方案架构师 具有一线互联网、物联网独角兽、全国股份制银行、新型智慧交通等跨行业从业经历,历任 Java 开发高级工程师、DevOps 技术专家、高级研发经理等职,对微服务、敏捷、DevOps、容器技术有深刻的理解和丰富的实践。
应用技术架构的演进与计算机编程语言、商业环境、组织结构紧密相关。
应用技术架构整体上经历了从单体技术架构 -> 垂直架构 -> SOA 架构 -> 微服务架构 -> 无服务器架构 -> 服务网格架构 -> 分布式多运行时架构。在互联网时代之前,应用技术架构发展较为缓慢,随着互联网的出现,特别是 web2.0 和 web3.0 的出现和发展,应用技术架构在快速迭代和演进,以满足市场和商业的诉求。
单体架构
在 20 世纪 70 年代,伴随着计算机高级语言(如 1972 年的 C 语言)的出现,从以机器和汇编语言为主的面向机器的编程的低级语言转向人类可读的面向对象的高级语言,编程语言完成了范式的转换,且随着软件工程的诞生以及软件开发方法(如 1970 年的瀑布软件开发方法)的出现,第一个应用技术架构“单体架构”开始出现并流行起来,实现技术架构从无到有的突破,MVC 模式开始风靡软件架构设计。
垂直架构
在 20 世纪 80 年代,信息技术得到快速发展,以电子化信息化代替纸质办公,解放企业生产力的浪潮席卷全球产业,以操作系统、数据库、金融核心交易系统等为代表的大规模高复杂度的软件无处不在,这些大型软件动辄上百万行甚至上千万行的代码量,给软件系统的可读性、可维护性和开发协作带来了越来越多的挑战。面对巨石般的系统,采用分而治之的方法将其拆分成多个独立的小系统,“垂直架构”因此诞生。“垂直架构”中每个系统都是完全独立的,因此在一些公共代码上存在大量的拷贝。同时,在 20 世纪 80 年代,关于分布式的理论研究取得了众多进展。
SOA 架构
经过了漫长的单体与垂直架构的发展,随着互联网的出现,特别是以社交、内容为核心的 web2.0 时代和以移动应用为代表 web3.0 的出现,软件应用的场景、规模、数量、迭代速度都发生了巨大变化,真正意义上的第一代分布式架构,即“面向服务的架构(SOA)”开始出现并流行起来,企业服务总线(ESB)成为 SOA 的主流架构,将企业内部的众多系统通过总线的方式进行通信和管理。
微服务架构
进入到 web3.0 阶段(2010),应用的数量和规模再次以前所未有的速度发展,微服务这个概念在 2011 年 5 月威尼斯的一个软件架构会议上讨论并首次提出,用于描述一些作为通用架构风格的设计原则。Java 逐渐成为最受欢迎的服务端语言,Java 语言成为微服务架构的后端语言,以 Dubbo 和 SpringCloud 为代表的微服务框架开始盛行,并成为当前主流 Java 微服务框架,促进 Java 生态的发展。
无服务器架构
2012 年,iron.io 首次提出 Serverless 概念。2014 年,AWS 发布 Lambda 开启 Serverless 商业化时代,AWS Lambda,最早被大众所认可的 Serverless 实现。随后各大云厂商争相推出自己的 Serverless 服务、框架或工具。
服务网格架构
2013 年容器技术 Docker 开源,2014 年容器编排工具 Kubernetes 开源。2015 年,云原生计算基金会(CNCF)成立,标志着应用架构 2016 年 9 月 14 日,Envoy 的开源标志着应用技术架构进入到服务网格(Service Mesh)时代,2017 年 5 月 24 日,Google、IBM、Lyft 共同宣布 Istio 开源标志着进入由控制面和数据面组成的服务网格成为主流。Istio 是当前最受欢迎的服务网格技术。
分布式应用多运行架构
2019 年 10 月,微软开源分布式运行时微服务框架 Dapr,标志着应用技术架构进入分布式应用多运行时时代。2020 年,Bilgin Ibryam 提出了 Multi-Runtime 的理念,对基于 Sidecar 模式的各种产品形态进行了实践总结和理论升华。Multi-Runtime 的本质是面向云原生应用的分布式能力抽象层,Dapr 作为分布式应用多运行时的主流框架得到极大关注和迅猛发展。
《数字化 IT 从业者知识体系》背景
数字化和可持续发展是中国企业未来发展的两大主题,掌握数字化知识,具备数字化能力,应用数字化技术是我们 IT 从业者未来核心竞争力所在。《数字化 IT 从业者知识体系》的初衷是为 IT 从业者提供的系统性的数字化知识体系,内容涵盖管理实践、工程实践、技术实践三个层次,涉及软件开发方法、应用技术架构、应用部署与管理、软件交付与协作四大方面。
在接下来的《数字化 IT 从业者知识体系》系列文章,何文强将从软件开发方法、应用技术架构、应用部署与管理、软件交付与协作四个方面,为大家进行逐一分享介绍:
1. 软件开发方法主要包括瀑布、敏捷、精益等;
2. 应用技术架构主要包括微服务架构、服务网格架构、无服务器架构、分布式多运行架构等;
3. 应用部署与管理主要包括但不限于虚拟化技术、容器技术与容器编排等;
4. 软件交付与协作主要包括但不限于 CMMI、ITIL、DevOps 等。
相信该知识体系有利于 IT 从业者构建丰富的技术体系、全面的技术视野和系统的能力建设。欢迎大家前往《数字化 IT 从业者知识体系》话题进行详细阅读。