云原生时代,CNStack 如何解决企业数字化转型难题?

3,209 阅读24分钟

采访嘉宾:张军(游骥)

随着新技术的不断涌现,企业在数字化转型的落地过程中会面临诸多技术难题,对此,阿里云发布业界首款云原生技术中台产品——云原生 Stack(简称 CNStack)。与常听到的业务中台、数据中台等概念相比,云原生技术中台概念如何理解?它将怎样具体帮助企业解决企业数字化转型难题?

11 月 24 日,InfoQ 大咖说栏目邀请到了阿里云云原生 PaaS 团队负责人、资深技术专家张军,花名游骥,来做相关问题分享。游骥从云原生技术的发展聊到云原生技术中台产品的规划以及它的落地实践案例。

游骥主导设计和建设了阿里集团和阿里云众多高可用技术产品体系,也是双 11 稳定性保障基础技术核心缔造者,目前负责云原生 PaaS 平台的建设。以下内容节选自当天的分享,InfoQ 做了不改变原意的编辑:

InfoQ:首先,请游骥来和大家打个招呼,简单做个自我介绍。

游骥: 大家好,我叫张军,花名游骥。我在 2011 年加入阿里巴巴,当时是负责阿里中间件和高可用相关基础技术,后来也负责过阿里云 SRE 团队,过去十年都在中间件和基础技术相关领域深耕。我所负责的高可用技术跟双十一的稳定性是紧密相关的,现在我主要负责云原生 PaaS 平台的构建,也就是基于云原生技术去打造云原生时代的 PaaS 平台。

\

云原生技术定义及发展过程* *

InfoQ:请游骥来和我们整体介绍下云原生的定义以及它的发展过程,在您看来目前云原生处于怎样的阶段呢?

游骥: 云原生其实是近些年非常火的一个词,但同时它的含义也非常广泛。从它的提出到今天,其定义和技术内涵都在不断变化,我们引用云原生计算基金会来为它做一个标准定义。

云原生其实是一套架构方法论和技术的集合,首先它有一个先决条件,我们的应用都是构建于云上的,然后基于云去构建易于管理、可弹性扩展、容错性好、更加松耦合的应用系统。

其实云原生不仅定义了所构建应用系统的状态,还提供了相应的技术集合,比如我们非常熟悉的容器、微服务、DevOps 以及 Serverless 、服务网格,包括 声明式 API 和不可变基础设施。它不仅提供了一个方法论和理念,同时提供了相应的技术集。在这个技术体制上,云原生的一个标志性事件是 2015 年 CNCF 的成立。CNCF 对于云原生做了一个标准化定义,同时它是比较中立的一个组织,承接起云原生的推广。CNCF 也提供了刚才提到的一系列技术集,在技术集之上提供了整个云原生大图  Landscape,包括相应的技术、工具以及平台,最终去构建运营、管理、可扩展、有更好容错性的业务应用,同时这些业务应用能运行在公共云、私有云以及混合云等不同环境中,这就是云原生的定义和目前的发展形态。

从云原生诞生,到 CNCF 成立之后,整个云原生技术开始快速发展,目前无论是在社区还是在企业,云原生都得到了快速的落地。

InfoQ:云原生技术发展到目前的阶段,对于企业来说,带来了哪些好处?同时又带来了哪些挑战?

游骥: 它的好处其实是显而易见的。

首先,云原生向下封装整个基础设施的复杂性。它基于 K8s 和容器,已经看不到下层基础设施的复杂性,并且能够屏蔽底层架构的差异性。今天在云原生的架构和基础上,K8s 和容器已经变成了基础设施的新界面。

第二,云原生对上能够支撑多种工作负载和分布式架构,不论是我们的业务应用也好,还是其他设备也好,都能用云原生技术做统一托管。同时它具备天然的分布式能力、微服务能力,能够最大化利用好云的能力,比如弹性、容灾能力、稳定性能力,能最大限度发挥云的优势,这是它的好处。

但是,云原生对于企业落地来说也存在一些挑战。第一,我不知道大家有没有看过 CNCF 的 Landscape,那是一张非常复杂的技术大图,上面有很多技术组件,这个理念是好的,但其实不太好去把它用起来,这意味着好的理念不一定能够真正带来好的价值转化。因为技术太多之后,反而不知道怎么去用好它,怎样的用法是最佳实践,其实是众说纷纭,没有一个标准说法的。

第二,缺乏统一的规划和一体化方案。现在很多应用云原生技术的公司,其实都是以组件化的方式在运用,比如用 K8s、容器、微服务、DevOps 或者 Service Mesh,但其实都是以组件化的方式在去用。

以组件化的方式用的话,其实相对来说技术还是比较割裂,没有一体化的方案,效率也会比较低,同时组件化的应用带来另外一个问题,就是组件本身也是有复杂性的。虽然在云原生场景下,屏蔽掉了应用和基础设施的复杂性,但是把云原生技术打开,按组件化的方式使用,这本身也有运维成本,并且它的组件生态也非常丰富,在运营成本的压力下,也会带来一系列稳定性、可用性的问题,这就是对于云原生技术来说的一些挑战。

\

如何理解云原生技术中台* *

InfoQ:在刚刚过去的云栖大会上,阿里云发布了业界首款云原生技术中台产品 CNStack,我们常说到数据中台、业务中台,那么云原生技术中台怎么理解?跟之前我们提到的中台有何不同?

游骥: 其实中台是一个铁三角,往上是数据中台、业务中台,往下最下面是技术中台,只是技术中台这个概念,它的范围比较广,所以很少有对于中台实体的一个定义。

说到中台的话,大家很容易想到一个故事,就是芬兰的手游公司 Supercell,这个故事也是我们业界经常讲的中台的诞生。当年马老师去拜访 Supercell 游戏公司的时候,他发现这家游戏公司的游戏迭代非常快,能很快去做一款新游戏,然后当发现新游戏市场不好的时候,又能马上放弃,很快的去做信息化。

其实这些都是依托中台所沉淀的后盾以及中台所存在的能力,依托中台的能力让前端的业务能够更好、更快的去奔跑,这就是中台。

对于中台来讲,其实今天数据中台、业务中台在业界都有一些好的落地,特别是中台产品化的落地做的比较好。但是对于技术中台来说,过往缺乏一些平台型的产品或者沉淀,所以我认为技术中台一定要关注场景,不讲场景的话,它的牵涉面太广。今天看来,云原生提供了这样一个场景,我们之前也提到,云原生定义了其技术范畴,比如说 K8s 、容器、微服务、DevOps、Serverless 、 服务网格等,在云原生技术范畴之下,技术中台的概念是可以成立的,相对来说,它会比较聚焦。所以 CNStack 其实也是属于中台的延展,它是技术中台在目前云原生场景下做的具体平台型实现。

InfoQ:为什么是现在这个时间点提出云原生技术中台?背后的契机是什么?

游骥: 阿里巴巴其实有两个属性,首先它是一家互联网的业务公司,有天猫、淘宝、支付宝、饿了么这些业务,从另一个维度来讲,它又是一家提供云计算的公司,所以说它有两重身份。

从第一个属性来说,在过去的这十几年的过程中,作为一家互联网业务的公司,我们在云原生领域沉淀了丰富的技术积累,这也是我们能够做这个事情的前提。

为什么不是早些年做呢?我觉得有两个节点很重要。

事实上来讲,阿里是目前业界少有的所有的业务都是跑在云上的,因为很多做云计算公司也做其他业务,没有 100% 在云上。但是,我们也不是在做云的第一天就是所有的业务都跑在云上,2019 年,阿里实现了所有核心业务真正搬到云上,但是搬到云上应用云和今天的 Cloud Native 云原生化的去使用云还是不一样的。

在 2020 年,阿里真正采取云原生的方式去使用阿里云,这就决定了我们在 2021 年去做云原生的技术中台。其实在此之前,阿里的中间件技术也好、新技术也好,也在以组件化的方式提供到阿里云上去输出,但是当阿里自己都还没有以阿里云的方式去构建云原生的方式去用好云的时候,这个平台其实它是不成立的,所以我们希望自己先把这么复杂的业务以云原生技术平台的形式去支撑,支撑完成以后,再面向客户输出。2020 年,阿里完成了百分之百云原生化的上云之后,我们才开始沉淀对外部客户的云原生技术中台产品。

InfoQ:CNStack 是怎样具体帮助企业解决相关难题的?

游骥: 其实我们在设计 CNStack 的时候没有想过用一个平台解决所有的产品问题,所以可能事实上它是一个平台型的产品服务。

目前,CNStack 产品家族里有三大成员:第一个成员是云原生 Stack for Application,面向我们所有在线业务应用的开发,比如我们所熟知的交易型应用,主要面向在线应用的生态;

第二个是云原生 Stack for SaaS,面向独立化的 SaaS 部署软件,给大家举个例子,比如我们在用的腾讯会议、钉钉,包括独立性的软件产品,CNStack for SaaS 可以为这些产品提供云原生技术中台服务;

第三个是云原生 Stack for Edge,今天边缘是一个非常快速发展的业务,而云原生 Stack for Edge 正是基于边缘场景的一个技术平台。

然后我简单展开介绍一下这三个场景所提供的能力。

对于云原生 Stack for Application 来说,它提供了三个重要的能力:

第一,对于基础架构的抽象,能把基础架构统一纳管和抽象,做到基于 K8s 和容器,包括提供多集群、资源调度的抽象能力;

第二,整个应用生命周期的构建、管理和运维,这里包括了应用的开发、微服务、DevOps,包括整个应用生命周期的管理能力;

第三,提供了丰富的分布式的云原生中间件,包括分布式消息、分布式事务、分布式配置管理,可以理解为在线应用的开发运行构建了整个生命周期里的技术支撑和它所依赖的这种分布式技术组件,都在云原生技术中台进行了统一的提供。

对于云原生 Stack for SaaS 来说,今天的 SaaS 场景输出其实面临的一个问题是它怎样能够快速交付。比如说我们开发一个钉钉的软件或是腾讯会议的软件,对于 SaaS 软件的研发方来讲,他希望只需要关注软件本身代码的研发,而不需要关注软件用到的数据库或者中间件。

所以除了 SaaS 应用的快速交付之外,我们能够提供 SaaS 应用所依赖的基础技术全部内嵌到 SaaS 应用本身的云原生技术中台中去,云原生 Stack for SaaS 可以理解为一个嵌入式平台,它被 SaaS 软件所内嵌了,内嵌了之后它提供了一个快速的交付和简易的运维,再加上所依赖的全面的技术组件能力,同时它具备 SaaS 应用交付到任意的 IaaS 环境中的 IaaS 适配,且能够屏蔽掉 IaaS 的差异性。另外,SaaS 软件是需要私有化输出的,需要输出到客户,对此,云原生 Stack for SaaS 还提供了在线版本,可以在在线的版本里去做验证、测试、POC 打包,然后直接导到离线的环境当中去安装部署就好了,所以它极大地提升了交付和运维效率,能快速的把 SaaS 场景输出。

对于云原生 Stack for Edge 来说,边缘场景包含了边缘设备的管理,如何管理需要去考虑,但边缘应用跟  for SaaS、for Edge,和我们常规的应用不一样,它是一些非常轻、非常小的应用,对于资源的灵敏性会比较敏感。同时边缘还有边缘的一些中间件,其实边缘的中间件我们需要做一些裁剪,比如说别人的消息,它可能跟通常分布式场景下的消息是不一样的,它要更加轻量化,对于网络的敏感性更强。除此之外,还包括边缘的一些算法,很多时候边缘依赖一些算法,比如 AI 的能力都统一打包到边缘场景中。

以上就是 CNStack 的三大产品家族,而且未来我们还会有更多产品加入,值得期待。

云原生技术中台落地实践* *

InfoQ:目前 CNStack 已经落地实践了吗?

游骥: 对, CNStack 已经落地了三大产品家族,其中我们已经发布了云原生 Stack for Application 和云原生 Stack for SaaS,云原生 Stack for Edge 可能会在稍晚一些发布。

此外,CNStack 社区版将在 12 月底开放下载,欢迎大家来使用。

InfoQ:那么它的应用情况是怎样的?可以给大家举一个相关应用场景案例来介绍一下。

游骥: 好,我相信大家都非常关注这个话题。

我们现在发布了云原生 Stack for Application 和云原生 Stack for SaaS,我各举一个例子。首先对于云原生 Stack for Application,我们有一家金融的客户,这里就不透露公司名字了,它在用 CNStack 之前,是非常传统的技术栈,可能用的是 Oracle 数据库和 Java 程序,并且是比较传统的用法,也没有微服务、消息等,基于 CNStack 做数字化转型之后,它的架构完全基于云原生化,通过微服务以及一些消息调用,可以明显感受到整个研发效率提升了很多。

背后的原因在于,原来基于一体化应用做开发,所有人都在研发一个系统,当模块增多后,不断迭代会带来很多问题,整个技术体系相当于一个黑盒,看不到技术属性的运营状态,而在 CNStack 云原生技术场景下,它天然具备一些可观测能力、高可用能力,并且整个应用开发、部署、运维等生命周期都由纯手工变成了纯自动化的操作流程。

同时,这个客户每年和阿里一样,也会有类似双十一这样的大促活动节点,也会在这个节点有非常大的流量,但此前并没有成功过,当然,我猜测这也是它采用云原生改造的初衷。而我们在测试云原生 Stack for Application 时,已经把阿里内部多年做双十一的原生态、高可用保障能力植入了进去,所以它也具备了与阿里保障双十一一样的高可用能力,因此我们这个客户大促的峰值流量问题也在无形之中解决了,云原生 Stack for Application 在研发效率、迭代速度、包括机器成本上都带来了明显的改观,同时在弹性扩展、资源调度上,也做到了成本的节约。

第二,对于云原生 Stack for SaaS 来说,我也举个例子。截至目前,阿里所有一方的产品其实都是基于 CNStack 去输出的,比如刚才提到的钉钉、蚂蚁区块链的一些产品、大数据的一些产品和移动端的一些 SaaS 化产品,那么同样带来很明显的差异就是这些 SaaS 软件开发不再需要关注底层 IaaS,因为底层 IaaS 都通过 CNStack 屏蔽掉了;同时,CNStack 还提供了类似中间件,钉钉不再需要去考虑所依赖的中间服务,同时又能提供非常快速的交付和运维体系。

具体来看,以阿里自身为例,在面对其他竞争对手的时候,正是基于 CNStack 的部署,在竞争对手还在搭建环境的过程中,我们已经完成了部署交付,交付效率提升 5 倍左右,同时它降低了 90% 对基础中间件的运维成本。

InfoQ:您认为云原生技术中台的提出对于整个中台以及企业数字化转型有何重要意义?

游骥: 回到我们做技术中台的出发点来看,希望基于云原生技术中台之后,真正做业务研发的、做商城业务构造的,能够更聚焦于业务本身。从业务层面来讲,能够让业务需求更快速地被响应,能够让业务研发的团队能够有更多的时间和精力投入到业务迭代和业务创新本身,这是技术中台从业务层面给企业带来的价值。

展开来讲,它是从几个方面实现的:

第一,云原生技术中台提升了整个应用构建生命周期的效率。云原生技术中台提供了完备的分布式架构,因此研发需要的中间件技术等基础设施都不需要去考虑了。同时在运维层面,它支持高效运维,提供了从基础设施到容器、业务应用、缺陷、智能告警等整个可观测和监控告警体系,同时内嵌了高可用能力,包括对于应急场景预案、开关预案、流量调度等一系列高可用能力,所以,整个研发效率得到了极大的提升;

第二,云原生技术中台节省了成本。成本方面除了人力成本之外,还包含机器成本,云今天有一个很核心的思想,弹性和按需使用,在云原生技术中台里面,它具备一个很好的弹性扩展能力,不需要一次就锁定很多资源,能弹性的按需去锁定资源,同时做资源的调度和优化,因此总体上来说,技术中台可以大幅节约成本;

第三,云原生技术中台具备天然的高可用能力。高可用能力其实是目前互联网业务快速发展下一个非常大的挑战,因为业务迭代变快、技术组件变复杂、技术环节增多,引入的稳定性风险会越来越多,在云原生技术中台里,它内嵌了高可用的能力,企业无需为高可用去做太多额外工作。

以上就是云原生技术中台带来的价值。

InfoQ:云原生技术中台这个理念在被企业接受的过程中有没有面临挑战呢?

游骥: 其实还是有蛮多挑战的。第一,云原生技术中台是面向企业的,在此之前,企业都是有自己的异构 IaaS 设备的,这意味着硬件设施和硬件环境不一样,所以怎样去匹配好企业异构场景,这是面临的第一个挑战;

第二,阿里的最佳实践,能否在其他企业里去复制,这也是需要打磨。在阿里内部用的好,输出之后,面对不同产品又该怎样更好地发挥它的价值,这是面临的第二个挑战;

第三,开发性和兼容性。外部企业基本都会用到自己的技术体系,云原生技术中台怎样以开放的方式兼容现有的技术体系,这是面临的第三个挑战;

第四,对于云原生技术中台来说,如何以一体化方式解决问题,真正围绕应用的全生命周期,保障业务稳定性。

InfoQ:面对这些挑战,阿里将从哪些方面着手去解决?

游骥: 其实这些挑战我们在第一天开始做云原生技术中台的时候就在同步想解决方案。首先,CNStack 是把阿里当成一家外部客户来看待的,所以整个技术体系的落地,阿里可谓是第一家吃螃蟹的,作为公司和子公司之间的一个技术平台去支撑,来解决我们一些常见问题;

第二,我们从产品设计的第一天,就是围绕支撑异构包括支撑国产化设备、IaaS 设备去设计的,所以它具备对于异构 IaaS 的适配能力;

第三,CNStack 不仅能无缝兼容阿里自己的开源技术,还能兼容业界的开源技术;

第四,我们重点去关注怎样一体化解决问题。我们不希望 CNStack 提供的能力仍是组件化形态,而是希望能够真正围绕应用构建、运行、管理、运维整个生命周期里,能真正打通端到端的技术环节,提供可观测能力、监控告警能力,同时具备高可用和安全生产的能力,能保障整个业务的稳定性。

InfoQ:阿里云对于云原生技术中台的总体规划是怎样的?

游骥: 前边提到,我们已经发布了云原生 Stack for Application 和云原生 Stack for SaaS 。接下来,我们会持续做产品家族的完善,包括去扩展 AI 智能化等更多场景。为了能让企业更好地用云原生技术中台,我们也将上线云原生 Stack for Edge 以及 CNStack 社区版。社区版能够免费下载,还能够和企业版做兼容和迁移,让大家以更低的成本去体验云原生技术中台的能力,这也是产品家族的一个完善;

第二,产品能力的升级。从应用的架构设计阶段,除了为企业提供有代码的研发以外,能拓展低代码,甚至无代码的研发体系;

第三,更加体系化。这也是需要持续去做的事情,我们希望能更加体系化、端到端的解决问题,真正把问题解决在中台里面;

第四,中台本身需要更加精简、具备更好的稳定性,需要在交付和部署过程中,能更轻更快,这些都是我们的未来规划。

\

Q&A 环节* *

InfoQ:在开发这款产品过程中,有没有遇见印象深刻的技术难点或者“坑”,和大家分享一下\


游骥: 其实做中台真的非常不容易,做中台也会有很多技术难点。第一,需要去做适配。我们的产品会输出在阿里云不同的硬件设施上,也会输出到国产化设备上,这其中会有很多适配工作;

第二,我们在云原生技术中台产品发布之前,也有一些组件化单产品形态,如果要以一个中台化、一体化 PaaS 平台输出的时候,一定与之前的组件化单产品形态有交集,这里面就有如何取舍的问题,如何能让组件化单产品形成好的一体化体验。同时,这其中又会涉及顶层设计问题,怎样能把不同组件化单产品的重复能力相融合或做更好的衔接,解决这个问题也花费了我们很多的时间和精力。

InfoQ:技术中台落地过程中肯定也会有不顺利,其中的酸甜苦辣能和大家分享一下吗?

游骥: 因为我们也是前段时间才发布,所以最早阶段使用的用户,还是非常不容易的。在最早期阶段,我们的交付部署还没有非常理想化,整个交付需要我们投入很多研发能力,把前期的坑打通。虽然我们已经在“家”里面做了无数次测试和演练,但实际过程中还是会遇到网络、存储或硬件设施等问题,所以在早期,我们还是在交付和运维上投入了很多精力。

当然,今天我们可以做到几个小时甚至不用到现场就能进行交付,这是非常不容易的,其实我们在背后付出了很多。

InfoQ:中台目前是有一些争议的,那么对于 CNStack 来说,您认为会有影响吗?

游骥: 我知道中台有些争议,有的公司在拆中台,包括阿里自己也在讲中台要做薄,但我并不觉得中台本身的定义有问题,问题在于我们怎样构建和搭建中台。

中台的理念并没有错,什么样的东西要放到中台,什么样东西不放到中台,我觉得要在设计中台的第一天就考虑好,当中台设计好,它一定能提升效率,能让前台的业务更快,相反,如果设计不清楚,就会阻碍中台的运行。

因此,对于业务中台来说,我们一定要拆分的足够清晰,什么样的能力由中台来提供,什么样的能力由前端的灵活性去自由拓展,很多时候,我发现大家在用中台的时候并没有合理的拿捏这个界限问题。

包括我认为今天比较大的争议其实聚焦在业务中台上,因为在业务层上,很难区分到底什么样的业务应该集成到平台里面的,到底什么样的技术应该放在前台。

但是云原生技术中台,它的边界还是非常清楚的,在业务应用这一层,它只提供基础开发能力和运维能力,并不接触技术开发本身和业务本身,只是提供一些技术能力、技术中间件、技术监控能力等。总的来说,对于中台的一些争议,我认为还是在业务中台上比较多,对于数据中台和技术中台来说并没有太大的影响。

点击​此处​,前往 CNStack 官网查看更多详情!