1. 程式人生 > >Spring全家桶帶來雲時代的軟件開發變革

Spring全家桶帶來雲時代的軟件開發變革

現象 ont for 總結 公有 最新 集成 RoCE 管理方式

技術分享圖片

快速發展和變化的業務需求所帶來的挑戰正在驅動現代企業數字化轉型,雲原生應用系統的構建是其中最為重要環節之一。

目前,雲原生應用開發框架Spring(包括Spring MVC、Spring Boot、Spring Cloud、Spring Cloud Dataflow)已經占據Java軟件開發框架的統治地位。在Snyk最新的2018 JVM生態調查中表明:40%被調研的開發者正在使用Spring Boot,36%被調研的開發者正在使用Spring MVC;2018年也是Spring Boot首次超過Spring MVC成為最受歡迎的Java軟件開發框架。Spring Boot和Spring MVC都是Spring家族的軟件開發框架。

Spring開發框架自2002年誕生以來一直備受開發者青睞,如今伴隨著雲計算時代的發展,越來越強大的Spring已儼然成為現代企業構築雲原生應用系統和DevOps體系軟件開發框架之事實標準和最佳實踐。

Spring雲原生應用開發框架之前世今生

技術分享圖片

第一代的Spring開源開發框架誕生於2002年,這是針對企業級Java應用的開發框架。Spring的創造者成立了SpringSource公司,相繼收購了Groovy、Grail、Cloud Foundry等開源軟件的主要支持公司,並獲得了世界頂級核心開發者和開源社區貢獻者;2009年,雲計算領導者VMware收購SpringSource。2013年由Spring和Cloud Foundry核心成員組成極具創新的Pivotal軟件公司。至此,Pivotal成為Spring和Cloud Foundry,GemFire等開源社區的最重要支持者、貢獻者和領導者。

Spring Boot誕生於2013年,這是一個輕量級的Spring框架,可以快速創建基於Spring框架的應用並立刻運行起來。Spring Cloud誕生於微服務極為流行的2015年,其目標是成為微服務架構在Java領域的落地標準。隨著企業軟件向雲端遷移,以及更多的企業雲原生應用創建,Spring家族全套軟件產品(Spring全家桶)已經成為基於微服務的DevOps主流軟件開發環境、平臺和工具。在Pivotal公司的全力投資和貢獻支持下,Spring社區和Spring全家桶正在全面繁榮並被企業應用設計開發者選擇為技術路線。

2018年11月初,Spring再次見證了中國開發者的熱情。來自Pivotal 公司的Spring技術布道師、Spring開源社區專家、開源貢獻者、6本Spring和Java等相關書籍的作者Josh Long在SpringOne Tour 2018北京站上表示:“中國互聯網的規模和發展速度至少要比矽谷早一年,來自中國的需求和中國開發者正在成為推動Spring發展的主力軍。”

此次SpringOne 北京站上,來自Pivotal公司的Josh Long、Spencer Gibb、Mark Heckler、Michael Cote、Paul Czarkowski等業界頂級開發者和架構師為中國開發者帶來了關於Cloud Natvie Spring、Spring Boot新特性、SpringCloud Gateway、Spring Cloud Apps on Pivotal Cloud Foundry等精彩的演講和現場代碼演示。

新一代雲原生軟件開發環境

技術分享圖片

(上圖為Pivotal 公司的Spring技術布道師Josh Long)

自2012年開始,Pivotal公司的Josh Long每年都來到中國,在北京、上海、杭州等地與中國的技術人員交流。Josh Long代表Pivotal和Spring多次到訪大型中國互聯網和交易平臺公司,對於中國互聯網技術開發人員所做的事情,感到非常驚訝。2013年4月,他在Spring社區發表文章《Spring的中國規模》,向外界介紹了中國互聯網雙十一期間的巨大交易規模挑戰及其Spring最佳實踐。

Josh Long在其2013年文章中介紹到,中國互聯網及交易平臺的技術開發人員廣泛應用Pivotal技術,包括核心Spring框架、Spring MVC、Spring Security、Groovy等等,令人感到了Pivotal的開源軟件和平臺的強大能量。Josh Long表示,中國技術開發人員廣泛采用Spring框架,而這一框架也已經普遍應用於Facebook、Google、Twitter等大型全球化互聯網公司,經過規模商業環境檢驗,因而中國企業和互聯網公司能夠很快地完成從開發到向生產環境的軟件開發生命周期。

Spring框架的好處在於降低了大規模分布式軟件開發成本和難度、提高了團隊之間的溝通效率以及快速叠代,尤其適合小型敏捷團隊和代碼的分布式開發,並且很容易水平擴展以應對業務快速增長、變化。不同於Ruby on Rails這類的“強意見”開發工具,Spring Boot既提供了針對場景的完整技術方案,也可以把這些設置全部拋棄,讓開發者靈活選擇自己的技術方案。Spring Cloud則是面向雲環境的一站式微服務管理解決方案,讓開發者專註於代碼開發即可,而不必耗費精力在雲基礎設施管理上。

Spring框架包括SpringMVC、SpringBoot、Spring Cloud、Spring Cloud Dataflow集合的完整解決方案。除了提供基本雲原生微服務構建,還提供全面的服務治理和配套設置,整體優於其它基於開源的方案。框架吸收了Netflix、Facebook、Google、Twitter等多家大型頂級公司的技術所長,融合貫通之後又提供了簡化用戶體驗的產品。

目前,Spring Cloud已經針對Google雲GCP、微軟雲Azure、AWS等提供了API,可以流暢接入這些公有雲基礎設施。2018年10月30日,Spring Cloud發布了Spring Cloud for Alibaba 0.2.0版本,旨在擴展更加廣泛的多雲生態系統,充分展開合作,讓Spring開發者具備更佳的靈活性和更多選擇,輕松使用Spring Boot和Spring Cloud開發Java應用。

再次顛覆企業級軟件開發

技術分享圖片

(上圖為Pivotal軟件開發布道師Spencer Gibb)

SpringOne Tour 2018北京站上,Josh Long以及另一位全球Spring社區重量級人物、Pivotal軟件開發布道師Spencer Gibb一致認為,Spring技術最新、最重要的更新就是Spring Framework 5.0以及其所推行的新企業級軟件開發模型:Reactive Programming(響應式編程)。

什麽是Reactive Programming? Reactive Programming對開發者的收益是什麽呢?簡單理解,Reactive Programming的好處就是異步處理機制。在傳統的單機時代,所有的邏輯、流程等機制都是按順序串行的;而到了分布式環境中,一方面把一個大的邏輯或流程分拆為若幹小邏輯和小流程後放到不同的機器上處理,處理完畢再把結果合並回來,這個過程仍然是同步並行執行的;而更進一步就是異步處理。響應式編程提供了另一種編程風格,專註於構建對事件做出響應的應用程序。

對於雙十一這樣巨大的數據和交易規模,即使是分布式處理也不能滿足其需求,因此大型互聯網公司早已開始探索異步處理機制。所謂異步處理機制,把一個大的邏輯或流程拆分成更小的部分後,隨機交給不同的機器處理,處理結果的回收也不必等其它機器處理完畢,而是處理完成就馬上回收。異步處理可以理解為“交響樂”,每個樂器按不同的步調、不同的頻率、不同的音階各自處理後,整體仍然是很和諧完整的樂章。

Josh Long解釋Reactive Programming的一大收益就是基於異步處理機制的I/O,用同樣的資源處理更多的I/O請求而不用一直占用系統資源。Reactive Programming的另一個收益就是更加穩定的編程模型。在互聯網的大型分布式處理系統中,服務器等計算資源的宕機是隨時發生的。因此在編寫互聯網大型分布式軟件時,要把底層基礎設施的隨時宕機或各種意外情況都要考慮進代碼中,無服務器編程就是應對這一挑戰而產生的編程模式。Reactive Programming則通過代碼本身,讓開發者先天要考慮“系統如何失敗”這一問題,從而讓軟件更具有彈性,系統更加健壯。

Pivotal如何組織Spring的技術進程?

技術分享圖片

(上圖為熱情的中國Spring開發者們)

Pivotal公司是Spring開源技術背後的重要推動者,很多Spring的重要貢獻者都在Pivotal公司任職。那麽,Pivotal是如何考慮和組織Spring的技術發展呢?

Spencer Gibb在Pivotal負責Spring Cloud的開發工作,Spring Cloud是Spring最新的技術成就,也是面向雲原生環境的管理解決方案。在雲計算環境中,由於在雲數據中心采用了更多的節點、更多的X86服務器以及更多的軟硬件,導致整個分布式系統更加復雜、更加傾向於出現各類問題。當前有不少雲環境的開源管理解決方案,例如Eureka等都可以幫助開發者管理雲基礎設施環境,但這些工具往往需要開發者自己做很多配置和管理工作,Spring Cloud則把很多工作都以自動化方式完成了。

最新發布的Spring Cloud Gateway就是這一“用戶友好”思想的產物。Spring Cloud Gateway是基於Spring Framework 5.0、Spring Boot 2.0和Project Reactor等技術開發的網關,旨在為微服務架構提供一種簡單而有效的統一API路由管理方式。Spring Cloud Gateway作為Spring Cloud生態系中的網關,不僅提供統一的路由方式,並且提供網關基本功能,如安全、監控/埋點和限流等等。在企業級環境中,Spring Cloud Gateway既可以路由給傳統Legacy系統,也可以路由給Pivotal Cloud Foundry私有雲系統等。

Spencer Gibb表示,Spring Cloud Gateway的開發歷時兩年時間,在2018年6月發布了GA版本。Spring Cloud之前已經集成了Zuul1,兩年前當Netflix發布Zuul2的時候,Pivotal的Spring開發團隊開始思考是否可以提供更好的開發者體驗,於是就在Project Reactor、Spring Framework 5.0等其它Pivotal Spring團隊的工作基礎上,專註於Gateway這樣一個小的領域進行開發。Spencer Gibb形容這有點像整車開發與單個部件開發之間的關系,Pivotal公司有不同的Spring團隊負責“整車開發”以及其它部件的開發,這樣Spencer Gibb所帶領的Spring Cloud團隊就可以更加專註。

Spencer Gibb介紹Pivotal Spring團隊是按年度來規劃Spring的技術進展。Pivotal Spring團隊每年兩次聚集到一起討論業界的最新趨勢和技術進展,平時也不斷從SpringOne技術社區、Github以及Twitter等處收集開發者和用戶的反饋,結合業界最新的技術進展以及用戶反饋的結果後,Pivotal的Spring團隊就可以設定下一階段的開發方向。

Josh Long和Spencer Gibb都註意到了中國龐大的Spring生態及軟件開發者,這也是Pivotal公司近年來不斷投資中國市場的SpringOne系列活動的主要原因。正如Josh Long所觀察的現象,在矽谷開發一個互聯網應用可能要數年時間並在多個市場成功後才能成長為一個巨型系統,而中國一個市場就可以在一年間支撐起巨型互聯網系統,這種獨特的中國互聯網規模為Spring等技術提供了巨大的發展空間。

采訪過程中Josh Long熱情的表示,由於語言的問題,中國開發者對Spring的貢獻難以被中國以外的市場察覺和認知。他歡迎更多的中國開發者到Spring.io上交流。他本人從2011年1月開始每周二會發布一個當周的Spring社區更新,迄今已經堅持8年了,從未間斷;現在他還會提供每月的匯總,方便更多的開發者了解Spring社區和技術進展。Josh Long 還有自己的博客,“歡迎大家到我的博客上,加我的微信,我很願意跟大家交流”。

總結而言,微服務、容器服務、DevOps、CI/CD相結合共同支持企業的雲原生應用體系構建。Pivotal 公司作為Cloud Native雲原生概念的提出者、領域的技術先驅與倡導者,不斷大力推動Spring開源社區和生態,促進和提供微服務系統構建的平臺,框架和工具,Spring Boot、Spring Cloud就是最強大框架之一。Pivotal雲原生平臺結合Spring框架按照三階段架構持續發展,支持從開發、測試到生產的雲原生應用全生命周期:第一階段為雲原生應用框架、雲原生運行時平臺、雲原生運維;第二階段為指導現代應用和微服務架構設計的12要素、容器編排、基礎設施自動化;第三階段為Cloud Foundry Buildpacks及Spring Cloud、Cloud Foundry彈性運行時以及Cloud Foundry BOSH多雲運維管理平臺;而在最下層就是支持這一系列變革的雲原生文化。除了雲原生平臺的演進外,Pivotal的大數據及數據平臺Greenplum和GemFire也在與時俱進,支持最新的機器學習等新興企業級應用。

Spring軟件家族不僅帶來了雲時代的軟件開發變革,也將有機會讓中國開發者和中國的規模效應產生全球影響力,這也是中國在全球軟件業的機遇。 基於Spring構建的雲原生應用系統,結合Pivotal Application Service雲原生平臺、Pivotal Container Service容器服務平臺、Pivotal Function Service無服務器平臺,加之完整的現代雲原生系統構建方法論,將幫助現代企業更加順暢地完成數字化轉型之路。(文/寧川)

Spring全家桶帶來雲時代的軟件開發變革