# 后端技术新趋势——Cloud Native

架构是在生产中持续演进出来的,而不是从一开始就设计出来的。

# Cloud Native到底是什么?

云原生(Cloud Native)是最近在技术圈火的一塌糊涂的一个词,许多人认为“现在还不懂云原生就Out了”。那么云原生到底是什么呢?

个人认为,**Cloud Native并不是指一种具体的技术,而与“微服务”一样,是一组概念的集合。它包括:DevOps、持续交付、微服务、敏捷基础设施、康威定律等。**可以说,Cloud Native是构建在DevOps、自由开放的企业文化、自动化的研发流程和基于云的容器化的微服务架构之上的一种面向云计算的方法论,或者说新概念、新思想。实际上,每个人看待云原生的观点大概都是不太一样的,一千个人眼中有一千种云原生。

为什么是概念或者是思想呢?因为“云原生”到现在为止并没有被大规模地落地到生产环境,而且也没有一个统一的规范和权威的定义——就算是Matt Stine提出的“云原生”也只是一个概念而已。所以可以认为云原生是一种思想或者概念,这并没有犯原则性的错误。

# Cloud Native与传统的架构、研发模式相比,有什么优势?

云原生之所以可以火起来,肯定是因为它发现并解决了传统的架构和研发流程之中的痛点。那么,云原生相比传统的架构到底好在哪里呢?我们从Pivotal提出的云原生的四要素——微服务、DevOps、容器化、持续交付来分析一下:

  1. 微服务 与微服务相对的是单体应用。关于微服务的优劣及要不要使用微服务的文章我已经写过一篇:http://www.wendev.site/microservice/ 。微服务相比于单体应用主要的优点是:高内聚,低耦合,可独立开发与部署,独立升级等。另外,这里要说明一下,微服务是有理论基础的——那就是“康威定律”,它指导了微服务如何进行拆分。
  2. DevOps DevOps是敏捷方法的一种体现,是一种沟通文化和组织形式,它为云原生提供持续交付能力。相比于传统的开发与运维分开的模式,DevOps打破了开发与运维的界限,使得软件的交付过程速度提高。
  3. 容器化 容器化的好处在于真正打破了技术栈之间的差异——服务都被无差别地部署在容器中,可以被无差别地自动化管理和维护,还可以借助Kubernetes等容器编排工具进行管理。传统的单体架构难以跨技术栈和跨语言开发,并且需要手动维护,规模变大后运维难度也随之加大。
  4. 持续交付 持续交付是典型的“小步快跑”模式——不停机更新,灰度发布;而传统的瀑布式开发模式交付进度缓慢,代码合并进度冗长,不利于应对持续变化的需求。

基于这些优势,在大型企业上云后,Cloud Native必然是最好的选择。

(未完待续)