为什么说年是云原生的关键节点
“未来的软件一定是生长于云上的”这是云原生理念的最核心假设。而所谓“云原生”,实际上就是在定义一条能够让应用最大程度利用云的能力、发挥云的价值的最佳路径。在这条路径上,脱离了“应用”这个载体,“云原生”就无从谈起。容器技术,则是将这个理念落地、将软件交付的革命持续进行下去的重要手段之一。
云原生技术发展简史
2004-2007年,Google已在内部大规模使用像Cgroups这样的容器技术。
2008年,Google将Cgroups合并进入了Linux内核主干。
2013年,Docker项目正式发布。
2014年,Kubernetes项目也正式发布。这样的原因也非常容易理解,因为有了容器和Docker之后,就需要有一种方式帮助大家方便、快速、优雅地管理这些容器,这就是Kubernetes项目的初衷。在Google和Redhat发布了Kubernetes之后,这个项目的发展速度非常快。
2015年,由Google、Redhat以及微软等大型云计算厂商以及一些开源公司共同牵头成立了云原生基金会(CNCF)。CNCF成立之初,就有22个创始会员,而且Kubernetes也成为了CNCF托管的第一个开源项目。在这之后,CNCF的发展速度非常迅猛。
2017年,CNCF达到170个成员和14个基金项目。
2018年,CNCF成立3周年有了195个成员,19个基金会项目和11个孵化项目,如此之快的发展速度在整个云计算领域都是非常罕见的。
因此,如今我们所讨论的云原生技术生态是一个庞大的技术集合。CNCF有一张云原生全景图,在这个全景图里已经有200多个项目和产品了,这些项目和产品也都是和CNCF的观点所契合的。如果以这张全景图作为背景,加以思考就会发现,我们今天讨论的云原生其实主要谈论了以下几点.
云原生基金会
云原生技术社区,比如像CNCF目前正式托管的20多个项目共同构成了现代云计算生态的基石,其中像Kubernetes这样的项目已经成为了世界第四活跃的开源项目。
除了前面2点之外,现在全球各大公有云厂商都已经支持Kubernetes了。此外,还有100多家技术创业公司也在持续地进行投入。现在阿里巴巴也在谈全面上云,而且上云就要上云原生,这也是各大技术公司拥抱云原生的一个例子。
我们正处于时代的关键节点
从2013年Docker项目发布开始说起,Docker项目的发布使得全操作系统语义的沙盒技术唾手可得,让用户能够更好、更完整地打包自己的应用,使得开发者可以轻而易举地获得了一个应用的最小可运行单位,而不需要依赖任何PaaS能力。这对经典PaaS产业其实是一个“降维打击”。
2014年的时候,Kubernetes项目发布,其意义在于Google将内部的Borg/Omega系统思想借助开源社区实现了“重生”,并且提出了“容器设计模式”的思想。而Google之所以选择间接开源Kubernetes而不是直接开源Borg项目,其实背后的原因也比较容易理解:Borg/Omega这样的系统太复杂了,没办法提供给Google之外的人使用,但是Borg/Omega这样的设计思想却能借助Kubernetes让大家接触到,这也是开源Kubernetes的重要背景。
这样到了2015年和2016年,这是容器编排“三国争霸”的时代,当时 Docker,Swarm,Mesos,Kubernetes都在容器编排领域展开角逐,他们竞争的原因其实也比较容易理解,Docker或者容器本身的价值虽然大,但是如果想要让其产生商业价值或者说对云的价值,就需要在编排上面占据一个有利的位置。
Swarm和Mesos的特点,那就是各自只在生态和技术方面比较强,其中,Swarm更偏向于生态,而Mesos技术更强一些。相比之下,Kubernetes则兼具了二者优势,最终在2017年从“三国争霸”的局面中胜出,成为了当时延续现在的容器编排标准。这一过程的代表性事件就是Docker公司宣布在核心产品中内置了Kubernetes服务,且Swarm项目逐渐停止维护。
到了2018年的时候,云原生技术理念开始逐渐萌芽,这是因为此时Kubernetes以及容器都成为了云厂商的既定标准,以“云”为核心的软件研发思想逐步形成。
而到了2019年,情况似乎又将发生一些变化,究竟什么是“云原生”,云原生该怎么落地?
很多人都会问“到底什么是云原生?”实际上,云原生是一条最佳路径或者最佳实践。更确切地说,云原生为用户指定了一条低心智负担的、敏捷的、能够以可扩展和可复制的方式,是最大化利用云的能力、发挥云的价值的最佳路径。
因此,云原生其实是一套指导进行软件架构设计的思想。按照这样的思想而设计出来的软件:首先,天然就“生在云上,长在云上”;其次,能够最大化发挥云的能力,使得我们开发的软件和“云”能够天然地集成在一起,发挥出“云”的最大价值。