最近一段时间经常接触“云原生(Cloud Native)”,到底什么是云原生,这是个什么技术,都是一头雾水,就花点时间调研了一番。
技术的变革,一定是思想先行,云原生是一种构建和运行应用程序的方法,是一套技术体系和方法论。云原生(CloudNative)是一个组合词,Cloud+Native。Cloud表示应用程序位于云中,而不是传统的数据中心;Native表示应用程序从设计之初即考虑到云的环境,原生为云而设计,在云上以最佳姿势运行,充分利用和发挥云平台的弹性+分布式优势。

1.云原生的诞生

提到云原生,不能不提“Pivotal”和“Matt Stine”,都与云原生的起源有关。

Pivotal公司的Matt Stine于2013年首次提出云原生(CloudNative)的概念;

2015年,云原生刚推广时,Matt Stine在《迁移到云原生架构》一书中定义了符合云原生架构的几个特征:12因素、微服务、自敏捷架构、基于API协作、扛脆弱性;

2017年,Matt Stine在接受InfoQ采访时又改了口风,将云原生架构归纳为模块化、可观察、可部署、可测试、可替换、可处理6特质;

Pivotal最新官网对云原生概括为4个要点:DevOps+持续交付+微服务+容器。

微服务

微服务解决的是我们软件开发中一直追求的低耦合+高内聚,记得有一次我们系统的接口出了问题,结果影响了用户的前台操作,于是黎叔拍案而起,灵魂发问:“为啥这两个会互相影响?!”

微服务可以解决这个问题,微服务的本质是把一块大饼分成若干块低耦合的小饼,比如一块小饼专门负责接收外部的数据,一块小饼专门负责响应前台的操作,小饼可以进一步拆分,比如负责接收外部数据的小饼可以继续分成多块负责接收不同类型数据的小饼,这样每个小饼出问题了,其它小饼还能正常对外提供服务。

DevOps

DevOps的意思就是开发和运维不再是分开的两个团队,而是你中有我,我中有你的一个团队。我们现在开发和运维已经是一个团队了,但是运维方面的知识和经验还需要持续提高。

持续交付

持续交付的意思就是在不影响用户使用服务的前提下频繁把新功能发布给用户使用,要做到这点非常非常难。我们现在两周一个版本,每次上线之后都会给不同的用户造成不同程度的影响。

容器化

容器化的好处在于运维的时候不需要再关心每个服务所使用的技术栈了,每个服务都被无差别地封装在容器里,可以被无差别地管理和维护,现在比较流行的工具是docker和k8s。

2. 云原生基金会

云原生计算基金会(Cloud Native ComputingFoundation, CNCF)成立与2015年12月11日,由谷歌与Linux基金会联合创办,成立这个非盈利组织的初衷为推广孵化和标准化云原生相关的技术:

  1. 推动云原生计算可持续发展;
  2. 帮助云原生技术开发人员快速地构建出色的产品。

CNCF成立最初只有十多家创始成员,包含谷歌、IBM、Red Hat、VMware……经过几年的发展,目前CNCF已经有超过300个会员,涵盖国内外的知名IT厂商,包括微软、亚马逊、苹果、阿里巴巴、华为等,发展地十分迅速。

起初 CNCF 对云原生(Cloud Native)的定义包含以下三个方面:

  1. 应用容器化
  2. 面向微服务架构
  3. 应用支持容器的编排调度

到了 2018 年,随着近几年来云原生生态的不断壮大,所有主流云计算供应商都加入了该基金会,且从 Cloud Native Landscape 中可以看出云原生有意蚕食原先非云原生应用的部分。CNCF 基金会中的会员以及容纳的项目越来越多,该定义已经限制了云原生生态的发展,CNCF 为云原生进行了重新定位。

云原生技术有利于各组织在公有云、私有云和混合云等新型动态环境中,构建和运行可弹性扩展的应用。云原生的代表技术包括容器、服务网格、微服务、不可变基础设施和声明式 API。

这些技术能够构建容错性好、易于管理和便于观察的松耦合系统。结合可靠的自动化手段,云原生技术使工程师能够轻松地对系统作出频繁和可预测的重大变更。

3. 主要区别:云原生与传统企业应用

5.参考文献

https://blog.csdn.net/younger_china/article/details/125733645