简介: 云原生是近几年最火爆的技术热词之一,几乎所有的云计算产品都会或多或少跟云原生发生关联,云原生正在重塑整个软件的生命周期。但到底什么是云原生?云原生带来的最大的技术创新和未来机会是什么?以及,围绕云原生,是否可以构建出一套云上的开发和运维体系,打造新一代研发平台,实现研发效率的最大化?
作者 | 叔同
来源 | 阿里技术公众号
云原生是近几年最火爆的技术热词之一,几乎所有的云计算产品都会或多或少跟云原生发生关联,云原生正在重塑整个软件的生命周期。但到底什么是云原生?云原生带来的最大的技术创新和未来机会是什么?以及,围绕云原生,是否可以构建出一套云上的开发和运维体系,打造新一代研发平台,实现研发效率的最大化?
以下内容整理自阿里云云原生应用平台负责人丁宇(叔同)在阿里内部的技术分享,希望帮助技术同学更好地理解云原生。
丁宇(叔同)
我经常在电梯里听见一些同学在讨论云原生,大家会问云原生为什么这么火。我们将时间线倒推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 体系基于云去构建,阿里云在其中可以提供最完整的技术方案和产品体系。