“云原生”的应用价值及关键属性解读

“云原生”是云计算中很重要的一个概念,不过对“云原生”的认识和解读各有侧重 。我们觉得云原生围绕的是“云原生应用”这个核心,微服务、容器、DevOps等是实现云原生的工具和方法论,它们并不等价 。澄清概念、厘清认知,是推动“云原生应用”落地实践的基础 。初次听到“云原生(Could Native)”的时候也是一头雾水,对云原生的十二要素也是不理解 。随着项目的推进,对云计算理解的越来越多,也有了一些自己的体会,再次看云原生的概念的时候,有了新的认知 。也总是看到很多人讨论云原生,有人说云原生是构建和运行应用程序的方法;有人说云原生是一套技术体系和方法论;有人说云原生应用;有人说云原生架构;也有人说云原生就是是持续交付、微服务、容器、DevOps等等不一而足 。不能说是错的,也不能说对,不同的人所说的根本不在一个频道上 。我们一向强调从整体上、全面的看待问题,不要有选择的只看一点 。我们觉得很多人都或多或少的忽略了云原生的核心实质:Native 。
一、 云原生(Cloud Native)
云原生概念到底是什么?
我们觉得对于新技术首先最重要的就是弄清楚它的概念和适用场景 。先看Native在英语中的意思:天然的、天生的、本国的、土著的 。Cloud Native就是天生的云,就是天生就具备云的基因,适合云环境 。就像美国人的native language 是English一样,不是说美国人改变了国籍加入了其他国家的国籍,其native language就变了,native是一辈子都不会变的 。
其核心是云原生应用,范围包括云原生应用生命周期过程的理论、工具和方法 。云原生十二因素是判断是否是云原生的基本原则,也是实现云原生应用的基本理论指导(虽然这些因素并不完全准确) 。至于持续交付、容器、微服务、DevOps是实现云原生应用或服务的方法、工具框架和环境支持 。不是采用所谓的微服务、容器技术、DevOps就是云原生了,那只不过是一种实现方式而已 。没有它们,换其他工具方法同样可以实现云原生 。即便有了它们,用了它们也不一定就是云原生 。
二、 云原生所应具备的特性
首先要明白云原生要具备云的天然基因,天生就是云的一部分 。云原生不是为云而生,而是天生就是云,生而是云,所以它具有云的特性:通过网络访问、远端部署执行、可扩展弹性伸缩、共享、按需使用自助服务、高可用、可远程监控计费审计、标准化交付与位置无关等 。
云原生十二因素中,基准代码是为共享;依赖、配置、后端服务、管理进程是自治自主服务范畴;构建、发布、运行以及端口绑定是标准化交付与位置无关范畴;端口绑定也是远程访问范畴;进程、并发是扩展弹性要求;易处理是高可用要求;日志是监控计费审计需求,作为事件流则是云应用与位置无关要求 。
云原生十二因素虽然提出了云原生应用的大部分特性,但并没有明确云原生到底是什么?讨论云原生的时候到底该讨论什么?
三、 讨论云原生该关注什么?
我们在讨论云原生的时候到底该关注什么?是架构?体系?或是方法?
我们觉得讨论云原生最重要的是讨论云原生应用 。这是所有讨论云原生的核心 。云原生架构是云原生应用的架构,云原生方法论是实现云原生应用的方法论,云原生程序就是云原生应用,云原生体系就是构建、发布、运行云原生应用的理论、方法、工具、环境、流程、文化等等 。最终目的是为了业务应用 。云原生要素中第一条就是“一份基准代码,多份部署”,也已明确了是云原生应用 。
应用可以是天生具备云基因,适合部署于云环境,或者通过改造之后适合云计算环境,但改造的应用不是云原生应用,因为它不是天然的云应用 。云原生应用也不是为了迁云,传统应用改造为云应用才是为了迁云 。这是我们在讨论云原生的时候需要厘清楚的概念,不能混为一谈 。概念不清就会越谈越乱,越谈越糊涂 。

推荐阅读