自从谷歌于2015年基于自己的Kubernetes容器编排开源项目,发起成立“云原生计算基金会”(Cloud Native Computing Foundation,CNCF)之后,“云原生”这一概念开始逐渐火热起来。
究竟什么是“云原生”?是谁最先提出来的?它和微服务、容器化、云计算、DevOps等等相关概念是什么关系?
在可以查阅到的文献中,“云原生”这一概念最早出现于Pivotal公司的Matt Stine在2015年所撰写的“迁移到云原生应用架构”报告中。
这份报告总结了云原生应用程序架构的5条关键特征:
时间一晃就过去了5年。这期间,Pivotal于2019年12月被VMware公司收购,而CNCF基金会基于Kubernetes所孵化的云原生开源项目,用ThoughtWorks公司2020年5月发表的技术雷达第22期的话说,就是出现了寒武纪大爆发,出现了大量受到开发人员热捧的明星开源项目,Kubernetes生态系统欣欣向荣。
在2020年接近尾声的时候,让我们看看这两大意见领袖,对云原生的最新定义。
云原生是一种利用云计算软件交付模型的优势,来构建和运行应用程序的方法。当公司使用云原生架构构建和运行应用程序时,他们能更快地将新想法推向市场,并更快地响应客户需求。 尽管每个行业对基础设施进行投资时都会考虑公有云,但基于云的软件交付并不仅限于公有云。云原生开发既适用于公有云,也适用于私有云。相比是在公有还是私有云上构建应用,云原生应用更关注如何创建和部署应用程序。 云原生更重要的方面,是能够为开发人员提供能按需访问的计算能力,以及现代化的数据和应用程序服务的能力。云原生开发要与DevOps、持续交付、微服务和容器的概念相结合。
由谷歌公司所主导的CNCF基金会在官网上展示了2018年6月11日所发布的“云原生”的定义为:
云原生技术使组织能够在现代化和动态的环境(例如公共云、私有云和混合云)中,构建和运行可进行容量伸缩的应用程序。其代表技术包括容器、服务网格、微服务、不可变基础设施和声明性API。 这些技术能够构建富有韧性、便于管理和易于观测的松耦合系统。结合强大的自动化功能,这些技术能使工程师们可以轻松、频繁且可预测地对系统做出重大变更。
对比上面从2015年到2020年有关“云原生”的描述和定义,可以看出,“云原生”的定义,也是随着时代和技术的发展,不断演化。
对于国内进行云原生应用开发的企业,该如何把握不断演化的“云原生”的定义呢?
可以从3个方面来把握:
在参考了上面的定义和本文结尾所列6本书中的描述,现在以一个通常的云原生互联网应用为例,从“价值”、“目标”和“方法”这3个层次,尝试定义一下什么是2020年的云原生。
价值(Why)
目标(What)
方法(How)
可以参考近两年出版的有关云原生的6本书籍: