1. 程式人生 > >雲原生:雲計算時代命題之終極解決方案

雲原生:雲計算時代命題之終極解決方案

圖片 hit 讀者 最優 趨勢 打包成 容器化 公有雲 sca

雲原生:雲計算時代命題之終極解決方案

https://blog.csdn.net/broadview2006/article/details/80131068 2017年08月17日 14:35:05

Cloud Native?雲原生?很多人一看到這個詞就懵了,到底什麽是雲原生?

  雲原生這個詞其實由來已久,IT行業永遠也不缺乏新概念。2015 年,Pivotal公司的Matt Stine提出Cloud Native這一概念,並結合這個概念包裝了自己的新產品Pivotal Web Service和Spring Cloud。在Matt Stine所著的Migrating to Cloud Native Application Architectures一書中,他對雲原生的概念進行了詳細的闡述。該書的中文版《遷移到雲原生應用架構》已經在GitHub 上開源,感興趣的讀者可瀏覽或下載(https://github.com/rootsongjc/migrating-to-cloud-native-application-architectures)。

什麽是雲原生

  雲原生準確來說是一種文化,更是一種潮流,它是雲計算的一個必然導向。意義在於讓雲成為雲化戰略成功的基石,而不是障礙。
  自從雲的概念開始普及,許多公司都部署了實施雲化的策略,紛紛搭建起雲平臺,希望完成傳統應用到雲端的遷移。但是這個過程中會遇到一些技術難題,上雲以後,效率並沒有變得奇高,故障也沒有迅速定位。
  為了解決傳統應用升級緩慢、架構臃腫、不能快速叠代、故障不能快速定位、問題無法快速解決等問題,雲原生這一概念橫空出世。雲原生可以改進應用開發的效率,改變企業的組織結構,甚至會在文化層面上直接影響一個公司的決策。
  另外,雲原生也很好地解釋了雲上運行的應用應該具備什麽樣的架構特性——敏捷性、可擴展性、故障可恢復性。
  綜上所述,雲原生應用應該具備以下幾個關鍵詞:

  • 敏捷
  • 可靠
  • 高彈性
  • 易擴展
  • 故障隔離保護
  • 不中斷業務持續更新

以上特性也是雲原生區別於傳統雲應用的優勢特點。
  從宏觀概念上講,雲原生是不同思想的集合,集目前各種熱門技術之大成,具體包括如下圖所示的幾個部分。
技術分享圖片

微服務

  • 應用間通過RESTful API進行通信
  • 可以被獨立的部署、更新、scale和重啟

並不是所有的應用都適合微服務化,也不是說將一個單體應用拆分的越細越好。談到微服務就不得不提到”十二因素法則“,如下圖所示。
技術分享圖片

DevOps

  • 自動化發布管道、CI工具
  • 快速部署到生產環境
  • 開發、運維協同合作

設計系統的組織,最終產生的設計等同於組織之內、之間的溝通結構。
                                               ——康威定律
  開發和運維看似是兩個貌似互相矛盾的角色。因為開發負責業務的持續叠代,會為系統引入大量的變更,如果系統正在穩定運行,那麽每次上線和發布都給系統帶來新的風險。而運維追求的是系統可用性、SLA、而變更就意味著可能帶來的不穩定。

持續交付

  • 頻繁發布、快速交付、快速反饋、降低發布風險

構建自己的CI/CD 持續構建管道與發布流程,如使用Jenkins。

容器化

  • 微服務的最佳載體

容器化最大的好處是保持運行環境的一致性,只要應用可以打包成容器鏡像(我們通常使用Docker容器),就可以一次編譯,然後到處運行。
  同時,容器也可以作為應用運行的最小組件來部署,且更適合作為無狀態應用的運行。結合容器編排工具(如Kubernetes)將大大增強系統的擴展性和自愈能力,輕松應對大流量下的高並發場景,加快業務的叠代速度,Kubernetes作為CNCF成員的核心,本身就是與雲原生應用的理念緊密結合的產物。
  雲原生中包含的不同思想,與其所解釋的雲上應用架構應該具備的特性幾乎是一一對應的。

  • DevOps、持續交付對應更快的上線速度,即敏捷性。
  • 微服務對應可擴展性及故障可恢復性。
  • 敏捷基礎設施實現了擴展能力的資源層支持。
  • 康威定律在組織機構和流程上確保架構特性能夠快速實施。

後記

  雲時代的雲原生應用大勢已來,將傳統的單體架構應用遷移到雲原生架構上,你準備好了嗎?
  俗話說,意識決定行動。在遷移到雲原生應用之前,我們需要先對 Cloud Native(雲原生)的概念、組織形式、實現技術有一個大概的了解,這樣才能真正進入到雲原生架構實踐中。
  公有雲大行其道,私有雲廠商也不斷湧現,為了業務的快速叠代,為了快速形成自己的產業生態,各個業務需求方都在積極的評估和采納公有雲方案。
  真正的雲原生應用架構不應該限制應用的開發語言和架構選擇,雖然目前以Java應用的開發者居多,在雲原生概念出來之前就已經積累了不少分布式應用管理經驗,如Netflix OSS。
  實際上雲原生應用架構應該適用於任何應用類型。雲原生應用架構適用於異構語言的程序開發,不僅僅是針對Java語言。目前雲原生應用生態系統已經初具規模,CNCF成員不斷發展壯大,基於Cloud Native的創業公司不斷湧現,Kubernetes引領容器編排潮流和 Service Mesh技術,Go語言的興起等,這些都為將傳統應用遷移到雲原生架構提供了更多的選擇。

相關圖書推薦

技術分享圖片
《Cloud Native Go:構建基於Go和React的雲原生Web應用與微服務》,點此鏈接可在博文視點官網查看此書。
【美】Kevin Hoffman、Dan Nemeth 著
TalkingData:宋凈超 吳迎松 徐蓓 馬超 譯
1. 雲原生是雲計算時代的發展趨勢和必然結果
本書通過一個雲原生應用項目的構建,為大家介紹了雲原生的道與術,引導讀者了解雲原生理念的產生、應用場景、優勢。
2. 集現今諸多熱點技術之大成
本書在構建雲原生項目時,涉及Docker、持續集成、微服務、DevOps、事件溯源與CQRS等眾多備受關註的技術熱點,無疑會讓讀者受益匪淺。
3. Go語言助理雲開發完美實現
Go語言以其簡單優雅、快速安全、支持高並發等特性,成為雲計算時代的最優語言。本書將帶領讀者正確認識Go語言,掌握用Go構建應用程序的方法。
4. 流程完整,示例具體詳細
本書從搭建平臺開始,逐步帶領讀者開發一個完整的雲上項目。其中的每一環節都有詳細講解。示例具有代表性,代碼詳細,幫助讀者輕松掌握雲原生開發的關鍵。

雲原生:雲計算時代命題之終極解決方案