云原生是近几年最火爆的技术热词之一,几乎所有的云计算产品都会或多或少跟云原生发生关联,云原生正在重塑整个软件的生命周期。但到底什么是云原生?云原生带来的最大的技术创新和未来机会是什么?以及,围绕云原生,是否可以构建出一套云上的开发和运维体系,打造新一代研发平台,实现研发效率的最大化?
以下内容整理自阿里云云原生应用平台负责人丁宇(叔同)在阿里内部的技术分享,希望帮助技术同学更好地理解云原生。
我经常在电梯里听见一些同学在讨论云原生,大家会问云原生为什么这么火。我们将时间线倒推20年,当时最流行的是企业软件架构,企业使用ERP、CRM做信息化改革。十年前,消费互联网开始崛起,那个年代最流行的是互联网技术;而今天是产业互联网盛行的时代,在云计算快速发展的背景下,企业需要加速数字化创新,打造数字韧性能力,云原生应运而生。
一 因云而生的云原生
什么是云原生?这是很多同学都关心的问题。云原生的代表技术包括容器、服务网格、微服务、不可变基础设施和声明式API。这些技术能够构建容错性好、易于管理和便于观察的松耦合系统。结合可靠的自动化手段,云原生技术使工程师能够轻松地对系统做出频繁和可预测的重大变更。
云原生是一种新的计算方式,让应用能够充分使用云的计算优势。只有结合云原生所提供的云服务,改造应用的架构,才能够更好地使用云原生技术,以及更好地构建弹性、稳定、松耦合的分布式应用,解决分布式复杂性问题。此外,对架构的改造还意味着相关的开发模式、交付方式、运维方式等都要随之改变,比如,采用微服务架构重写应用、用声明式 API和自动化工具升级运维方式等。简单来说,云原生使得整个软件的生产流水线都发生了巨大的变化,而具体的变化程度又取决于企业对云原生的使用程度。
那么,云原生和云计算的区别是什么?我们认为,云原生是云计算的再升级。云计算的优势是资源、计算、存储、网络的池化,这种池化带来的好处是大规模的集约性管理,弹性、分布式无处不在,它可以用一种API进行运维管理,从而实现管理的自动化。今天,云原生技术只有跟云结合起来才能实现它的使命,去构建那些具备高弹性、可扩展、松耦合、容错性好等特性的系统。
云原生和云计算结合在一起是什么?就是云原生产品。今天,阿里云对于云原生有一个定义,叫生于云、长于云,因云而生的产品、技术、软件、硬件、架构,我们认为它都是云原生。以阿里云为例,我们提供了大数据、中间件、数据库、安全、音视频,以及云原生网络、弹性裸金属服务器、存储等,这些都是云原生产品。从这个维度来看,云原生的内涵被极大地丰富了。而从企业客户的角度,云原生就是企业构建了新一代的软件架构,也就是云原生架构。
二 阿里巴巴15年云原生实践
2006年,我们开始探索互联网分布式架构,这也是阿里巴巴云原生实践的起点。之所以要做互联网分布式架构,是因为当时淘宝在快速发展过程中遇到了一些困难,比如300人开发3个系统,这会带来一些冲突问题,如代码发布、代码合并等,这些冲突导致研发团队的效率大幅下降,业务推进不够敏捷。因为这些痛点,我们提出要做服务化的拆分,也就是分布式系统。在2008年淘宝完成了服务化拆分,形成了三大核心中间件,并对行业进行了开源。
2011年,我们开始推进容器化的落地。为什么要做容器化?要知道,在2011年全球做容器化改造的公司都屈指可数。要做容器化主要是因为我们开始重点关注资源利用率的问题,从资源的供给层面,过去有几种形态,比如用纯粹的物理机,这就意味着部署密度比较粗,因此利用率不高。如果用虚拟化进行隔离,就会产生一定的资源消耗。在2011年,阿里巴巴开始做容器化技术改造——T4项目。容器解决了三个核心问题,一是部署密度,二是运维效率,三是资源隔离。随着Docker的出现,其容器镜像的标准化能力对自动运维产生了非常强的推动,保证容器可以实现标准化的交付。基于此,阿里巴巴将Docker集成,推进更标准化的云原生技术。
2015年,当我们的技术和产品成熟之后,就开始推进产品技术的商业化,并拥抱云原生标准。在这段过程里,阿里巴巴自身的业务发展也开始全面享受云计算红利。比如双11、双12这样峰值型业务,如何通过云平台去解决资源池化后带来的极致弹性能力?从2015年开始,阿里云开始支撑阿里巴巴双11,与此同时,我们开始落地容器的统一调度以及底层资源池的统一。除此之外,我们也开展了多种工作,比如混合部署,实现技术栈的统一、数据的统一,从而大幅降低了资源成本,提升了运维效率,更好地推进业务的智能化。
可以设想一下,一家公司有1万名工程师,如果可以提升10%的研发效率,就能节约1000名工程师,这极大地释放了我们的生产力。进一步,如果我们能有一些更高效的平台,更先进的方法和流程,并融入到技术体系中,就会给技术人员的产能带来巨大的提升。
2019年,对于阿里云而言意义重大。在这一年,阿里云支撑了阿里巴巴双11核心系统100%上云,在线业务容器规模近200万、100%采用神龙裸金属服务器、计算性价比提升20%。紧接着在2020年,我们又完成了核心系统100%云原生化,云原生产品开始全面支撑集团大促,并成为全球最大规模云原生实践的新底座。这背后的原动力,就是利用云原生的平台、产品、工具,实现应用云上生、云上长。
事实上,基于服务器的云服务并不是云时代的终态。试想一下,如果服务器的概念被进一步抽象,那么与服务器有关的维护工作都会变成由云来承担,这就是我们常说的 Serverless。过去十年,云正在逐步向 Serverless 演进。2016 年,阿里云发布的函数计算提供了函数级抽象,2019 年发布的 SAE 提供了应用级抽象,这些产品都抹去了服务器的概念,让用云方式得到极大的简化,并逐渐成为趋势。
三 阿里云对云原生的断言
在企业上云的趋势下,我们看到越来越多的企业和开发者开始把业务与技术向云原生演进。在云原生时代,云产品的核心竞争力是什么?在我看来,云产品的立身之本就是持续要做先进生产力的代表,这就要求云产品具备硬核的技术能力,并能实现快速迭代。对于任何一家企业而言,自身的系统是很难具备如此顽强的生命力和竞争力。所以,阿里巴巴在2020年全面切换为云原生产品支撑大促,一是认准了云原生技术趋势,二是云产品给阿里巴巴内部的研发效能、资源利用率带来极大的提升。
基于此,阿里云对云原生提出了三个断言:
首先,容器+K8s将成为云计算的新界面。容器彻底改变了云的使用方式,它解决了许多问题的同时,还创造了新的架构可能性。容器化是搭建云原生的关键,如果说云原生是一栋高楼大厦,那么容器化便是这座大楼的底座。容器向上支撑多种工作负载和分布式架构,向下封装基础设施,屏蔽底层架构和异构环境的差异性,并能够形成应用的打包镜像分发交付标准。阿里云容器服务 ACK 向下封装了30款云产品,对于整个自动化运维和云平台的交互形成了一个新的界面,从而提升了系统的弹性能力和自动化运维能力。同时,容器也推动了软硬一体化的升级,如神龙裸金属服务器。
其次,对于开发者而言,云原生正在重塑整个软件生命周期。我们看到云原生向下延伸推动软硬一体化,向上延伸推动架构现代化,水平延伸解决研发运维全生命周期的挑战,包括代码开发、DevOps、CICD流程、运维监控、可观测等。云原生与开发者的整个开发流程息息相关,是开发者不可忽视的重要助力。
最后,对于企业而言,云原生是企业数字创新的最短路径。云原生对于企业技术演进的价值在于:首先是基础设施的云化,以容器为代表,将基础设施非常平滑地搬到云上,帮助企业完成基础设施的云化。二是核心技术互联网化,云原生将互联网技术以标准化的方式传递给传统线下企业,互联网的技术、思路、理念、组织形态可助力传统企业能力升级,实现低耦合、可扩展、小步快跑、快速迭代、敏捷开发、业务快速上线等。三是云原生驱动应用架构向现代化演进。我们常说“一云多芯”“云边一体”等理念,就是为了解决企业数据化、智能化、移动化问题。在云原生技术体系下,云原生可以更好地推动企业 IT 体系变革。四是多中台。云原生帮助企业构建业务中台、数据中台、AI中台等,因为数字化转型的关键就是用数据将业务进行数字化和智能化升级,从而更好地驱动业务迭代和创新。
阿里云拥有国内最丰富的云原生产品家族,有超过100款云原生产品,近千个技术解决方案,包括云原生DevOps、aPaaS&微服务、消息和事件驱动、应用工具、Serverless架构等,以及云原生数据库、大数据/AI、应用交付和安全能力等。可以说,一家企业诞生于云原生时代,可以把自己的 IT 体系基于云去构建,阿里云在其中可以提供最完整的技术方案和产品体系。
云原生不是垄断的技术,阿里云也不是通过垄断的方式赢得客户,必须要靠先进的技术理念和硬核的技术实力。阿里云容器服务已经连续三年入选Gartner公共云容器竞争格局,产品丰富度与成熟度持续保持全球领先水平;阿里云入选Forrester FaaS领导者象限,函数计算产品能力全球领先;阿里云入选Gartner APM 魔力象限,国内唯一云厂商,产品能力和战略愿景获得分析师高度认可。
四 云原生驱动全云开发时代的到来
在云原生快速发展过程中,也看到了一些趋势:比如容器+K8s成为技术基础设施。容器让应用运行时与环境解耦,K8s让资源管理和基础设施解耦,向下封装基础设施层,屏蔽底层架构差异性,连接异构算力,云边端一体化,构建分布式云;向上支撑多种异构工作负载,分布式、弹性可扩展、Mesh化解耦,推动应用架构现代化演进。可以说,容器和K8s已经变成了云计算时代的分布式操作系统。
我们也看到云原生带来开发模式的革新。一份来自全球开发者的调研显示,传统开发模式和云原生开发模式形成了鲜明的对比。云原生开发模式采用模块化架构,通过标准接口和协议进行通信。在扩展性上,可以按需自动弹性扩展,并且具备良好的可移植性。这些特性已经颠覆了传统开发模式。
除了在开发模式上的改变,我们也看到,在云原生的驱动下,一个新的开发时代正在到来。
2021年底,68%的机构会在生产环境中使用容器,比去年增长39%,比两年前增长240%。阿里在2016年实现了100%容器化,而在2021年,68%的企业将在生产环境中使用容器,可以确定的是,容器已经成为一个绝对的趋势。
开发者云上开发意愿度达到68%。大量开发者已经感知到云上开发所带来的变化,包括前端/后端,网页、移动端、小程序,逻辑、模型、组件等,云上开发带来了生产力的改进,效率的大幅提升等。
到2021年底,25%的开发者将使用Serverless产品。今天,我们已经开始大力投入Serverless产品,包括函数计算FC、Serverless应用引擎SAE、Serverless容器服务ASK、无服务器基础设施ASI、弹性容器实例ECI等。阿里云与淘系、高德、闲鱼也在探索Serverless的更多合作,大家也许没有感觉到Serverless,但实际上很多技术已经Serverless化了。
五 布局开源生态,推动全云开发与实践
阿里云拥有国内最全面的云原生开源贡献。今天,阿里云在 GitHub上开源项目总数超过2600+,涵盖了大数据、云计算、AI、中间件、容器、Serverless等领域,拥有超过 30000+ Contributor,超百万 GitHub Star,位列中国企业开源社区 GitHub 贡献榜首。这其中,一些开源项目也成为了该领域的事实标准。比如 Dubbo 已经成为国内影响力最大、使用最广泛的开源微服务框架;RocketMQ 是国内首个互联网中间件的 Apache 顶级项目,也是常年霸榜国内第一的开源中间件项目。此外,我们还有应用管理引擎 KubeVela,去年刚开源的阿里巴巴第一个边缘计算项目OpenYurt,分布式高可用领域的混沌工程工具 ChaosBlade 、服务注册发现 Nacos 以及首个 Serverless 开发者平台 Serverless Devs等。
面向整个技术社区,阿里云把研发多年的技术成果回馈给全球顶级基金会,如开放原子开源基金会、 Apache 基金会等,阿里云致力于打造一个开放的、标准的、健康良性的技术生态。可以说,一位开发者想要基于云原生技术构建一套开源架构,完全可以在阿里云生态里找到自己的解决方案。阿里云已经服务了大量企业级头部的用户,如爱奇艺、虎牙直播、南方航空、平安科技等,同时正在构建一套开放标准的技术体系,服务于全球开发者。
云原生最开始提出来的时候,是以资源集群管理与运维为切入点,但是今天如果要把所有的工作负载运行在一套基础设施之上,还缺乏对应用的管理。所以我们提出,以应用为中心,关注点分离,把开发运维基础设施、合作边界、协议、方法全部定义出来,也就是一站式应用管理与交付平台KubeVela。今年6月,KubeVela进入CNCF Sandbox,目前镜像下载量突破30万次,拥有20多家全球企业客户。今年也非常荣幸被信通院立项作为行业标准OAM。
企业上云是趋势。阿里云在国内率先开源了自研RocketMQ,成为 Apache 顶级开源项目。RocketMQ为用户提供了高性能、高可靠、低延迟的消息服务,成为业内流行的金融级业务消息首选方案。
伴随着云原生技术的发展以及全面云化成为大势所趋,我们看到众多企业客户对消息中间件的演进有着更深层次的诉求。接下来,我们将在社区和商业同期发布 RocketMQ 5.0,全新定义“消息、事件、流”一体化融合处理的新理念。RocketMQ 5.0将在基础架构云原生化、消息流式处理以及事件驱动三个方面带来变化。
首先,基于阿里云大规模生产实践的背景,RocketMQ5.0 将提供面向多种场景可调整的极简弹性架构,帮助企业客户在资源弹性、运维复杂度、业务生态创新等方面做好平衡;其次,RocketMQ5.0 将围绕高价值消息数据提供全新轻量化设计的流式处理框架,方便企业开发者就近处理消息计算和分析;最后,面向未来,RocketMQ 5.0 会基于开放的标准,连接云服务和开源生态,并配合 Serverless 开发模式,为用户提供低代码、无服务器的下一代事件驱动架构服务。
阿里云通过大量的投入开源,建立更多的技术标准,帮助百万开发者使用更先进的云原生技术,让社区生态和云之间建立起非常好的连接,助力企业和云的协同发展。
去年双11,阿里落地了全球最大规模云原生实践。在2016-2019年,我们用了将近4年时间,让双十一的万笔交易成本下降80%,今年双11有望实现新的突破。其背后依靠的是统一调度,混合部署,分时复用,高弹性能力,从而大幅提升应用或集群的资源利用率。
作者 | 叔同
本文为阿里云原创内容,未经允许不得转载。