您的浏览器禁用了JavaScript(一种计算机语言,用以实现您与网页的交互),请解除该禁用,或者联系我们。[阿里巴巴]:云原生架构白皮书 - 发现报告
当前位置:首页/其他报告/报告详情/

云原生架构白皮书

2022-08-01-阿里巴巴报***
云原生架构白皮书

TheCloud-nativeArchitectureWhitePaperbyAlibabaCloud 白皮书 生于云长于云爆发于云企业数字化转型最短路径 编写说明 编写单位:阿里云计算有限公司 顾问组成员 阿里云基础产品事业部高级研究员蒋江伟(小邪)阿里云计算平台事业部高级研究员贾扬清(扬青)阿里云云原生应用平台研究员丁宇(叔同) 编写组成员(按目录排序) 阿里云云原生应用平台易立阿里云云原生应用平台司徒放阿里云云原生应用平台杨浩然阿里云云原生应用平台罗毅阿里云云原生应用平台李艳林阿里云云原生应用平台邱戈川阿里云云原生应用平台崔飞飞阿里云云原生应用平台付宇轩阿里云云原生应用平台王荣刚 CONTENT TheCloud-nativearchitecturewhitebookbyAlibabaCloud 云原生架构 3序 1 云原生架构 为什么需要云原生架构? 2 云原生架构 云原生架构的定义 5云原生架构定义 7云原生架构原则 9主要架构模式 13典型的云原生架构反模式 云原生架构 5 阿里云云原生产品介绍 46云原生产品家族 46容器产品家族 48消息产品家族 49可观测产品家族 50Serverless产品家族 51微服务产品家族 54高可用产品家族 56云原生技术中台CNStack产品家族 3 云原生架构 主要云原生技术 云原生架构 6 云原生架构实践案例 15容器技术 18云原生微服务 23Serverless 27开放应用模型(OAM) 31ServiceMesh技术 33DevOps 38云原生中间件 62vivoAI计算平台的ACK混合云实践 66全面容器化之后,来电科技如何实现微服务治理 75阿里云MSE云原生网关助力斯凯奇轻松应对双11大促 77加速SaaS规模化演进,餐道基于K8s的云上创新底座 81爱奇艺体育:体验Serverless极致扩缩容,资源利用率提升40% 84作业帮云原生降本增效实践之路 87运维提效60%,视野数科SAE+Jenkins打造云原生DevOps 88韵达基于云原生的业务中台建设 90南瓜电影CTO庄徐麟分享如何在7天内全面实现业务Serverless化 4 云原生架构 阿里巴巴云原生架构设计 40ACNA(AlibabaCloudNativeArchitecting)架构设计方法 41 42 42 业务发展视角 组织能力视角 云原生技术架构视角 41企业战略视角 43架构持续演进闭环 44云原生架构成熟度模型 97 100 103 106 云原生架构 云原生架构未来发展趋势 7 110 114 115 网易云音乐曲库研发负责人谈音视频算法的Serverless探索之路GameOnServerless:SAE助力广州小迈提升微服务研发效能云拨测助力节卡机器人,全面优化海外网站性能 分众传媒研发总监谈分众传媒在Serverless上的探索和实践 容器技术发展趋势 基于云原生的新一代应用编程界面Serverless发展趋势 序 TheCloud-nativearchitecturewhitebookbyAlibabaCloud 回顾过去十年,数字化转型将科技创新与商业元素不断融合、重构,重新定义了新业态下的增长极。商业正在从大工业时代的固化范式进化成面向创新型商业组织与新商业物种的崭新模式。随着数字化转型在中国各行业广泛深入,不管是行业巨头,还是中小微企业都不得不面对数字化变革带来的未知机遇与挑战。 数字化转型的十年,也是云计算高速发展的十年,这期间新技术不断演进、优秀开源项目大量涌现,云原生领域进入“火箭式”发展阶段。通过树立技术标准与构建开发者生态,开源将云计算实施逐渐标准化,大幅降低了开发者对于云平台的学习成本与接入成本。这都让开发者更加聚焦于业务本身并借助云原生技术与产品实现更多业务创新,有效提升企业增长效率,爆发出前所未有的生产力与创造力。 可以说,当云计算重构整个IT产业的同时,也赋予了企业崭新的增长机遇。正如集装箱的出现加速了贸易全球化进程,以容器为代表的云原生技术作为云计算的服务新界面加速云计算普及的同时,也在推动着整个商业世界飞速演进。上云成为企业持续发展的必然选择,全面使用开源技术、云产品构建软件服务的时代已经到。作为云时代释放技术红利的新方式,云原生技术在通过方法论、工具集和最佳实践重塑整个软件技术栈和生命周期,云原生架构 对云计算服务方式与互联网架构进行整体性升级深刻改变着整个商业世界的IT根基。 虽然云原生概念的产生由来已久,但对于云原生的定义、云原生架构的理解却众说纷纭。到底什么是云原生?容器就代表云原生吗?云原生时代互联网分布式架构如何发展?云原生与开源、云计算有什么关系?开发者和企业为什么一定要选择云原生架构?面对这些问题,每个人都有着不同回答。鉴于此,阿里云结合自身云原生开源、云原生技术、云原生产品、云原生架构以及企业客户上云实践经验,给出了自己的答案,并通过这本白皮书与社会分享自己的思考与总结,旨在帮助越来越多的企业顺利找到数字化转型最短路径。 如何更好地拥抱云计算、拥抱云原生架构、用技术加速创新,将成为企业数字化转型升级成功的关键。 云计算的下一站,就是云原生; IT架构的下一站,就是云原生架构。 希望所有的开发者、架构师和技术决策者们,共同定义、共同迎接云原生时代。 未来十年,云计算将无处不在,像水电煤一样成为数字经济时代的基础设施,云原生让云计算变得标准、开放、简单高效、触手可及。 1 云原生架构 为什么需要云原生架构? 发展背景 计算机软件技术架构进化有两大主要驱动因素,一个是底层硬件升级,另一个是顶层业务发展诉求。比如伴随着x86硬件体系的成熟,很多应用不再使用昂贵、臃肿的大中型机完成,而是选择了价格更为低廉的以x86为主的硬件体系,也由此诞生了包括CORBA、EJB、RPC在内的各类分布式架构;后由于互联网业务飞速发展,人们发现传统IOE架构已经不能满足海量业务规模的并发要求,于是又诞生了阿里巴巴Dubbo&RocketMQ、SpringCloud这样的互联网架构体系。 云计算从工业化应用到如今,已走过十五个年头,然而大量应用使用云的方式仍停滞在传统IDC时代:虚拟机代替了原来的物理机;使用文件保存应用数据,大量自带的三方技术组件,没有经过架构改造(如微服务改造)的应用上云,传统的应用打包与发布方式等等。对于如何使用这些技术,没有绝对的对与错,只是在云的时代不能充分利用云的强大能力,不能从云技术中获得更高的可用性与可扩展能力,也不能利用云提升发布和运维的效率,是一件非常遗憾的事情。 回顾近年来商业世界的发展趋势,数字化转型的出现使得企业越来越多业务演变成数字化业务,数字化对于业务渠道、竞争格局、用户体验等诸多方面都带来更加严苛的要求,这就要求技术具备更快的迭代速度,业务推出速度从按周提升到按小时,每月上线业务量从“几十/月”提升到“几百/天”。大量数字化业务重构了企业的业务流水线,企业要求这些业务不能有不可接受的业务中断,否则会对客户体验以及营收造成毁灭性的影响。 对于企业的CIO或者IT主管而言,原来企业内部IT建设以“烟筒”模式比较多,每个部门甚至每个应用都相对独立,如何管理与分配资源成了难题。大家都基于最底层IDC设施独自向上构建,都需要单独分配硬件资源,这就造成资源被大量占用且难以被共享。但是上云之后,由于云厂商提供了统一的IaaS能力和云服务,大幅提升了企业IaaS层的复用程度,CIO或者IT主管自然而然想到IaaS以上层的系统也需要被统一,使资源、产品可被不断复用,从而能够进一步降低企业运营成本。 所有这些问题都指向一个共同点,那就是云的时代需要新的技术架构,来帮助企业应用能够更好地利用云计算优势,充分释放云计算的技术红利,让业务更敏捷、成本更低的同时又可伸缩性更灵活,而这些正好就是云原生架构专注解决的技术点。 5 2 云原生架构 云原生架构的定义 今天云原生的定义有众多版本,云原生架构的理解也不尽相同,阿里将根据自身的云原生技术、产品和上云实践,给出自己的理解。 1云原生架构定义 从技术的角度,云原生架构是基于云原生技术的一组架构原则和设计模式的集合,旨在将云应用中的非业务代码部分进行最大化的剥离,从而让云设施接管应用中原有的大量非功能特性(如弹性、韧性、安全、可观测性、灰度等),使业务不再有非功能性业务中断困扰的同时,具备轻量、敏捷、高度自动化的特点。 传统架构云原生架构 代码代码 开发人员 非功能性能力 业务代码编写 三方软件使用 三方软件调用 业务代码编写 非功能性能力 运维人员 基础设施运维 业务运维 IaaS 业务运维 PaaS 云原生架构与传统架构的对比 上图展示了在代码中通常包括三部分:业务代码、三方软件、处理非功能特性的代码。其中“业务代码”指实现业务逻辑的代码;“三方软件”是业务代码中依赖的所有三方库,包括业务库和基础库;“处理非功能性的代码”指实现高可用、安全、可观测性等非功能性能力的代码。 三部分中只有业务代码是核心,是对业务真正带来价值的,另外两个部分都只算附属物,但随着软件规模的增大、业务模块规模变大、部署环境增多、分布式复杂性增强,使得今天的软件构建变得越来越复杂, 6 对开发人员的技能要求也越来越高。云原生架构相比较传统架构进了一大步,从业务代码中剥离了大量非功能性特性(不会是所有,比如易用性还不能剥离)到IaaS和PaaS中,从而减少了业务代码开发人员的技术关注范围,通过云厂商的专业性提升了应用的非功能性能力。 此外具备云原生架构的应用,可以最大化利用云服务和提升软件交付能力,进一步加快软件开发: 1 代码结构发生巨大变化 云原生架构最有影响力的就是让开发人员的编程模型发生了巨大变化。今天大部分的编程语言中,都有文件、网络、线程等元素,这些元素为充分利用单机资源带了好处,但是却带来了分布式编程的复杂性;因此大量的框架和产品涌现,来解决分布式环境中的网络调用问题、高可用问题、CPU争用问题、分布式存储问题…… 在云的环境中,“如何获取存储”变成了若干服务,比如对象存储服务、块存储服务和没有随机访问的文件存储服务。云不仅改变了开发人员获得这些存储能力的界面,还在于云产品在这些OpenAPI或者开源SDK背后把分布式场景中的高可用挑战、自动扩缩容挑战、安全挑战、运维升级挑战等都处理了,应用的开发人员就不用在其代码中处理节点宕机后如何把本地保存的内容同步到远端的问题,也不用处理当业务峰值到来时如何对存储节点进行扩容的问题,而应用的运维人员不用在发现zeroday安全问题时紧急对三方存储软件进行升级…… 云把三方软硬件的能力升级成了服务,开发人员的开发复杂度和运维人员的运维工作量都得到极大降低,显然如果这样的云服务用得越多,那么开发和运维人员的负担就越少,企业在非核心的业务实现上从必须的负担变成了可控支出。在一些开发能力强的公司中,对这些三方软硬件能力的处理往往是交给应用框架(或者说公司内自己的中间件)来做的;在云计算的时代云厂商提供了更具SLA的服务,使得所有软件公司都可以由此获益。 TheCloud-nativearchitecturewhitebookbyAlibabaCloud 这些使得业务代码的开发人员技能栈中,不再需要掌握文件及其分布式处理技术,不再需要掌握各种复杂的网络技术……简化让业务开发变得更敏捷、更快速! 2 非功能性特性的大量委托 任何应用都提供两类特性,功能性特性和非功能性特性。功能性特性是真正为业务带来价值的代码,比如如何建立客户资料、如何处理订单、如何支付等等;即使是一些通用的业务功能特性,比如组织管理、业务字典管理、搜索等等也是紧贴业务需求的。非功能性特性是没有给业务带来直接业务价值,但通常又是必不可少的特性,比如高可用能力、容灾能力、安全特性、可运维性、易用性、可测试性、灰度发布能力等等。 TheCloud-nativearchitectu