CNCF TOC 委员张磊:不断演进的云原生给咱们带来了什么?

简介:任何一种云原生技术,它再也不是某种能力的弥补,而是更多地将云的能力以某种方式更简单、更高效地透出给个人应用去使用。不管是容器、K8s 仍是 Service Mesh,他们都是在不一样的环节帮助应用自己可以更好地去使用云服务。

做者|张磊
 title=数据库

云原生是什么?

即便“云原生”的提出已经有一段时间,但很多人仍是会有这样一个问题:究竟什么是云原生?或者说云原生的确切定义是什么?
安全

实际上,当咱们接触到不少云原生的开源技术和产品以后,会逐渐发现一个现象——云原生本质上其实并非一个很是确切的物体。也就是说,云原生其实不存在什么具体定义,它指的是一个不断演进的过程。与其谈云原生的本质,不如咱们将它理解为一套愿景。
网络

那么这套愿景的内容又是什么呢?
架构

在将来云的时代,咱们的软件或者应用是自然的生于云上,长于云上。之因此会出现这样一种现象或这样一个事实,正是由于云计算可以最大程度地去帮助这些软件降本提效,释放软件自己最大的业务价值。这才是云原生真正想要去作的一件事情,因此它并非某一项具体的技术,也不是某一个方法,更不是某一个具体的科研项目。
并发

不断演进的云原生

下图可以直观地阐明云原生总体的形态究竟是怎么去演进和发展的。框架

 title=

云原生很是强调利用云的特性,因此它的核心方法论和核心概念都是围绕如何让咱们的软件和应用去利用云的特性。那么云的特性是什么呢?好比说云是可以无限弹性的、云的资源是能够快速交付的、云的使用方法是能够按量付费的,这些都是云很是本质的特性。
运维

围绕这些云的特性,云原生才有了一套最基础的方法论和概念。好比你们可能据说过不可变基础设施,当个人应用部署在云上,假设这个应用载体是不可变的,我就能够随时把它删掉或替换掉,那么要更新个人应用会很是容易。若是要升级应用,能够直接采用删掉旧的、上线新的方式去作,而不是说须要去动态变动应用里面的某项配置,甚至动态更改代码去实现。因此,不可变基础设施就是一套很是典型的、基于利用云的快速资源交付能力而造成的方法论。ide

再好比说,云原生强调要高度的自动化,实现自运维甚至自愈,其实也是但愿软件自己可以去更好地利用云的特性。由于云的能力是很是强大的,云可以提供各类各样的运维能力,因此应用或者软件可能从开发的时候,就要考虑到云其实可以提供不少能力到应用层,而不是说先开发完应用,再去思考怎么借助云的能力去运维,这样是构建不出来云原生应用的。模块化

再好比说,云原生应用无所谓用什么语言写,用什么框架写,这也是很明显的一个特色。由于云自己是一个基础设施能力,那么就不该该也不会去用某种语言或者框架去锁定。一样也是但愿这个世界上全部的软件都可以去利用云的能力,而不是说云只能服务于某种语言。函数

以上这些都是在云的背景下,云原生提出的一些很是重要的概念。而这些概念自己在咱们的技术研究当中就会被映射成为一系列的系统,或者说架构思想。好比说前面提到不可变基础设施,能够把一个应用旧的实例删掉换成新的实例,像这样的一套方法怎么去实现?就要靠容器技术。容器技术本质上提供容器镜像,一个容器镜像是自包含一个应用的运行环境,包括应用自己,能够随时把这个镜像版本替掉,上线一个新的版本就能够了。这其实表明着容器是不可变基础设施的一个很是良好的实现。

那么这是否是意味着将来会有某一种技术,可以更好地去实现不可变基础设施呢?这是颇有可能的,而且这项技术固然也是云原生的。当将来可能有一个新的技术去实现不可变基础设施,或者更好地实现不可变基础设施,那么这样一个技术也必定是属于云原生的核心范畴。与之相似的,像咱们云原生今天强调的 Sidecar 架构,就是把中间件能力经过一个叫 Sidecar 容器的方式去对接到业务容器里去,而不是说在业务自己上去作定制,集成中间件去解决问题。这实际上是但愿可以去实践咱们强调的与语言无关、与框架无关的这样一套方法论所提出的一个架构。而这个架构的特色就是,中间件能力再也不须要以语言或者框架的方式嵌到业务代码自己里去,因此说 Sidecar 加上容器都可以去实现这样的一套方法。

这就是云原生方法论背后不断推演出来的一系列技术和架构,而这些技术架构最终在云原生生态里面,每每是以开源的技术项目来给你们去使用的。好比说前面提到的容器就会有 Docker 上的项目,咱们提到的 Sidecar 和自运维的这套思想,最终会经过 Kubernetes 去帮你去实现。

再好比说最近比较火热的 Service Mesh,它本质上在帮你去作中间件的能力,只不过是经过 Sidecar 这种与语言无关的方式去作;再好比说咱们将来或者说如今就已经比较火的 eBPF、WASM,他们其实都是在实践云原生这套体系背后的某项思想和某种架构,以开源的方式去知足让用户使用的场景。而正是由于有了这一系列的开源项目,咱们才能作到说当个人用户拿到这样的开源项目,拿到这样的技术,他可以去真正实践云原生理念,从而达到咱们前面讲到的这两种云带来的本质效果:

第一个是提高效率,好比说研发效率、交付效率、运营效率。例如个人应用自己经过容器实现了不可变基础设施的这样一套理念,那么它的交付就能够很是简单,我只须要作镜像,交付镜像后它就能够运行在每个地方;再好比说咱们的运维,当你的软件自己已经实现了自运维,那么它的运维的难度和成本必定是下降的,因此咱们必定可以借助云的能力去提效。

第二个是下降成本,这里包括了资源成本,也包括了人力成本。好比说经过 Kubernetes 或者说经过容器这样的项目,个人应用能够更好地、更多地去集成云服务,经过云服务来减小运维成本和人力投入,这些都是很明显的成本下降。再好比说个人应用经过云原生实现了上云,又经过云原生架构,能够很快速地进行资源交付和更新的模式,让整个应用的资源成本也变得很低,这一样也是经过云原生技术,让应用可以更好地使用到云的本质能力的一种很是好的体现和实践。

整体而言,你会发现这一套云原生的方法实际上是一个很完善的闭环,先不断去地看、不断地去探索如何利用云的特性帮助用户去提效降本,而后把这一系列的方法或者这一系列的思想,总结沉淀成为云原生的概念和方法论,再经过一系列相应的架构和对应的开源项目将其实现,最后再让用户可以去使用这些技术,从而达到释放云计算红利的本质目的。

因此说云原生它没有一个具体的定义,它其实是一套不断自我演进的理论体系加上最佳实践的组合。

今天的云原生

今天的云原生多是围绕着容器和 Kubernetes 来构建的,而这样的项目实际上在帮助咱们去实践不少云原生背后的本质思想,包括不可变基础设施、自动化等。今天 Kubernetes 被认为是一个云时代的通用控制平面,也有人把它叫作操做系统,就是说你的全部操做均可以借助 Kubernetes 在云上统一去完成。

一、Kubernetes 项目的“安卓化”

Kubernetes 项目的角色可能会愈来愈像一个安卓。举一个例子,好比说今天的 Kubernetes 其实正在作到无处不在,每一个地方每一个云层都有 Kubernetes,甚至部署在端的用户、或者部署在边缘的环境下都是很是正常的,就跟安卓同样,车上也有,咱们电视里也有,甚至空调也会有可能有一个安卓。

 title=

那么更重要的是,用户使用 Kubernetes 的本质目的是什么?是交付和管理它的软件。好比说我用 Kubernetes 必定是在上面部署了某一个东西,好比说 AI 的服务或者淘宝,用户的本质目的是使用这套东西来管理软件。而 Kubernetes 自己其实对上暴露的是一系列格式化的抽象,好比说 Deployment、Service、Ingress,让我可以去管理和交付个人应用;而对下它启动了一套标准化的接口,好比说经过 CNI 就能够对接阿里云网络,对接自研网络插件,因此它本质上是一个中间层,即一个控制平面,接入了大量的基础设施,而他们暴露的东西成为了个人应用所须要的一些能力,让我可以去用这些能力去管理应用。

那么这样的一个趋势日后面不断去研究的话,就会发现这个跟安卓特别类似。好比说安卓在手机自己实际上是不付钱,可是应用市场里的应用是要付钱的。安卓的价值在于它把用户的手机抽象、包装、封装成一系列应用可使用的 API,因此说安卓的价值和今天 Kubernetes 是彻底同样的。

将来咱们会看到,Kubernetes 它不只会出如今各类不同的地方,更重要的是它会为应用软件的研发、运维、交付的全生命周期提供一系列完整的能力,让用户可使用它。与此同时,为了可以更好地把软件交付出去,咱们会发现将来还会有不少这样的项目专门帮助你去解决软件在 K8s 上交付的问题。与此同时,咱们之前的传统 PaaS 会不复存在,由于它的能力已经所有被 Kubernetes 接管了,而将来会出现更多的这种开放的可扩展的 PaaS,他们的做用是让你可以去更好地更简单地交付和管理软件,就像安卓上的豌豆荚,能够很容易地去管理软件。对于这样一个趋势,我把它叫作 Kubernetes 的“安卓化”。

二、应用与能力的“Operator化”

而另外一个趋势就是,在今天云原生的生态里面,不管是个人应用仍是个人能力,它都会往一个很是可以自动化的方向去演进,我把它叫作 “Operator 化”。

 title=

Operator 是 Kubernetes 里面的一个核心思想,它表明着个人任何一个应用和它所须要的能力均可以定义成为一个 Kubernetes 的 API 对象,经过一个叫作 Controller 的机制让你去使用云的能力,再让你接入到各类各样的基础设施里面。这个 Operator 化带来的一个直接结果就是,个人应用自己是高度自动化的,包括自愈、健壮性、可靠性、运行的肯定性,这些在今天均可以交给 Kubernetes去解决。个人用户或者说我应用的 owner,不须要再关心这些问题。

那么这也是咱们今天在 K8s 安卓化的背景下看到的另一个趋势,就是个人应用自己和业务所须要的能力会不断地往自动化方向去演进。这也很是符合云原生的理念,由于你的应用自动化和自愈能力越强,你就越可以去跟云去对接,人工须要去记录的成本会更低,时间也会更少,更多的是把个人自动化能力跟云去对接好,让云帮助我去解决全部问题。

三、应用中间件能力进一步“下沉”

还有一个趋势是,咱们应用自己所须要的中间件能力下沉。即之前的中心化的中间件其实在过去几年中,已经演进到了微服务架构。

 title=

微服务架构本质上是把之前的中心化中间件的这一套东西拆开,放在了业务代码里面,而你须要去把它引入进来使用。通常来讲,会提供一个比较重的客户端或者一个库让你去使用,这是咱们的微服务时代典型的中间件的一个使用方式。可是在今天,在咱们云原生的愈来愈普及的这样一个现状下,有没有像 Sidecar 这样一个机制的存在?

今天的中间件其实是大量的经过 Sidecar 方式去被使用到的,因此个人应用自己不须要再去引入一个库,或者引入一个特定的框架来去作不少事情,我甚至都不须要感知。好比说我今天要去作流量的切分,我不须要说在应用里面去引入这么一个库去作,而是彻底交给个人基础设施,交给云去作。

那么应用跟云的交互,就经过一个叫 Sidecar 的一个旁路容器,让这个容器去代理应用自己所须要的进出流量,因此云就能够很是容易地经过这样一个代理,调节流量、作流量切分,这就是很是简单的 Service Mesh 的原理。

今天,中间件能力不断经过这样一个方式在下沉,它会带来一个很是明显的趋势,即中间件再也不与业务相关了,再也不与程序的编写语言相关了,也不须要对框架有什么依赖。它的实现跟 K8s 容器化这套体系会很是的紧密结合。另外,我对 Sidecar 的依赖也会更多,因此说相应的对 Sidecar 的管理能力也在逐步去提升要求。咱们能够把它总结为应用中间件能力的进一步下沉。

层出不穷的云原生服务

除此以外,伴随着云原生整套体系的不断发展,咱们会看到,云服务在大量的、频繁地向云原生生态去靠拢,甚至说带来一些革命性的影响。

 title=

好比说,今天阿里云的云原生数据库,它实际上就是基于云原生提到的核心的思想理念,好比说无限弹性、高度可扩展,提出了一个全新的数据库架构,使得数据库的自己很是容易去扩展,可以去应付极高的、极为苛刻的流量和海量的数据处理需求,知足今天现代互联网应用的数据库使用的诉求。

再好比说阿里云基础设施,它可以给咱们带来极致的资源使用效率,减小了不少层的虚拟化的性能损耗,让容器自己具备弹性,很是容易地去运维部署和管理,而且经过安全容器,经过更强的安全边界,保证容器之间的隔离,使隔离性是足够的。它可以为容器带来极致的物理级别的网络存储和计算性能,这是很是重要的,也是咱们的应用经过云原生的理念去使用云计算服务的一个很是典型的例子。

再好比说像亚马逊云科技,它让咱们的芯片自己可以去更容易或者说更直接的去适配容器化应用的使用方式。由于一个容器可能只有一个很是独立或者说很是模块化的一个进程在跑,那我就能够用芯片的核心去适配这样的一个业务,把个人基础设施的能力发挥得更强,把能力发挥到极致,同时保证像这样的核心之间的干扰是很是少的,更适应容器化微服务的应用的使用方式。

好比亚马逊云科技最近推出一个云原生应用部署引擎,它能够用咱们这种彻底一致的方式去部署任何的这种云服务或者是容器服务,这都是可以去帮助咱们利用云的能力去提高应用管理交付运维效率的一个很是典型的产品。

因此咱们看这些产品也好,去看所谓开源项目也好,当咱们想要去思考这样一个问题,说我这个云产品是否是所谓的云原生,是否是云原生的技术,其实很是简单。只要判断一下它能不能帮助个人应用最大程度地去利用云计算降本提效,能不能经过这样的方式释放最大的业务价值,这个是判断一项技术,或者说一个产品是否是去把它定位为云原生的一个很是核心的一个标准,而不是说去看这个产品是容器与否。

阿里巴巴云原生化

回到咱们阿里巴巴自己的例子来说,咱们能够看到这么一个事实,今天阿里巴巴的基础设施已经基于像 Kubernetes 容器这样整套技术,完成了咱们所谓的云原生化。而真正咱们回过头来看这样一件事情,咱们会发现其实云原生自己给阿里巴巴本身带来了很是重要的一些变革。

第一个咱们对业务研发,经过前面讲到的云原生的思想,很好地作到了关注点分离,研发更专一于业务。经过云原生的这种标准的交付方式,咱们还提出了像云原生标准交付的规范,去标准化地、模块化地进行可持续交付,兼顾用户体验和灵活度,从而大幅提高业务的研发效能,让他们彻底关注于本身的业务,不须要再去接触到复杂的基础设施,这个是云原生给业务研发带来一个最大的价值。

再好比说对大量的业务运维和 SRE 来讲,云原生体系所提供的这种敏捷运维高效运营的这套理念,以及它的技术实现,包括前面讲的轻量级的容器不可变、基础设施、高度自动化的应用自己和运维方式,都可以让咱们今天的软件运维变得极其简单、极其高效,尤为相比于以前的传统方式,基于容器的基于自动化的一个方式,可以极高地提升咱们的运维自动化程度,大量减小人工介入,提高咱们操做的并发度,真正意义上的实现所谓的把复杂留给系统,把简单留给用户,这就是咱们今天云原生的体系。

 title=

那么更不用说今天容器化以后,好比淘宝这类的应用,去作水平扩容和升级都是很是快捷、很是高效的,而不是说升级一下淘宝,你的手机应用就挂了,在云原生时代这事再也不会发生了。

另一个例子是对基础设施来讲,经过阿里今天使用的神龙裸金属的实力,加上咱们的安全容器,可以去帮助咱们极大地提高今天数据中心的使用资源效率,咱们叫提高资源效能。尤为是它可以去支持咱们极高密度地去部署安全容器,利用规模效应,下降资源碎片。能够去根据你的工做负载的不一样形态,去放心地填资源的碎片,由于有神龙金属因此咱们可以确保这样作,依然有极高的业务的运行效率,同时不会互相之间有任何干扰。这些都是在今天云原生的环境下,这项基础设施所可以给咱们带来的一个很是重要的一套变革,甚至说对于阿里巴巴的这样一个组织,随着云原生技术的引入和发展,也带来了一个很是好的变化,让阿里巴巴的技术栈标准化开放,可以跟生态无缝集成,也可以下降研发成本,让整个体系的可靠性和研发效率都有一个很好的提升。

而另外一方面,随着自身基础设施的标准化,阿里巴巴的技术正在飞快地进入到开源社区当中。今天阿里巴巴是 CNCF 里面开源项目最多的一个公司,远远领先于任何一个厂商和其余一些组织。这里一个关键缘由就在于,今天阿里巴巴的技术是跟生态无缝对接的,因此咱们才可以积极去参与这样的一个更普遍的开源生态,把阿里的开源技术输出出去,甚至说这引领和影响了整个业界生态的发展过程,这个都是阿里巴巴的云原生化以后,咱们看到的实实在在的一个变化。

总结

**

 title=

若是咱们回顾一下今天讲的云原生这套理念,能够发现它其实是一套架构到技术到产品的不断演进的过程。从架构上来说,云原生认为软件自然生于云上、长于云上,可以最大化的利用云的能力;另一方面区别于传统的模式,云原生可以让开发者享受到红利,可以去引领它的软件和应用自己去不断的现代化。

而围绕这种架构和理念,咱们有一系列的技术,这里面有开源的,有自研的,可是它背后的逻辑和思想是高度一致的。围绕着基础设施、应用架构、开发运维交付的场景,经过云原生技术让系统更加可靠,具备弹性,有更好的容错性,而且组件之间松耦合易管理,可观测性作得更好,从而充分地去把云的能力透出来。云原生可以释放云的最大潜力,其实它的背后每每离不开云原生本质的这套理念和技术的支持,以这些理念和架构为表明的,像容器、不可变基础设施等等,他们实际上是咱们去落地云原生里面的一个高效的手段。

而围绕这些手段自己,咱们才有了这样各类各样的云原生理念加持下的产品,包括云原生数据库、云原生服务产品、中间件、函数计算、容器等等一系列的开放标准,可以去弹性,可以去利用云的价值的,可以去让用经过云自己更好的服务的应用研发运维和应用交付人员的这样一系列的产品,那么他们都是可以很是明显地区别于传统的云计算服务提供的形态。

因此咱们会看到将来的云会更多地向 Service 化、SaaS 化、服务化的方式去演进,而较少地去专一在基础设施这一层,由于咱们真正的用户关注点,其实在它的应用可否发挥最大的业务价值这个问题上面的。

将来的整个演进趋势,它其实都伴随着一个很是重要的点,就是说云的能力在不断地越变越丰富,这是很是重要的。之因此在过去,咱们的整个软件架构自己它会须要大量的,好比说传统中间件,甚至一些微服务框架或者是 PaaS,去帮助咱们更好地的管理软件,它的背后很是重要的缘由在于云或者说基础设施能力不够强。好比说我今天就想要一个蓝绿发布的能力,而不少云在很长一段时间内是不具有这个能力的,因此必须经过某种中间件或者某种框架来帮你去解决,但今天不是这样。今天咱们的云几乎能作到你想象到的任何一种应用所须要的管理能力,甚至应该说云的能力其实已经几乎要超出了咱们今天软件架构的大部分需求。因此在这种状况下,我必然再也不须要一个额外的层,不管是传统中间件,仍是传统的这种微服务框架或者 PaaS,去帮助弥补软件的诉求跟基础设施之间的鸿沟。

 title=

当这个鸿沟愈来愈窄,各类各样的云原生技术开始出现。因此任何一种云原生技术,它再也不是某种能力的弥补,而是更多地将云的能力以某种方式更简单、更高效地透出给个人应用去使用。不管是容器、K8s 仍是 Service Mesh,他们都是在不一样的环节帮助应用自己可以更好地去使用云服务。或者说使用到云背后的基础设施能力,好比说 K8s 它可让应用很是无感地极简地进入到个人云的存储和网络当中,使用云计算能力;Service Mesh 经过 Sidecar 这样彻底无侵入的方式,让你可以使用云的流量控制的能力来去做为微服务治理。

将来咱们的整个云计算发展,包括云原生背后的关注点必定也是这样,不断地、持续地、充分地去释放云计算的基础设施能力,到软件的研发交付乃至整个生命周期当中,这是很是重要的一点。由于将来云的能力必定是愈来愈强,伴随这样一个趋势咱们才会看到,云原生必定是在逐步引领整个云计算生态。

本文内容由阿里云实名注册用户自发贡献,版权归原做者全部,阿里云开发者社区不拥有其著做权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。若是您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将马上删除涉嫌侵权内容。
相关文章
相关标签/搜索