云原生的前世今生(一)

读完本文需要 5 分钟。
前言
博主20年4月转岗到阿里云,从事工业智能制造方向的后端研发,由于工作中需要解决不同客户现场的异构环境和多云环境(公有云、私有云、混合云)下的部署问题,所以一直在探索和实践云原生相关技术。
云原生一词近几年热度非常高,经常会有读者问我:云原生到底是什么?它跟传统的架构有什么区别?它能在哪些场景应用?它能带来什么价值?我该不该投入精力去学习它?等等...
趁着国庆假期跟大家好好聊聊这个话题,首先分享一篇科普文《云原生的前世今生(一)》,后续还会继续分享自己对云原生的理解,以及在日常工作中关于云原生的实践经验,希望能给大家带来启发~
云原生的起源 Pivotal
Pivotal 公司是敏捷开发领域的领导者(曾经 Google 也是其客户),出生名门(EMC、VMware等投资)。它推出了 Pivotal Cloud Foundry(2011 ~ 2013 PAAS 界网红)和 Spring 生态系列框架,是云原生的先驱者和探路者。
2013年,Pivotal 公司的技术经理 Matt Stine 首次提出云原生(Cloud Native)的概念。
2015年,Matt Stine 在《Migrating to Cloud Native Application Architectures - 迁移到云原生应用架构》小册子中定义了符合云原生架构的几个特征:

  • 符合12模式(Twelve-Factor App):云原生应用架构的模式集合
  • 微服务架构(Microservices):独立部署的服务,一次只做一件事
  • 自助服务敏捷基础设施(Self-Service Agile Infrastructure):用于快速、可重复和一致地提供应用环境和服务的平台
  • 面向API接口的通信(API-based Collaboration):服务之间的交互基于接口,而不是本地方法调用
  • 抗脆弱性(Anti-Fragility):系统能抵御高负载
原文出自:https://www.mattstine.com/publication/migrating-to-cloud-native/
2017年,Matt Stine 在接受 InfoQ 采访时,对云 Cloud Native Architecture 的定义做了小幅调整,具体有以下六个特质:
  • 模块化(Modularity)
  • 可观测性(Observability)
  • 可部署性(Deployability)
  • 可测试性(Testability)
  • 可处理性(Disposability)
  • 可替代性(Replaceability)
原文出自:https://www.infoq.com/articles/cloud-native-panel/
2019年,VMware Tanzu 收购了 Pivotal,其官网给出了云原生最新定义,以及云原生的架构原则:
  • 云原生是一种利用云计算交付模型的优势来构建和运行应用程序的方法论。当企业使用云原生架构开发和运维应用程序时,它们能更快速地响应客户需求将新想法推向市场。
  • 虽然公共云影响了几乎所有行业对于基础设施的思维模式,但类似云的交付并不仅限于公共环境。云原生的开发同时适合公共云和私有云,你只需要关心应用程序是如何创建和部署,无需理会在哪部署。
  • 更重要的是能够为开发人员提供按需访问计算能力以及现代数据和应用程序服务。云原生开发融合了 DevOps、连续交付、微服务和容器。
  • 云原生架构原则:DevOps、Microservices、Containers、Security
原文出自:https://tanzu.vmware.com/cloud-native
云原生的发展 CNCF
CNCF(Cloud Native Computing Foundation,云原生计算基金会),是由开源基础设施界的翘楚 Google、RedHat 等公司共同牵头发起的一个基金会组织,其目的非常明确,就是为了对抗当时大红大紫的 Docker 公司在容器圈一家独大的局面。CNCF 通过 Kubernetes 项目在开源社区编排领域一骑绝尘,之后就扛起了云原生定义和推广的大旗,风光无限。
2015年,Google 主旨在于打击 Docker,因此它对云原生的定义还比较狭隘,包括如下三个方面:
  • 微服务架构
  • 应用容器化
  • 支持容器编排和容器调度
2018年,被称为云原生元年,大量科技公司开始接受云原生的概念,并纷纷加入到云原生的大家庭。此外,主流云计算供应商相继加入 CNCF,持续丰富整个云原生的生态。CNCF 对云原生重新进行了定义(并大大扩展了云原生的外延):
  • 云原生技术有利于各组织在公有云、私有云和混合云等新型动态环境中,构建和运行可弹性扩展的应用。云原生的代表技术包括容器、服务网格、微服务、不可变基础设施和声明式API。
  • 这些技术能够构建容错性好、易于管理和便于观察的松耦合系统。结合可靠的自动化手段,云原生技术使工程师能够轻松地对系统作出频繁和可预测的重大变更。
  • 云原生计算基金会(CNCF)致力于培育和维护一个厂商中立的开源生态系统,来推广云原生技术。我们通过将最前沿的模式民主化,让这些创新为大众所用。
原文出自:https://github.com/cncf/toc/blob/main/DEFINITION.md
2021年,已经有几百家企业和机构加入 CNCF 参与云原生的建设,其中不乏亚马逊、微软、思科、华为、阿里云等大型科技公司。截止到目前(2021年10月),CNCF 已毕业的项目有16个,孵化中的项目有23个。以下是 CNCF 全景图:
云原生的前世今生(一)
文章图片

原图出自: https://landscape.cncf.io,持续更新中...
CNCF 为了帮助企业和机构在复杂的基础架构之上更好落地云原生应用,从整体上给出了十个具体实施步骤,在不同的步骤都可以结合 Landscape 中列出的产品或服务进行选择。以下是 CNCF 给出的云原生实践路线图:
云原生的前世今生(一)
文章图片

原图出自: https://github.com/cncf/landscape,持续更新中,中文翻译如下:
云原生的前世今生(一)
文章图片

有了如此详尽的云原生实践路线图,相信每个开发者都能轻松的构建自己的云原生应用。
小结
随着云原生生态和边界不断的扩大,云原生的定义一直在变化。不同的公司(Pivotal & CNCF)不同的人对它有不同的定义,同一家公司在不同的时间阶段对云原生的定义也不一样。根据摩尔定律推断,未来云原生的定义肯定还会继续变化。
我们不妨跳出技术层面,尝试用组织和立场的角度来分析下 Pivotal 和 CNCF 这两家公司:
  • Pivotal 定位于 PaaS 层端到端的解决方案及数字化转型,从文化、流程、方法论、蓝图规划、软件开发方式等,都有一套模式,主要用户是传统大中型企业 CIO,整体策略是自顶向下;
  • CNCF 立足于整个云计算生态和技术创新、变革者,偏重于技术、工具链和底层基础设施,主要用户是开源社区的开发者、互联网及新兴企业,影响力可想而知,整体策略是自底向上;
  • 结论:Pivotal 是 Cloud Native 概念和方法论的先行者, CNCF 是 Cloud Native 的最佳实践者。
【云原生的前世今生(一)】不管云原生的定义如何变化,其本质还是帮助开发者和企业,如何在复杂的基础架构之上,保证松耦合的系统能够更好地被监控和管理。云原生的生态应用也越来越枝繁叶茂,相信在不久的将来,会有更多伟大的科技落地在我们的身边,影响到我们的每一个人。
参考
  • 《云原生已来,只是分布不均》https://zhuanlan.zhihu.com/p/152430776
  • 《CNCF – 云原生计算基金会简介》https://www.wenjiangs.com/doc/nicwvs6u
  • 《开源简史基础:CNCF与路线图Trail Map》https://blog.csdn.net/liumiaocn/article/details/100653635

    推荐阅读