什么是云原生

  1. 起源

    网上提到最多的是云原生(Cloud Native)是由“Pivotal 公司的Matt Stine于2013年首次提出”,我查阅了一些资料发现,在2010年5月28日,WSO2的CTO和联合创始人PaulFremantle在他的博客中就写过一篇题目为CloudNative的文章( Paul Fremantle's Blog: Cloud Native) ,在Matt Stine的文章中也提到了Cloud Native 是在2010年左右开始被关注,是由包括Paul在内的行业大佬普及的。

     而后在2013年Matt Stine在Pivotal提出了云原生概念,并使其出名。在2015年写了一本书叫 《Migrating to Cloud-Native Application Architectures》中探讨了云原生应用架构的几个主要特征。

   然后在2015年Google 主导成立了云原生计算基金会(CNCF),并致力于推动云原生的发展。

2. 定义

虽然前面提到云原生大概是在2010年提出,2015得到定义和推广;但是关于云原生内容的探索还可以继续往前追溯。

 a. 首先想到的是世界上最大的流媒体公司Netfilix。我们都知道Netflix公司最初是提供在线DVD租赁服务的。在2008年Netflix经历了一次严重的数据库损坏事故,在这次事故后意识到了类似的事故可能会给公司造成毁灭性影响。因此,做出了一个关键决定:要以另一种方式来开发和运营其软件,确保其服务始终向客户提供。

于是从2008年开始进行扩展性、性能和可用性方面的探索;直到2013年,Netflix的云架构师Adrian Cockcroft在YowConference上介绍了Netflix在AWS上基于CloudNative的成功应用。Netflix在AWS上运行着上万个实例,每天都有数以千计的实例被创建或删除。Adrian Cockcroft介绍Netflix的成功经验时,主要从目标、原则和措施等方面进行了描述。

  • 目标:
    • 可扩展性、敏捷、效率
  • 原则:
    • 不变性、关注点分离、反脆弱性、高信任的组织、共享
  • 措施:
    • 利用AWS实现可扩展性、敏捷和共享。
    • 利用非标准化数据实现关注点分离。
    • 利用猴子工程师实现反脆弱性。
    • 利用默认开源实现敏捷、共享。
    • 利用持续部署实现敏捷、不变性。
    • 利用DevOps实现高信任组织和共享。
    • 利用运行自己写的代码实现反脆弱性开发演进

  b. Paul Fremantle提出CloudNative的原因是他一直想用一个词表达一种架构,这种架构能描述应用程序和中间件在云环境中的良好运行状态。因此他抽象出了Cloud Native必须包含的属性,只有满足了这些属性才能保证良好的运行状态。

  • 属性:分布式、弹性、多租户、自服务、按需计量和计费、增量部署和测试

  • Pivotal 公司的 Matt Stine 写了一本叫做 迁移到云原生应用架构 的小册子,其中探讨了云原生应用架构的几个主要特征:
    • 符合 12 因素应用
    • 面向微服务架构
    • 自服务敏捷架构
    • 基于 API 的协作
    • 抗脆弱性

这也成了很多人对云原生的早期印象,同时这时云原生也被12因素(12-factor)变成了一个抽象的概念。他认为单体架构在向云原生架构的演进过程中,需要流程、文化、技术共同变革。

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

  • 应用容器化
  • 面向微服务架构
  • 应用支持容器的编排调度

d. 2017 年,Matt Stine 将云原生架构归纳为模块化、可观察、可部署、可测试、可替换、可处理等六个特质;而Pivotal 最新官网对云原生概括为 5 个要点:DevOps、持续交付、微服务、容器、安全。

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

  • 以下是 CNCF 对云原生的重新定义(中英对照):

Cloud native technologies empower organizations to build and run scalable applications in modern, dynamic environments such as public, private, and hybrid clouds. Containers, service meshes, microservices, immutable infrastructure, and declarative APIs exemplify this approach.

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

These techniques enable loosely coupled systems that are resilient, manageable, and observable. Combined with robust automation, they allow engineers to make high-impact changes frequently and predictably with minimal toil.

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

The Cloud Native Computing Foundation seeks to drive adoption of this paradigm by fostering and sustaining an ecosystem of open source, vendor-neutral projects. We democratize state-of-the-art patterns to make these innovations accessible for everyone.

云原生计算基金会(CNCF)致力于培育和维护一个厂商中立的开源生态系统,来推广云原生技术。我们通过将最前沿的模式民主化,让这些创新为大众所用。

3. 总结

关于云原生的定义还有很多人或组织也与其它类似的定义和看法,但在我看来追求Cloud Native准确的定义并不是我们的初衷。业务场景是千变万化的,一方面,每个人每个公司所处的环境不同,心目中的架构也不同;另一方面,架构是在持续演进的,随着新的技术层出不穷,Cloud Native留给世人的形象也会不断演进。所以广义上讲,凡是能够提高云上资源利用率和应用交付效率的行为或方式都是云原生。

如果非要给Cloud Native下一个定义,那么我比较认可《持续演进的Cloud Native》中的定义,Cloud Native是一系列架构、研发流程、团队文化的最佳实践集合,以此支撑更快的创新速度、极致的用户体验、稳定可靠的用户服务、高效的研发效率。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值