简介:任何一种云原生技术,它不再是某种能力的补救,而是更多地将云的能力以某种形式更简略、更高效地透出给我的利用去应用。无论是容器、K8s 还是 Service Mesh,他们都是在不同的环节帮忙利用自身可能更好地去应用云服务。
作者|张磊
云原生是什么?
即便“云原生”的提出曾经有一段时间,但不少人还是会有这样一个问题:到底什么是云原生?或者说云原生的确切定义是什么?
实际上,当咱们接触到很多云原生的开源技术和产品之后,会逐步发现一个景象——云原生实质上其实并不是一个十分确切的物体。也就是说,云原生其实不存在什么具体定义,它指的是一个一直演进的过程。与其谈云原生的实质,不如咱们将它了解为一套愿景。
那么这套愿景的内容又是什么呢?
在将来云的时代,咱们的软件或者利用是人造的生于云上,长于云上。之所以会呈现这样一种景象或这样一个事实,正是因为云计算可能最大水平地去帮忙这些软件降本提效,开释软件自身最大的业务价值。这才是云原生真正想要去做的一件事件,所以它并不是某一项具体的技术,也不是某一个办法,更不是某一个具体的科研项目。
一直演进的云原生
下图可能直观地说明云原生整体的状态到底是怎么去演进和倒退的。
云原生十分强调利用云的个性,所以它的外围方法论和外围概念都是围绕如何让咱们的软件和利用去利用云的个性。那么云的个性是什么呢?比如说云是可能有限弹性的、云的资源是能够疾速交付的、云的应用办法是能够按量付费的,这些都是云十分实质的个性。
围绕这些云的个性,云原生才有了一套最根底的方法论和概念。比方大家可能据说过不可变基础设施,当我的利用部署在云上,假如这个利用载体是不可变的,我就能够随时把它删掉或替换掉,那么要更新我的利用会非常容易。如果要降级利用,能够间接采纳删掉旧的、上线新的形式去做,而不是说须要去动静变更利用外面的某项配置,甚至动静更改代码去实现。所以,不可变基础设施就是一套十分典型的、基于利用云的疾速资源交付能力而造成的方法论。
再比如说,云原生强调要高度的自动化,实现自运维甚至自愈,其实也是心愿软件自身可能去更好地利用云的个性。因为云的能力是十分弱小的,云可能提供各种各样的运维能力,所以利用或者软件可能从开发的时候,就要思考到云其实可能提供很多能力到应用层,而不是说先开发完利用,再去思考怎么借助云的能力去运维,这样是构建不进去云原生利用的。
再比如说,云原生利用无所谓用什么语言写,用什么框架写,这也是很显著的一个特点。因为云自身是一个基础设施能力,那么就不应该也不会去用某种语言或者框架去锁定。同样也是心愿这个世界上所有的软件都可能去利用云的能力,而不是说云只能服务于某种语言。
以上这些都是在云的背景下,云原生提出的一些十分重要的概念。而这些概念自身在咱们的技术钻研当中就会被映射成为一系列的零碎,或者说架构思维。比如说后面提到不可变基础设施,能够把一个利用旧的实例删掉换成新的实例,像这样的一套办法怎么去实现?就要靠容器技术。容器技术实质上提供容器镜像,一个容器镜像是自蕴含一个利用的运行环境,包含利用自身,能够随时把这个镜像版本替掉,上线一个新的版本就能够了。这其实代表着容器是不可变基础设施的一个十分良好的实现。
那么这是不是意味着将来会有某一种技术,可能更好地去实现不可变基础设施呢?这是很有可能的,并且这项技术当然也是云原生的。当将来可能有一个新的技术去实现不可变基础设施,或者更好地实现不可变基础设施,那么这样一个技术也肯定是属于云原生的外围领域。与之类似的,像咱们云原生明天强调的 Sidecar 架构,就是把中间件能力通过一个叫 Sidecar 容器的形式去对接到业务容器里去,而不是说在业务自身下来做定制,集成中间件去解决问题。这其实是心愿可能去实际咱们强调的与语言无关、与框架无关的这样一套方法论所提出的一个架构。而这个架构的特点就是,中间件能力不再须要以语言或者框架的形式嵌到业务代码自身里去,所以说 Sidecar 加上容器都可能去实现这样的一套办法。
这就是云原生方法论背地一直推演出来的一系列技术和架构,而这些技术架构最终在云原生生态外面,往往是以开源的技术我的项目来给大家去应用的。比如说后面提到的容器就会有 Docker 上的我的项目,咱们提到的 Sidecar 和自运维的这套思维,最终会通过 Kubernetes 去帮你去实现。
再比如说最近比拟炽热的 Service Mesh,它实质上在帮你去做中间件的能力,只不过是通过 Sidecar 这种与语言无关的形式去做;再比如说咱们将来或者说当初就曾经比拟火的 eBPF、WASM,他们其实都是在实际云原生这套体系背地的某项思维和某种架构,以开源的形式去满足让用户应用的场景。而正是因为有了这一系列的开源我的项目,咱们能力做到说当我的用户拿到这样的开源我的项目,拿到这样的技术,他可能去真正实际云原生理念,从而达到咱们后面讲到的这两种云带来的实质成果:
第一个是晋升效率,比如说研发效率、交付效率、经营效率。例如我的利用自身通过容器实现了不可变基础设施的这样一套理念,那么它的交付就能够非常简单,我只须要做镜像,交付镜像后它就能够运行在每一个中央;再比如说咱们的运维,当你的软件自身曾经实现了自运维,那么它的运维的难度和老本肯定是升高的,所以咱们肯定可能借助云的能力去提效。
第二个是降低成本,这里包含了资源老本,也包含了人力老本。比如说通过 Kubernetes 或者说通过容器这样的我的项目,我的利用能够更好地、更多地去集成云服务,通过云服务来缩小运维老本和人力投入,这些都是很显著的老本升高。再比如说我的利用通过云原生实现了上云,又通过云原生架构,能够很疾速地进行资源交付和更新的模式,让整个利用的资源老本也变得很低,这同样也是通过云原生技术,让利用可能更好地应用到云的实质能力的一种十分好的体现和实际。
总体而言,你会发现这一套云原生的办法其实是一个很欠缺的闭环,先一直去地看、一直地去摸索如何利用云的个性帮忙用户去提效降本,而后把这一系列的办法或者这一系列的思维,总结积淀成为云原生的概念和方法论,再通过一系列相应的架构和对应的开源我的项目将其实现,最初再让用户可能去应用这些技术,从而达到开释云计算红利的实质目标。
所以说云原生它没有一个具体的定义,它实际上是一套一直自我演进的理论体系加上最佳实际的组合。
明天的云原生
明天的云原生可能是围绕着容器和 Kubernetes 来构建的,而这样的我的项目实际上在帮忙咱们去实际很多云原生背地的实质思维,包含不可变基础设施、自动化等。明天 Kubernetes 被认为是一个云时代的通用管制立体,也有人把它叫做操作系统,就是说你的所有操作都能够借助 Kubernetes 在云上对立去实现。
1、Kubernetes 我的项目的“安卓化”
Kubernetes 我的项目的角色可能会越来越像一个安卓。举一个例子,比如说明天的 Kubernetes 其实正在做到无处不在,每个中央每个云层都有 Kubernetes,甚至部署在端的用户、或者部署在边缘的环境下都是十分失常的,就跟安卓一样,车上也有,咱们电视里也有,甚至空调也会有可能有一个安卓。
那么更重要的是,用户应用 Kubernetes 的实质目标是什么?是交付和治理它的软件。比如说我用 Kubernetes 肯定是在下面部署了某一个货色,比如说 AI 的服务或者淘宝,用户的实质目标是应用这套货色来管理软件。而 Kubernetes 自身其实对上裸露的是一系列格式化的形象,比如说 Deployment、Service、Ingress,让我可能去治理和交付我的利用;而对下它启动了一套标准化的接口,比如说通过 CNI 就能够对接阿里云网络,对接自研网络插件,所以它实质上是一个中间层,即一个管制立体,接入了大量的基础设施,而他们裸露的货色成为了我的利用所须要的一些能力,让我可能去用这些能力去治理利用。
那么这样的一个趋势往后面一直去钻研的话,就会发现这个跟安卓特地类似。比如说安卓在手机自身其实是不付钱,然而利用市场里的利用是要付钱的。安卓的价值在于它把用户的手机形象、包装、封装成一系列利用能够应用的 API,所以说安卓的价值和明天 Kubernetes 是齐全一样的。
将来咱们会看到,Kubernetes 它不仅会呈现在各种不一样的中央,更重要的是它会为应用软件的研发、运维、交付的全生命周期提供一系列残缺的能力,让用户能够应用它。与此同时,为了可能更好地把软件交付进来,咱们会发现将来还会有很多这样的我的项目专门帮忙你去解决软件在 K8s 上交付的问题。与此同时,咱们以前的传统 PaaS 会不复存在,因为它的能力曾经全副被 Kubernetes 接管了,而将来会呈现更多的这种凋谢的可扩大的 PaaS,他们的作用是让你可能去更好地更简略地交付和管理软件,就像安卓上的豌豆荚,能够很容易地去管理软件。对于这样一个趋势,我把它叫做 Kubernetes 的“安卓化”。
2、利用与能力的“Operator 化”
而另一个趋势就是,在明天云原生的生态外面,不论是我的利用还是我的能力,它都会往一个十分可能自动化的方向去演进,我把它叫做“Operator 化”。
Operator 是 Kubernetes 外面的一个核心思想,它代表着我的任何一个利用和它所须要的能力都能够定义成为一个 Kubernetes 的 API 对象,通过一个叫做 Controller 的机制让你去应用云的能力,再让你接入到各种各样的基础设施外面。这个 Operator 化带来的一个间接后果就是,我的利用自身是高度自动化的,包含自愈、健壮性、可靠性、运行的确定性,这些在明天都能够交给 Kubernetes 去解决。我的用户或者说我利用的 owner,不须要再关怀这些问题。
那么这也是咱们明天在 K8s 安卓化的背景下看到的另外一个趋势,就是我的利用自身和业务所须要的能力会一直地往自动化方向去演进。这也十分合乎云原生的理念,因为你的利用自动化和自愈能力越强,你就越可能去跟云去对接,人工须要去记录的老本会更低,工夫也会更少,更多的是把我的自动化能力跟云去对接好,让云帮忙我去解决所有问题。
3、利用中间件能力进一步“下沉”
还有一个趋势是,咱们利用自身所须要的中间件能力下沉。即以前的中心化的中间件其实在过来几年中,曾经演进到了微服务架构。
微服务架构实质上是把以前的中心化中间件的这一套货色拆开,放在了业务代码外面,而你须要去把它引入进来应用。一般来说,会提供一个比拟重的客户端或者一个库让你去应用,这是咱们的微服务时代典型的中间件的一个应用形式。然而在明天,在咱们云原生的越来越遍及的这样一个现状下,有没有像 Sidecar 这样一个机制的存在?
明天的中间件实际上是大量的通过 Sidecar 形式去被应用到的,所以我的利用自身不须要再去引入一个库,或者引入一个特定的框架来去做很多事件,我甚至都不须要感知。比如说我明天要去做流量的切分,我不须要说在利用外面去引入这么一个库去做,而是齐全交给我的基础设施,交给云去做。
那么利用跟云的交互,就通过一个叫 Sidecar 的一个旁路容器,让这个容器去代理利用自身所须要的进出流量,所以云就能够非常容易地通过这样一个代理,调节流量、做流量切分,这就是非常简单的 Service Mesh 的原理。
明天,中间件能力一直通过这样一个形式在下沉,它会带来一个非常明显的趋势,即中间件不再与业务相干了,不再与程序的编写语言相干了,也不须要对框架有什么依赖。它的实现跟 K8s 容器化这套体系会十分的紧密结合。另外,我对 Sidecar 的依赖也会更多,所以说相应的对 Sidecar 的治理能力也在逐渐去进步要求。咱们能够把它总结为 利用中间件能力的进一步下沉。
层出不穷的云原生服务
除此之外,随同着云原生整套体系的一直倒退,咱们会看到,云服务在大量的、频繁地向云原生生态去聚拢,甚至说带来一些革命性的影响。
比如说,明天阿里云的云原生数据库,它实际上就是基于云原生提到的外围的思维理念,比如说有限弹性、高度可扩大,提出了一个全新的数据库架构,使得数据库的自身非常容易去扩大,可能去应酬极高的、极为刻薄的流量和海量的数据处理需要,满足明天古代互联网利用的数据库应用的诉求。
再比如说阿里云基础设施,它可能给咱们带来极致的资源应用效率,缩小了很多层的虚拟化的性能损耗,让容器自身具备弹性,非常容易地去运维部署和治理,并且通过平安容器,通过更强的平安边界,保障容器之间的隔离,使隔离性是足够的。它可能为容器带来极致的物理级别的网络存储和计算性能,这是十分重要的,也是咱们的利用通过云原生的理念去应用云计算服务的一个十分典型的例子。
再比如说像亚马逊云科技,它让咱们的芯片自身可能去更容易或者说更间接的去适配容器化利用的应用形式。因为一个容器可能只有一个十分独立或者说十分模块化的一个过程在跑,那我就能够用芯片的外围去适配这样的一个业务,把我的基础设施的能力施展得更强,把能力施展到极致,同时保障像这样的外围之间的烦扰是非常少的,更适应容器化微服务的利用的应用形式。
比方亚马逊云科技最近推出一个云原生利用部署引擎,它能够用咱们这种完全一致的形式去部署任何的这种云服务或者是容器服务,这都是可能去帮忙咱们利用云的能力去晋升利用治理交付运维效率的一个十分典型的产品。
所以咱们看这些产品也好,去看所谓开源我的项目也好,当咱们想要去思考这样一个问题,说我这个云产品是不是所谓的云原生,是不是云原生的技术,其实非常简单。只有判断一下它能不能帮忙我的利用最大水平地去利用云计算降本提效,能不能通过这样的形式开释最大的业务价值,这个是判断一项技术,或者说一个产品是不是去把它定位为云原生的一个十分外围的一个规范,而不是说去看这个产品是容器与否。
阿里巴巴云原生化
回到咱们阿里巴巴自身的例子来讲,咱们能够看到这么一个事实,明天阿里巴巴的基础设施曾经基于像 Kubernetes 容器这样整套技术,实现了咱们所谓的云原生化。而真正咱们回过头来看这样一件事件,咱们会发现其实云原生自身给阿里巴巴本人带来了十分重要的一些改革。
第一个咱们对业务研发,通过后面讲到的云原生的思维,很好地做到了关注点拆散,研发更专一于业务。通过云原生的这种规范的交付形式,咱们还提出了像云原生规范交付的标准,去标准化地、模块化地进行可继续交付,兼顾用户体验和灵便度,从而大幅晋升业务的研发效力,让他们齐全关注于本人的业务,不须要再去接触到简单的基础设施,这个是云原生给业务研发带来一个最大的价值。
再比如说对大量的业务运维和 SRE 来说,云原生体系所提供的这种麻利运维高效经营的这套理念,以及它的技术实现,包含后面讲的轻量级的容器不可变、基础设施、高度自动化的利用自身和运维形式,都可能让咱们明天的软件运维变得极其简略、极其高效,尤其相比于之前的传统形式,基于容器的基于自动化的一个形式,可能极洼地进步咱们的运维自动化水平,大量缩小人工染指,晋升咱们操作的并发度,真正意义上的实现所谓的把简单留给零碎,把简略留给用户,这就是咱们明天云原生的体系。
那么更不用说明天容器化之后,比方淘宝这类的利用,去做程度扩容和降级都是十分快捷、十分高效的,而不是说降级一下淘宝,你的手机利用就挂了,在云原生时代这事不再会产生了。
另外一个例子是对基础设施来说,通过阿里明天应用的神龙裸金属的实力,加上咱们的平安容器,可能去帮忙咱们极大地晋升明天数据中心的应用资源效率,咱们叫晋升资源效力。尤其是它可能去反对咱们极高密度地去部署平安容器,利用规模效应,升高资源碎片。能够去依据你的工作负载的不同状态,去释怀地填资源的碎片,因为有神龙金属所以咱们可能确保这样做,仍然有极高的业务的运行效率,同时不会相互之间有任何烦扰。这些都是在明天云原生的环境下,这项基础设施所可能给咱们带来的一个十分重要的一套改革,甚至说对于阿里巴巴的这样一个组织,随着云原生技术的引入和倒退,也带来了一个十分好的变动,让阿里巴巴的技术栈标准化凋谢,可能跟生态无缝集成,也可能升高研发老本,让整个体系的可靠性和研发效率都有一个很好的进步。
而另一方面,随着本身基础设施的标准化,阿里巴巴的技术正在飞快地进入到开源社区当中。明天阿里巴巴是 CNCF 外面开源我的项目最多的一个公司,远远当先于任何一个厂商和其余一些组织。这里一个要害起因就在于,明天阿里巴巴的技术是跟生态无缝对接的,所以咱们才可能踊跃去参加这样的一个更宽泛的开源生态,把阿里的开源技术输入进来,甚至说这引领和影响了整个业界生态的倒退过程,这个都是阿里巴巴的云原生化之后,咱们看到的实实在在的一个变动。
总结
**
如果咱们回顾一下明天讲的云原生这套理念,能够发现它实际上是一套架构到技术到产品的一直演进的过程。从架构上来讲,云原生认为软件人造生于云上、长于云上,可能最大化的利用云的能力;另外一方面区别于传统的模式,云原生可能让开发者享受到红利,可能去引领它的软件和利用自身去一直的现代化。
而围绕这种架构和理念,咱们有一系列的技术,这外面有开源的,有自研的,然而它背地的逻辑和思维是高度一致的。围绕着基础设施、利用架构、开发运维交付的场景,通过云原生技术让零碎更加牢靠,具备弹性,有更好的容错性,并且组件之间松耦合易治理,可观测性做得更好,从而充沛地去把云的能力透出来。云原生可能开释云的最大后劲,其实它的背地往往离不开云原生实质的这套理念和技术的反对,以这些理念和架构为代表的,像容器、不可变基础设施等等,他们其实是咱们去落地云原生外面的一个高效的伎俩。
而围绕这些伎俩自身,咱们才有了这样各种各样的云原生理念加持下的产品,包含云原生数据库、云原生服务产品、中间件、函数计算、容器等等一系列的凋谢规范,可能去弹性,可能去利用云的价值的,可能去让用通过云自身更好的服务的利用研发运维和利用交付人员的这样一系列的产品,那么他们都是可能非常明显地区别于传统的云计算服务提供的状态。
所以咱们会看到将来的云会更多地向 Service 化、SaaS 化、服务化的形式去演进,而较少地去专一在基础设施这一层,因为咱们真正的用户关注点,其实在它的利用是否施展最大的业务价值这个问题下面的。
将来的整个演进趋势,它其实都随同着一个十分重要的点,就是说云的能力在一直地越变越丰盛,这是十分重要的。之所以在过来,咱们的整个软件架构自身它会须要大量的,比如说传统中间件,甚至一些微服务框架或者是 PaaS,去帮忙咱们更好地的管理软件,它的背地十分重要的起因在于云或者说基础设施能力不够强。比如说我明天就想要一个蓝绿公布的能力,而很多云在很长一段时间内是不具备这个能力的,所以必须通过某种中间件或者某种框架来帮你去解决,但明天不是这样。明天咱们的云简直能做到你设想到的任何一种利用所须要的治理能力,甚至应该说云的能力其实曾经简直要超出了咱们明天软件架构的大部分需要。所以在这种状况下,我必然不再须要一个额定的层,无论是传统中间件,还是传统的这种微服务框架或者 PaaS,去帮忙补救软件的诉求跟基础设施之间的鸿沟。
当这个鸿沟越来越窄,各种各样的云原生技术开始呈现。所以任何一种云原生技术,它不再是某种能力的补救,而是更多地将云的能力以某种形式更简略、更高效地透出给我的利用去应用。无论是容器、K8s 还是 Service Mesh,他们都是在不同的环节帮忙利用自身可能更好地去应用云服务。或者说应用到云背地的基础设施能力,比如说 K8s 它能够让利用十分无感地极简地进入到我的云的存储和网络当中,应用云计算能力;Service Mesh 通过 Sidecar 这样齐全无侵入的形式,让你可能应用云的流量管制的能力来去作为微服务治理。
将来咱们的整个云计算倒退,包含云原生背地的关注点肯定也是这样,一直地、继续地、充沛地去开释云计算的基础设施能力,到软件的研发交付乃至整个生命周期当中,这是十分重要的一点。因为将来云的能力肯定是越来越强,随同这样一个趋势咱们才会看到,云原生肯定是在逐渐引领整个云计算生态。
版权申明:本文内容由阿里云实名注册用户自发奉献,版权归原作者所有,阿里云开发者社区不领有其著作权,亦不承当相应法律责任。具体规定请查看《阿里云开发者社区用户服务协定》和《阿里云开发者社区知识产权爱护指引》。如果您发现本社区中有涉嫌剽窃的内容,填写侵权投诉表单进行举报,一经查实,本社区将立即删除涉嫌侵权内容。