云原生与云优先:究竟有何区别?

发表时间: 2020-01-29 01:59

所谓云优先,指的是优先考虑将服务构建并部署于云端服务器,在此之后,又出现了云原生,那么到底什么是云原生呢?


先来回顾一下相对于在本地构建并运行服务,云端优先有那些优点。

在本地服务器上构建并运行服务,上线之后,我们很难再动态提高服务器的性能或加速数据存储,我们需要从一开始就预留一些超额的计算及存储能力,除此之外 ,在本地构建服务基础设施,我们还需要考虑硬件采购和劳动力的成本。

相对于在本地构建及运行服务,在云服务器之上,服务运营一段时间后,我们仍可根据服务的访问量增加或缩减服务器实例及数据存储的容量。 因此,在服务发布初期可以使用较小的云服务器实例和存储实例,之后可根据需要实时扩容。

由此可见,在云端构建并运行服务,我们不必花费大量时间去进行服务器容量规划,也不需要采购硬件,因此可以低成本快速启动,快速扩容,同时也可以快速销毁资源。

以上这些便是云优先的优势所在。

那么,什么又是云原生呢?

云原生,指充分利用云端资源来构建并运行服务,而不是优先使用云资源。 云原生不仅指使用云端资源作为服务基础设施,还指对在其上运行的应用程序进行优化。云原生推进组织Cloud Native Computing Foundation(CNCF)正在为云原生应用开发各种开源软件,例如Kubernetes。该组织发布了“ CNCF Cloud Native Definition v1.0”的文档作为云原生的定义。以下为部分引用。

...

云原生技术使得企业能够在诸如公共云,私有云和混合云中构建和运行可伸缩的应用程序。 这种技术的典型示例是容器,服务网格,微服务,及不可变基础设施和声明性API

上面的表述稍微有些抽象,所谓云原生,并不是一定是基于虚拟机,更多的是基于更为精细的容器,借助容器等技术,我们可以构建更具可扩展性和灵活性的应用程序,并获得比云优先方案更多的好处。 此外,使用诸如服务网格,微服务,不可变基础设施和声明性API之类的技术可以更有效地构建云原生应用。

当然,对于云原生,各个企业,个人根据自身的实际情况会有不同的诠释,CNCF的定义也只是其中之一,它只是IT工程师们达成的狭义上的共识。