做者 | 徐進茂(羅離) JAVA 開發工程師 編程
導讀:近年來,Serverless 一詞愈來愈熱,它已經逐漸成爲了一種新型的軟件設計架構。和 DevOps 概念提倡的是經過一系列工具和自動化的技術來下降運維的難度,促進研發運維一體化不一樣, Serverless 更像是一種 NoOps,即經過「不用作」的方式來解決「如何更高效作」的問題。
DevOps 是一組用於促進開發和運維人員之間協做的過程、方法和系統的統稱。安全
DevOps 提倡經過一系列的技術和工具下降開發和運維人員之間的隔閡,實現從開發到最終部署的全流程自動化,從而達到開發運維一體化。經過將 DevOps 的理念引入到整個系統的開發過程當中,可以顯著提高軟件的開發效率,縮短軟件交付的週期,更加適應當今快速發展的互聯網時代。服務器
說到 DevOps ,就必然會提到持續集成。持續集成指的是在軟件開發過程當中,軟件開發人員持續不斷地將開發出來的代碼和其餘的開發人員的代碼進行合併,每次合併後自動地進行編譯、構建,並運行自動化測試進行驗證,而不是等到最後各自開發完成後才合併在一塊兒。微信
持續集成能從根本上提升一個團隊的軟件開發效率。在軟件開發過程當中引入持續集成,能夠幫助團隊及時的發現系統中的問題,並快速作出修復,不只能夠縮短軟件開發的時間,並且能夠交付更具質量的系統。架構
一個 DevOps 開發環境須要知足如下 8 點需求。app
爲了知足以上 8 點要求,設計出的 DevOps 開發環境以下圖所示。框架
整個環境主要由 6 部分組成:less
整個環境的運行流程主要分爲如下 6 步:運維
經過上述幾步,咱們就能夠簡單實現一個 DevOps 開發環境,實現代碼從提交到最終部署的全流程自動化。函數
可是自從 2014 年 AWS 發佈 ASW Lambda 以來, Serverless 的概念開始逐漸火熱起來。各大雲廠商開始紛紛開始推出各自的 Serverless 產品,如 Google 的 Cloud Functions ,阿里雲的函數計算、Serverless應用引擎(SAE)等等。究竟什麼是Serverless 無服務計算呢?
什麼是 Serverless?
根據 CNCF (雲原生計算基金會)發佈的 Serverless 白皮書裏的定義:
Serverless computing refers to the concept of building and running applications that do not require server management. It describes a finer-grained deployment model where applications, bundled as one or more functions, are uploaded to a platform and then executed, scaled, and billed in response to the exact demand needed at the moment.
首先須要強調一點的是無服務器計算並不意味着咱們再也不須要使用服務器來運行代碼,代碼仍須要運行在服務器上對外提供服務。
在無服務計算時代,研發人員無需對服務器進行監控、配置、更新、擴容等運維操做。只須要將代碼上傳到雲廠商提供的無服務器計算平臺上便可,雲廠商會保證代碼能正常運行,當流量突增時,自動對服務器進行擴容,流量減小時,對服務器進行縮容。
這些運維操做對研發人員來講都是黑盒的,會將開發人員從繁瑣的運維工做中解放出來,只須要按運行時長對資源進行付費便可。
和 DevOps 概念提倡的是經過一系列工具和自動化的技術來下降運維的難度,促進研發運維一體化不一樣, Serverless 更像是一種 NoOps,即經過「不用作」的方式來解決「如何更高效作」的問題。
Serverless 應用引擎是面向應用的 Serverless PaaS 平臺,它向上抽象了應用的概念,支持 Spring Cloud、Apache Dubbo、HSF 等流行的開發框架,並經過 WAR 包、JAR 包和鏡像等多種方式部署應用。它的使用能夠經過下面這張圖來了解。
伯克利對 Serverless 將來的預測
儘管 Serverless 仍存在諸多的挑戰,可是咱們相信隨着市場規模的不斷擴大,這些挑戰會逐漸被解決。UC 伯克利對 Serverless 將來十年的發展趨勢作了如下幾點預測。
當前數據中心的資源利用率仍處於一個較低水平,特別是對於在線業務而言,日均資源使用率僅在 10% 左右,主要是因爲當今資源都是屬於獨享型的,無論你用不用,這些資源都須要保留。
一旦大規模使用 Serverless 以後,資源的使用由平臺統一調度,按需使用,總體的資源利用率會大幅提高,整個雲計算資源的使用成本無疑也會大幅下降。
隨着 Serverless 的不斷髮展,將來編程方式將會有很大的不一樣。不管是從成本的角度仍是使用的角度,咱們有理由相信下一個時代是 Serverless 的時代,並應該朝着這個方向不斷探索。
做者簡介:徐進茂(羅離) Java 開發工程師。現就任於阿里雲智能基礎設施事業部,主要負責阿里巴巴數據中心運營平臺的研發工做。
「 阿里巴巴雲原生微信公衆號(ID:Alicloudnative)關注微服務、Serverless、容器、Service Mesh等技術領域、聚焦雲原生流行技術趨勢、雲原生大規模的落地實踐,作最懂雲原生開發者的技術公衆號。」