起源
2010年5月,WSO2的CTO Paul Premantle在博客中首次提出了雲原生(Cloud Native)的概念。
2013年,Netflix的雲架構師Adrian Cockcroft在Yow會議上介紹了Netflix基於Cloud Native的成功應用實踐。
同在2013年,Pivotal的Matt Stine在文章中詳細介紹瞭如何將應用遷移到Cloud Native。
2015年,Google牽頭成立了CNCF(Cloud Native Computing Foundation),發佈了Kubernetes,爲應用上雲提供了諸多工具。
概述
雲原生可以理解爲一種設計模式。一個雲原生應用應具備可用性和伸縮性,以及自動化部署和管理能力。可隨處運行,還可以提供持續集成、持續交付工具提升開發測試效率。
雲原生也對研發流程和代碼協作提出了要求,統稱爲十二要素:
十二要素
1.基準代碼Codebase
一個應用一套代碼,可多次部署。
2.依賴Dependencies
顯式聲明第三方依賴。
3.配置Config
配置儲存到環境變量。
4.後端服務Backing Services
低耦合。
5.構建、發佈、運行Build,Release,Run
分離構建和運行流程。
6.進程Processes
應用進程無狀態。
7.端口綁定Port Binding
通過端口綁定對外提供服務。
8.併發Concurrency
能夠水平伸縮實現併發。
9.已處理性Disposability
可優雅啓動和關閉應用。
10.開發/線上環境等價Dev/Prod parity
11.日誌Logs
事件流處理日誌。
12.管理進程Admin Processes
一點總結
其實現在你所負責的應用,除非是那種特別遠古的產物,否則基本或多或少都有云原生思想的影子。對於一個應用到底算不算雲原生,個人覺得不必那麼糾結。雲原生和之前大熱的微服務一樣,只是一個概念而已。真正讓自己的應用運轉更加穩定纔是王道。