Cloud Native(雲原生)是以雲架構爲優先的應用開發模式。目前,愈來愈多的企業已經在大規模開始擁抱雲,在雲環境開發應用、部署應用、發佈應用。將來,愈來愈多的開發者也將採用 Cloud Native 來開發應用。本書是國內第一本 Java 領域 Cloud Native 著做。html
那麼爲何Cloud Native模式會愈來愈流行?Cloud Native與微服務有什麼區別?什麼時候選擇使用Cloud Native?等等,這些問題將在本文一一解答。git
Cloud Native (國內譯爲「雲原生」),最先是 Matt Stine 提出的一個概念。與微服務同樣,Cloud Native 並非一種具體的技術,而是一類思想的集合,包括DevOps、持續交付(Continuous Delivery)、微服務(MicroServices)、敏捷基礎設施(Agile Infrastructure)、康威定律(Conways Law)等,以及根據商業能力對公司進行重組。Cloud Native 既包含技術(微服務,敏捷基礎設施),也包含管理(DevOps,持續交付,康威定律,重組等)。因此,Cloud Native 也能夠說是一系列Cloud技術、企業管理方法的集合。github
Cloud Native 具有有如下特性:spring
以云爲基礎架構架構
雲服務app
無服務運維
可擴展分佈式
高可用spring-boot
敏捷微服務
雲優先
等等
下圖是《Cloud Native 分佈式架構原理與實踐》書中所羅列的 Cloud Native 雲架構模式。可見 Cloud Native 體系是很是龐雜的。
隨着雲計算的不斷髮展,企業開始採用基礎架構即服務(IaaS)和平臺即服務(PaaS)服務,並利用它們構建利用雲的彈性和可伸縮性的應用程序,同時也可以知足雲環境下的容錯性。同時,雲環境更加便宜和經濟,所以,將來雲環境會被做爲企業部署、我的開發的優先選擇。Cloud Native 的出現恰逢其時, 其架構能夠指導企業或者我的輕鬆實現雲應用開發或者雲部署。
在「簡述 Microservices(微服務)」一文中,已經對微服務的概念作了簡單的論述。
微服務架構風格其本質是把大的應用拆分紅爲小的服務(微服務)。微服務是單一應用的形式, 所以能夠獨立部署和運行在其本身的進程中。微服務通常採用輕量級的機制進行通訊(通常是 HTTP 資源 API),所以能夠不限制技術棧。微服務是圍繞業務能力來構建,所以更加聚焦業務能力,可以把握住領域邊界,放置需求的蔓延。微服務其固有的特性,方便經過全自動部署工具來實現獨立部署,所以很是適合在雲環境中進行部署。
在 Cloud Native 中,傾向於使用微服務來構建應用。同時,Cloud Native由於是以雲環境爲優先的,很是適合微服務的部署和管理。
目前,業界針對微服務有很是多的成熟方案,好比Spring Boot、Spring Cloud等,均可以簡化微服務的開發工做。這微服務方面,筆者也撰寫了一些列的免費教程(https://waylau.com/books/),讀者朋友能夠做爲參考。
雲計算的第一個浪潮是關於成本節約和業務敏捷性,尤爲是雲計算的基礎設施更加廉價。
不少企業傾向於使用微服務架構來開發應用。微服務開發快速,職責單一,可以更快速的被客戶所採納。同時,這些應用可以經過快速迭代的方式,獲得進化,贏得客戶的承認。Cloud Native 能夠打通微服務開發、測試、部署、發佈的整個流程環節。
雲供應商爲迎合市場,提供了知足各類場景方案的 API,例如用於定位的 Google Maps,用於社交協做的認證平臺等。將全部這些 API 與企業業務的特性和功能混合在一塊兒,可讓他們爲客戶構建獨特的方案。全部這些整合都在 API 層面進行。這意味着,不論是移動應用仍是傳統的桌面應用都能無縫集成。因此,採用 Cloud Native 所開發的應用都且具有極強的可擴展性。
軟件不可能不出故障。傳統的企業級開發方式,須要有專職人員來對企業應用進行監控與維護。而在 Cloud Native 架構下,底層的服務或者是 API 都由將部署到雲中,等價於將繁重的運維工做轉移給了雲平臺供應商。這意味着客戶應用將獲得更加專業的看護,同時,也節省了運維成本。
所以,雲是大勢所趨。快來擁抱Cloud Native!
那麼如何來實現 Cloud Native 呢?其實這是一個很是大的話題,好比,做爲開發者,你須要瞭解目前市面上流行的雲供應商,瞭解微服務、SOA,瞭解 HTTP 和 REST,瞭解領域驅動設計(DDD),瞭解CI\CD和TDD,瞭解兩個披薩,瞭解分佈式的經常使用架構和模式等等。這裏每同樣都是一個龐大的課題,還好目前市面上已經有了一些資料可供學習,好比《Cloud Native 分佈式架構原理與實踐》,能夠很是全面的指導開發者輕鬆入門 Cloud Native。
在本文的最後也列出了一些學習資料,讀者有興趣的話,能夠由點及面,慢慢擴展本身的知識體系。