当我说云原生的时候我在说什么?

wiltech
发布于 2022-8-16 11:36
浏览
0收藏

关于作者 当我说云原生的时候我在说什么?-鸿蒙开发者社区
蔡灏旻:
openEuler 社区 Cloud Native SIG  初创发起成员,任 Cloud Native SIG Maintainer。 2017年加入华为,多年容器、操作系统研发经验,对容器、Kubernetes、云原生等领域有深入的研究。现任 iSula 容器团队架构师,带领团队研发 iSula 容器解决方案,其中轻量级容器引擎 iSulad,镜像构建方案 isula-build 等已经在 openEuler 开源。

 

 写在前面 

以下观点是我自己一点点粗浅的理解,如有赞同,那太棒了,我们想一块儿去了。
如有不同,那真是太棒了,欢迎讨论。


什么是定义?


在现代汉语词典里,“定义” 是指 “对于一种事物的本质特征或一个概念的内涵和外延的确切而简要的说明”。
这里不得不提到经典系统艺术里《一把和三把椅子》中诠释了定义的概念:一把实物椅子,一把椅子照片,一篇关于椅子的字典定义。象征着实物、理念、语言定义三种观念,有那个味儿了是不?
这也引申出了,定义本身是有外延、内涵和拓展的,以及含糊的。
 当我说云原生的时候我在说什么?-鸿蒙开发者社区

藏书卷四 《一把和三把椅子》——对寻常之物的质疑

这里提一个有意思的事儿,刚刚对于"定义"的定义,本身是一种什么样的定义呢?
定义作为一种说明,必然有方法论支持,定义应该包括三个部分:被定义项,定义项与定义关联,大概的类型应该描述为:被定义项就是定义项。
比如樱木花道是天才,樱木花道就是被定义项,就是属于定义关联,天才是定义项。
但真实的定义方法论有很多,这里列举一些:

  • 词法定义:描述一个词或者一个表达的意义,一般一个词法定义提供一个与原词相当的表达。比如“摸鱼“定义为”开心地消耗时间“。
  • 实物定义:这是一个大家最熟悉的定义方法,比如看着一只小狗定义为“狗”,看到兵长定义为“一米六”。
  • 内涵定义:将一个物件与其它物件之间不同的所有特征列举出来,比如 ”CSGO 中所有自动步枪的集合“。这里延伸一个附属种差定义,先找出被定义的概念的属概念,再找出种差,这是我们最常见的定义方法,比如:哺乳类动物就是以分泌乳汁喂养出生后代的脊椎动物。
  • 外延定义:是描述一个概念或者词的外延,即所有这个概念或者词所包含的事物。这里延伸一个列举定义,即列举一个概念或者词所描写的所有物件,这是一个特殊的外延定义,只适用于有限集合。
  • 混合定义:先给出某个概念的一些或全部内涵,再列举概念的一些或全部外延。这个定义方法就完全是在耍流氓了。我先说一些,可能也不完备,引申内涵和外延的时候也可能不完备,比如书上写的:基本粒子是迄今所知的、能够以自由状态存在的所有最小物质粒子的统称,包括电子、中子、光子等。
    实在太多了,我就先列这么多,感兴趣的小伙伴们可以去研究一下。
    好了,形而上的东西我们扯了很多,让我们回到梦开始的地方,来聊聊云原生这个话题吧~~
    这章我们带着方法论,就从 Cloud Native 本身的定义历史来看看整个定义的变化。

 

 Pivotal 的定义 

当我说云原生的时候我在说什么?-鸿蒙开发者社区

这里不得不提 First Man -- Matt Stine,这位老大哥有 20 年 IT 从业经验,在 2013 年任职于 Pivotal 的时候首次提出了 Cloud Native 的概念,并且也是著名的《Migrating to Cloud-Native Application Architectures》的作者。

当我说云原生的时候我在说什么?-鸿蒙开发者社区

2019 年这位老哥从 Pivotal 离职,现在任职于摩根大通。Pivotal 也被 vmware 收购,这里就牵扯出云原生定义的一条线,也是很多人都在提及的概念,我解释为 Pivotal(vmware)对云原生的定义:
实际上来说,Pivotal 对云原生的定义也是在不断变化的,总体来说为三个阶段:
2015:

  1. 符合 12 因素应用(Twelve-Factor Applications)
  2. 面向微服务架构(Microservices)
  3. 自服务敏捷架构(Self-Service Agile Infrastructure)
  4. 基于 API 的协作(API-Based Collaboration)
  5. 抗脆弱性(Antifragility)


2017:

  1. 模块化(Modularity)(通过微服务)
  2. 可观测性(Observability)
  3. 可部署性(Deployability)
  4. 可测试性(Testability)
  5. 可处理性(Disposability)
  6. 可替换性(Replaceability)

 

2018:

  1. Devops
  2. CI/CD
  3. 微服务
  4. 容器
    这也是大家最熟悉的版本。

当我说云原生的时候我在说什么?-鸿蒙开发者社区
 这里我们可以看出两点,一是云原生的定义在 Pivotal 内部也是不断更迭的,很多概念被放弃或者抽象,并且有新的东西加入。
2017 年的定义是 Pivotal 一直尝试于用内涵定义与外延定义来导出定义。
看,刚刚的方法论用上了吧。
因为这种方法对大家来说是比较好接受的,也就是说满足了这些种属特征的就是云原生,所以大家看到这个定义的时候,都有一种微微点头,然后"哦~~~"的感觉。
谈到这里,我们就得看看“官方”声音,CNCF 基金会是怎么定义云原生的。

 

 CNCF 的定义 

当我说云原生的时候我在说什么?-鸿蒙开发者社区

CNCF 成立于 2015 年,在成立之初,CNCF 就发布了关于 Cloud Native 的一个定义,在 2018 年正式发布了关于 Cloud Native 定义的 1.0 release 版本,这里与 Pivotal 一致,实际上也是不断演进和变化的:
2015:

  1. 应用容器化(software stack to be Containerized)
  2. 面向微服务架构(Microservices oriented)
  3. 应用支持容器的编排调度(Dynamically Orchestrated)
    2018:
    目前为止官方的正式定义,这也是大家最为困惑的部分
    云原生技术有利于各组织在公有云、私有云和混合云等新型动态环境中,构建和运行可弹性扩展的应用。云原生的代表技术包括容器、服务网格、微服务、不可变基础设施和声明式 API。
    这些技术能够构建容错性好、易于管理和便于观察的松耦合系统。结合可靠的自动化手段,云原生技术使工程师能够轻松地对系统作出频繁和可预测的重大变更。
    为了让大家更困惑我这里贴上德文和法文版:
    德文版:
    Cloud native Technologien ermöglichen es Unternehmen, skalierbare Anwendungen in modernen, dynamischen Umgebungen zu implementieren und zu betreiben. Dies können öffentliche, private und Hybrid-Clouds sein. Best Practices, wie Container, Service-Meshs, Microservices, immutable Infrastruktur und deklarative APIs, unterstützen diesen Ansatz.
    Die zugrundeliegenden Techniken ermöglichen die Umsetzung von entkoppelten Systemen, die belastbar, handhabbar und beobachtbar sind. Kombiniert mit einer robusten Automatisierung können Softwareentwickler mit geringem Aufwand flexibel und schnell auf Änderungen reagieren.
    法文版:
    Les technologies nativement cloud permettent aux entreprises de construire et d'exploiter des applications élastiques dans des environnements modernes et dynamiques comme des clouds publics, privés ou bien hybrides. Les conteneurs, les services maillés, les micro services, les infrastructures immuables et les API déclaratives illustrent cette approche.
    Ces techniques permettent la mise en œuvre de systèmes faiblement couplés, à la fois résistants, pilotables et observables. Combinés à un robuste système d'automatisation, ils permettent aux ingénieurs de procéder à des modifications impactantes, fréquemment et de façon prévisible avec un minimum de travail..
    当然我们分析还是按照中文版翻译来。
    翻到上面我们看看我们掌握的方法论,发现 CNCF 使用的混合定义这种最最最省事儿的定义方法,也是最容易产生疑问的定义方法来定义云原生。
    即并没有给出我们直观解释“被定义项就是定义项”的模式,而是选择了给出概念,然后衍生解释概念的思路,并且二者都是不完备且含糊的,这对于我们这些理性思维动物来说,难免会问一句:这是啥?是不是满足了后面这几个容器、服务网格、不可变基础设施、微服务就是云原生了?
    从定义的方法角度来看,我们这些发问不就是人之常情了嘛~

 

 总结 

到这里,我们基本理清楚了业界关于云原生定义的两条线:
Pivotal 使用内涵定义与外延定义来定义云原生,试图将云原生的内涵范畴和有限集合归纳,这让人感到清晰,但是实质上可能是不完备的。
CNCF 利用混合定义,概念+衍生的方式定义云原生,这样做保留了扩展空间,但是会让人感到困惑。
简单追究一下本质原因,我认为可能是 CNCF 作为一个中立的第三方组织,必然预料到云原生技术是不断发展的,同时也是各种商业组织博弈的场所,点到为止,暂时按下不表。
以后可能会有更多的新鲜技术架构加入进来,保留一个可扩展、松耦合的架构本质上也是云原生的一个特征,所以他们连定义都搞成这种架构了!
而 Pivotal(Vmware)作为一个商业公司,定义最终为其商业目的服务,必然最重要和自己盈利产品对上,这样清晰的定义也是合乎其逻辑的。
篇幅过长,反正先开个坑,忙完这阵儿再开始写下一篇,看看我们能不能说清楚"当我在说云原生的时候我在说什么",还是“当我在说云原生的时候我也不知道我在说啥”?
下篇文章我们来聊一聊 openEuler 的 Cloud Native SIG 是怎么来定义云原生的。

 

文章转载自:openEuler

分类
已于2022-8-16 11:36:22修改
收藏
回复
举报
回复
    相关推荐