跳到主要內容

從 DevOps 到 Serverless:通過“不用做”的方式解決“如何更高效做”的問題

作者 | 徐進茂(羅離) JAVA 開發工程師 



導讀:近年來,Serverless 一詞越來越熱,它已經逐漸成為了一種新型的軟件設計架構。和 DevOps 概念提倡的是通過一系列工具和自動化的技術來降低運維的難度,促進研發運維一體化不同, Serverless 更像是一種 NoOps,即通過"不用做"的方式來解決"如何更高效做"的問題。



DevOps 概述


DevOps 是一組用於促進開發和運維人員之間協作的過程、方法和系統的統稱。


DevOps 提倡通過一系列的技術和工具降低開發和運維人員之間的隔閡,實現從開發到最終部署的全流程自動化,從而達到開發運維一體化。通過將 DevOps 的理念引入到整個系統的開發過程中,能夠顯著提升軟件的開發效率,縮短軟件交付的周期,更加適應當今快速發展的互聯網時代。


說到 DevOps ,就必然會提到持續集成。持續集成指的是在軟件開發過程中,軟件開發人員持續不斷地將開發出來的代碼和其他的開發人員的代碼進行合併,每次合併后自動地進行編譯、構建,並運行自動化測試進行驗證,而不是等到最後各自開發完成后才合併在一起。


持續集成能從根本上提高一個團隊的軟件開發效率。在軟件開發過程中引入持續集成,可以幫助團隊及時的發現系統中的問題,並快速做出修復,不僅可以縮短軟件開發的時間,而且可以交付更具質量的系統。


基於 Docker 實現一個 DevOps 開發環境


一個 DevOps 開發環境需要滿足以下 8 點需求。



  • 環境一致性:在本地開發出來的功能,無論在什麼環境下部署都應該能得到一致的結果;


  • 代碼自動檢查:為了儘早發現問題,每一次代碼提交后,系統都應該自動對代碼進行檢查,及早發現潛在的問題,並運行自動化測試;


  • 持續集成:每次代碼提交后系統可以自動進行代碼的編譯和打包,無需運維人員手動進行;


  • 持續部署:代碼集成完畢后,系統可以自動將運行環境中的舊版本應用更新成新版本的應用並且整個過程中不會讓系統不可用;


  • 持續反饋:在代碼自動檢查、持續集成、持續部署的過程中,一旦出現問題,要能及時將問題反饋給開發人員以及運維人員。開發和運維人員收到反饋后對問題及時進行修復;


  • 快速回滾:當發現本次部署的版本出現問題時,系統應能快速回退到上一個可用版本;


  • 彈性伸縮:當某個服務訪問量增大時,系統應可以對這個服務快速進行擴容,保證用戶的訪問。當訪問量回歸正常時,系統能將擴容的資源釋放回去,實現根據訪問情況對系統進行彈性伸縮;


  • 可視化運維:提供可視化的頁面,可實時監控應用、集群、硬件的各種狀態。



為了滿足以上 8 點要求,設計出的 DevOps 開發環境如下圖所示。



整個環境主要由 6 部分組成:



  • 代碼倉庫 Gitlab

  • 容器技術 Docker

  • 持續集成工具 Jenkins

  • 代碼質量檢測平台 SonarQube

  • 鏡像倉庫 Harbor

  • 容器集群管理系統 Kubernetes


整個環境的運行流程主要分為以下 6 步:



  • 開發人員在本地開發並驗證好功能后,將代碼提交到代碼倉庫;


  • 通過事先配置好的 Webhook 通知方式,當開發人員提交完代碼后,部署在雲端的持續集成工具 Jenkins 會實時感知,並從代碼倉庫中獲取最新的代碼;


  • 獲取到最新代碼后,Jenkins 會啟動測試平台 SonarQube 對最新的代碼進行代碼檢查以及執行單元測試,執行完成后在 SonarQube 平台上生成測試報告。如果測試沒通過,則以郵件的方式通知研發人員進行修改,終止整個流程。若測試通過,將結果反饋給 Jenkins 並進行下一步;


  • 代碼檢查以及單元測試通過後, Jenkins 會將代碼發送到持續集成服務器中,在服務器上對代碼進行編譯、構建然後打包成能在容器環境上運行的鏡像文件。如果中間有步驟出現問題,則通過郵件的方式通知開發人員和運維人員進行處理,並終止整個流程;


  • 將鏡像文件上傳到私有鏡像倉庫 Harbor 中保存;


  • 鏡像上傳完成后, Jenkins 會啟動持續交付服務器,對雲環境中運行的應用進行版本更新,整個更新過程會確保服務的訪問不中斷。持續交付服務器會將最新的鏡像文件拉取到 Kubernetes 集群中,並採用逐步替換容器的方式進行對應用進行更新,在服務不中斷的前提下完成更新。



通過上述幾步,我們就可以簡單實現一個 DevOps 開發環境,實現代碼從提交到最終部署的全流程自動化。


但是自從 2014 年 AWS 發布 ASW Lambda 以來, Serverless 的概念開始逐漸火熱起來。各大雲廠商開始紛紛開始推出各自的 Serverless 產品,如 Google 的 Cloud Functions ,阿里雲的函數計算、Serverless應用引擎(SAE)等等。究竟什麼是Serverless 無服務計算呢?


什麼是 Serverless?


根據 CNCF (雲原生計算基金會)發布的 白皮書里的定義:



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 技術的產品有 Serverless 應用引擎和函數計算 FaaS。


Serverless 應用引擎


Serverless 應用引擎是面嚮應用的 Serverless PaaS 平台,它向上抽象了應用的概念,支持 Spring Cloud、Apache Dubbo、HSF 等流行的開發框架,並通過 WAR 包、JAR 包和鏡像等多種方式部署應用。它的使用可以通過下面這張圖來了解。



函數計算


FaaS 是 Serverless 所提供的服務的另一種形態。以阿里雲函數計算為例,阿里雲函數計算的流程大致如下圖所示。




  • 開發者在本地編寫代碼;


  • 代碼開發完成后通過命令行工具 fcli、fun 或者可視化界面控制台上傳到阿里雲函數計算平台;


  • 開發者上傳完代碼后,平台會自動啟動基於 Docker 的 DevOps 流程,對代碼進行編譯、打包成鏡像文件。並上傳到鏡像倉庫;


  • 開發者在平台是配置事件觸發器,當前阿里雲已經支持 OSS、HTTP、CDN、SLS、定時任務等多種形式的觸發器形式;


  • 當觸發器被觸發后,會到達事件調度器。平台會將鏡像快速啟動成容器並執行代碼,根據流量自動對服務進行彈性伸縮。保證代碼能正常並執行完成。



伯克利對 Serverless 未來的預測


儘管 Serverless 仍存在諸多的挑戰,但是我們相信隨着市場規模的不斷擴大,這些挑戰會逐漸被解決。UC 伯克利對 Serverless 未來十年的發展趨勢做了以下幾點預測。



  • 新型的 BaSS 存儲服務會被創造出來,這樣更多類型的應用可以遷移到 Serverless 平台上。這種存儲服務的性能會和本地存儲的性能相當,並提供長期和短期的存儲。更多適用於 Serverless 平台的硬件會被使用;


  • 由於更高級別的編程抽象以及更加細粒度的資源隔離,在無服務器計算平台上運行的代碼將會比傳統的方式更加安全可靠;


  • 隨着無服務器計算收費模式的不斷髮展,幾乎任何應用遷移到無服務器計算平台都會比原先的有服務器計算的方式的成本更低;


  • 有服務器計算在未來會促進 BaaS 的發展;


  • 雖然現有的有服務器計算不會消失,但是隨着 Serverless r技術的不斷髮展,有服務器計算在雲上所佔的比例會逐年下降;


  • 無服務器計算將會成為雲時代默認的編程方式,它將大規模取代傳統的基於服務器的編程方式,並終結傳統的 C/S 架構。



總結


當前數據中心的資源利用率仍處於一個較低水平,特別是對於在線業務而言,日均資源使用率僅在 10% 左右,主要是由於當今資源都是屬於獨享型的,不管你用不用,這些資源都需要保留。


一旦大規模使用 Serverless 之後,資源的使用由平台統一調度,按需使用,整體的資源利用率會大幅提升,整個雲計算資源的使用成本無疑也會大幅降低。


隨着 Serverless 的不斷髮展,未來編程方式將會有很大的不同。無論是從成本的角度還是使用的角度,我們有理由相信下一個時代是 Serverless 的時代,並應該朝着這個方向不斷探索。


作者簡介:徐進茂(羅離) Java 開發工程師。現就職於阿里雲智能基礎設施事業部,主要負責阿里巴巴數據中心運營平台的研發工作。



" 阿里巴巴雲原生微信公眾號(ID:Alicloudnative)關注微服務、Serverless、容器、Service Mesh等技術領域、聚焦雲原生流行技術趨勢、雲原生大規模的落地實踐,做最懂雲原生開發者的技術公眾號。"


本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※如何讓商品強力曝光呢? 網頁設計公司幫您建置最吸引人的網站,提高曝光率!!



網頁設計一頭霧水??該從何著手呢? 找到專業技術的網頁設計公司,幫您輕鬆架站!



※想知道最厲害的台北網頁設計公司推薦台中網頁設計公司推薦專業設計師"嚨底家"!!



Orignal From: 從 DevOps 到 Serverless:通過"不用做"的方式解決"如何更高效做"的問題

留言

這個網誌中的熱門文章

旅館疑有臭蟲 北市府稽查找嘸

有民眾抱怨,日前投宿的北市某旅館疑似出現臭蟲,北市觀傳局與衛生局、環保局聯合稽查,但因為沒有發現蟲屍,無法確認該旅館是否真有臭蟲,市府下周將召開專家會議處理該案,市長蔣萬安則允諾會以最高規格防範臭蟲。 北市某旅館傳出疑有臭蟲,議員陳宥丞23日在市政總質詢詢問市府處理進度,並指出法國、澳洲、韓國的臭蟲,起初都現蹤公車或地鐵卻沒被發現,直到大規模爆發,才付出大量社會成本處理,而且一般殺蟲劑無法殺掉臭蟲,北市是否有因應措施? 觀傳局主任祕書蕭君杰表示,21日聯合環保局、衛生局到該旅館稽查,但沒有發現臭蟲,也沒有查到蟲卵跡象,只能檢查現場環境是否符合衛生相關規定,但環保局有指導業者如何針對臭蟲清潔消毒。觀傳局長王秋冬指出,下周會與專家學者召開會議,以最高規格處理此案。 想知道購買電動車哪裡補助最多? 台中電動車 補助資訊懶人包彙整 ;推薦評價好的 iphone維修 中心擁有專業的維修技術團隊,同時聘請資深iphone手機維修專家,現場說明手機問題,快速修理,沒修好不收錢住家的頂樓裝 太陽光電 聽說可發揮隔熱功效一線推薦東陽能源擁有核心技術、產品研發、系統規劃設置、專業團隊的太陽能發電廠商。 網頁設計 一頭霧水該從何著手呢? 回頭車 貨運收費標準宇安交通關係企業,自成立迄今,即秉持著「以誠待人」、「以實處事」的企業信念 台中搬家公司 教你幾個打包小技巧,輕鬆整理裝箱!還在煩惱搬家費用要多少哪?台中大展搬家線上試算搬家費用,從此不再擔心「物品怎麼計費」、「多少車才能裝完」 台中搬家 公司費用怎麼算?擁有20年純熟搬遷經驗,提供免費估價且流程透明更是5星評價的搬家公司好山好水 露營車 漫遊體驗露營車x公路旅行的十一個出遊特色。走到哪、玩到哪,彈性的出遊方案,行程跟出發地也可客製 廣告預算用在刀口上, 台北網頁設計 公司幫您達到更多曝光效益; 電動車補助 衛生局疾病管制科長張惠美表示,現場查到與臭蟲無關的多項衛生缺失,包含未提供從業人員體檢報告、簡易外傷藥品及器材超過有效期、紗窗有破損等,已要求業者2周內改善,將擇期複查,如果複查不合格,將依法裁罰3000元至2萬元罰鍰。 但陳宥丞批評,環保局未公告哪些藥劑能殺死臭蟲,很擔心北市會和韓國、法國一樣,把臭蟲防治交給民間恐造成大規模爆發,且北市內的廢棄傢俱回收廠也有可能成為臭蟲孳生的...

必知必會-存儲器層次結構

相信大家一定都用過各種存儲技術,比如mysql,mongodb,redis,mq等,這些存儲服務性能有非常大的區別,其中之一就是底層使用的存儲設備不同。作為一個程序員,你需要理解存儲器的層次結構,這樣才能對程序的性能差別瞭然於心。今天帶大家了解下計算機系統存儲器的層次結構。 存儲技術 首先了解下什麼是存儲器系統? 實質上就是一個具有不同容量、成本和訪問時間的存儲設備的層次結構。從快到慢依次為:CPU寄存器、高速緩存、主存、磁盤; 這裏給大家介紹一組數據,讓大家有一個更清晰的認識: 如果數據存儲在CPU寄存器,需要0個時鐘周期就能訪問到,存儲在高速緩存中需要4~75個時鐘周期。如果存儲在主存需要上百個周期,而如果存儲在磁盤上,大約需要幾千萬個周期! -- 出自 CSAPP 接下來一起深入了解下計算機系統涉及的幾個存儲設備: 隨機訪問存儲器 隨機訪問存儲器(RAM)分為靜態RAM (SRAM) 和動態RAM(DRAM)。SRAM的速度更快,但也貴很多,一般不會超過幾兆字節,通常用來做告訴緩存存儲器。DRAM就是就是我們常說的主存。 訪問主存 數據流是通過操作系統中的總線的共享电子電路在處理器和DRAM之間來來回回。每次CPU和主存之間的數據傳送都是通過一系列複雜的步驟完成,這些步驟成為總線事務。讀事務是將主存傳送數據到CPU。寫事務從CPU傳送數據到主存。 總線是一組并行的導線,能攜帶地址、數據和控制信號。下圖展示了CPU芯片是如何與主存DRAM連接的。 那麼我們在加載數據和存儲數據時,CPU和主存到底是怎樣交互實現的呢? 首先來看一個基本指令,加載內存數據到CPU寄存器中: movq A,%rax 將地址A的內容加載到寄存器%rax中,這個命令會使CPU芯片上稱為總線接口(bus interface)的電路在總線上發起讀事務,具體分為三個步驟: CPU將地址A放到系統總線上,I/O橋將信號傳遞到內存總線。詳情看下下圖a 主存感覺到內存總線上的地址信號,從內存總線讀地址,從DRAM取出數據字,將其寫到內存總線。I/O橋將內存總線信號翻譯成系統總線信號,沿着系統總線傳遞到CPU總線接口。下圖b CPU感覺到系統總線上的數據,從總線上讀數據,並將數據複製到寄存器%rax...

2016年電動車和插電式混合動力車銷量預計將超過70萬輛

中汽協日前預測,2016年全國電動汽車和插電式混合動力車的銷量預計將超過70萬輛,較2015年的銷量增長一倍。 2015年電動車和插電式混合動力車的合併銷量為331092輛,較2014年增長了340%。其中包括247482輛電動車和83610輛插電式混合動力車,在24萬輛多的電動汽車銷量中,包括146719輛乘用車,另有100763輛為商用車。插電式混合動力車的銷量中,60663輛為乘用車,22947輛為商用車。 根據2015年起草的藍圖,政府計畫到2020年在全國範圍內新建12000個充電站和480枚充電樁。2014年年底,全國共有780個充電站共31000枚充電樁。2015年政府還為27個省市自治區設定了電動車的最低銷量目標。 政府預計,這些措施到位後,自主品牌車企的電動車和插電式混合動力車銷量到2020年可達100萬輛,到2025年可達300萬輛。 本站聲明:網站內容來源於EnergyTrend https://www.energytrend.com.tw/ev/,如有侵權,請聯繫我們,我們將及時處理 【其他文章推薦】 ※為什麼 USB CONNECTOR 是電子產業重要的元件? ※ 網頁設計 一頭霧水??該從何著手呢? 找到專業技術的 網頁設計公司 ,幫您輕鬆架站! ※想要讓你的商品成為最夯、最多人討論的話題? 網頁設計公司 讓你強力曝光 ※想知道最厲害的 台北網頁設計公司推薦 、 台中網頁設計公司推薦 專業設計師"嚨底家"!! Orignal From: 2016年電動車和插電式混合動力車銷量預計將超過70萬輛