云原生和傳統云計算到底存在哪些不同?
云原生在近兩年突然火了,在很多人還不了解它是什么的時候就頻繁被刷屏。每天被一堆新的概念拉著走,扯著學。對于新概念,可以從三個層次去理解,一個是這技術名詞被提出的完整歷史背景,一個是技術概念名詞的演化過程,一個是結合當前比較主流的話語體系、現實案例來的解讀。

云原生(Cloud Native)的由來
云原生的概念最早開始于2010年,在當時 Paul Fremantle 的一篇博客中被提及,他主要將其描述為一種和云一樣的系統行為的應用的編寫,比如分布式的、松散的、自服務的、持續部署與測試的。當時提出云原生是為了能構建一種符合云計算特性的標準來指導云計算應用的編寫。
后來到2013年 Matt Stine在推特上迅速推廣云原生概念,并在2015年《遷移到云原生架構》一書中定義了符合云原生架構的特征:12因素、微服務、自服務、基于API協作、扛脆弱性。而由于這本書的推廣暢銷,這也成了很多人對云原生的早期印象,同時這時云原生也被12要素變成了一個抽象的概念。
CNCF基金會成立及云原生概念的演化
2015年由Linux基金會發起了一個The Cloud Native Computing Foundation(CNCF) 基金組織,CNCF基金會的成立標志著云原生正式進入高速發展軌道,google、Cisco、Docker各大廠紛紛加入,并逐步構建出圍繞 Cloud Native 的具體工具,而云原生這個的概念也逐漸變得更具體化。因此,CNCF基金最初對云原生定義是也是深窄的,當時把云原生定位為容器化封裝+自動化管理+面向微服務:
The CNCF defines “cloud-native” a little more narrowly, to mean using open source software stack to be containerized, where each part of the app is packaged in its own container, dynamically orchestrated so each part is actively scheduled and managed to optimize resource utilization, and microservices-oriented to increase the overall agility and maintainability of applications.
這主要因為CNCF基金會在當時的核心拳頭軟件就是 k8s,因此在概念定義上主要是圍繞著容器編排建立起來的生態。其實這也是為什么我們可以看到 CNCF 定義云原生的時候有時感覺就是再說容器生態。
到了2017年, 云原生應用的提出者之一的Pivotal在其官網上將云原生的定義概況為DevOps、持續交付、微服務、容器這四大特征,這也成了很多人對 Cloud Native的基礎印象。
而到了2018年,隨著Service Mesh的加入,CNCF對云原生的定義發生了改變,而這也逐漸作為被大家認可的官方定義:
Cloud native technologies empower organizations to build and run scalable applications in modern, dynamic environments such as public, private, and hybrid clouds. Containers, service meshes, microservices, immutable infrastructure, and declarative APIs exemplify this approach.
These techniques enable loosely coupled systems that are resilient, manageable, and observable. Combined with robust automation, they allow engineers to make high-impact changes frequently and predictably with minimal toil.
The Cloud Native Computing Foundation seeks to drive adoption of this paradigm by fostering and sustaining an ecosystem of open source, vendor-neutral projects. We democratize state-of-the-art patterns to make these innovations accessible for everyone.
總結一下就是:
- 基于容器、服務網格、微服務、不可變基礎設施和聲明式API構建的可彈性擴展的應用;
- 基于自動化技術構建具備高容錯性、易管理和便于觀察的松耦合系統;
- 構建一個統一的開源云技術生態,能和云廠商提供的服務解耦,
可以看出這一階段CNCF對云原生的定義加上服務網格和聲明式API,同時為這一概念闡述更深一層的意義,也就是建立一個統一中立的開源云生態(至于是否中立嘛這里就不談了:)。這對云原生的生態定位會是很重要的一點,也算CNCF最初成立的宗旨之一吧,打破云巨頭的壟斷。
對云原生的解構
對一個詞的解讀,除了看其歷史發展背景,還有一種就是純粹的從“字面意思”來理解為何這些概念。
Cloud Native,從詞面上拆解其實就是 Cloud 和 Native,也就是云計算和土著的意思——云計算上的原生居民,即天生具備云計算的親和力。
那怎么理解“云的原生居民”呢?
首先從云的角度來理解,云本質可以看作是一種提供穩定計算存儲資源的對象,為了實現這點,像虛擬化、彈性擴展、高可用、高容錯性、自恢復這些都是云的最基本的屬性,云原生作為一種云計算,這是所具備的第一層含義。
第二層要從 Native 來看,云原生和傳統的在云上跑的應用是不同。比如一些基于公有云搭建的應用,是基于傳統的SOA架構「(Service-Oriented Architecture)面向服務的架構」來設計并搭建實現的,然后再移植到云服務器上去運行,那么它和云得整合是非常低得,目前絕大多數的saas服務都是這樣的,例如用友、金蝶等。
那為何說與云的整合程度低呢?云作為一種分布式架構,其“土著居民”也應該是基于分布式架構設計出來得,而微服務或者Serverless這種將服務或函數拆分成一個個模塊的松耦合系統天然就具備分布式設計得屬性。這是Native的第一種表現。
其次云作為一種PaaS服務,這位“土著居民”從出生(設計)到成長(開發),再到生活(部署)都應該是基于云的理念來實現的,那么就需要一套自動化的開發流程CI/CD來實現。這是Native的第二種表現。
而最后“Native”的特點希望做到能在所有的云端都是自適應的,不管是各廠商的公有云像亞馬遜的AWS、微軟的Azure、國內的阿里云,還是各企業自己搭建的私有云,云原生的應用都能做到無縫的運行和連接。





















