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

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

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

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

目前,雲原生應用開發框架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全家桶帶來雲時代的軟體開發變革

第一代的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等精彩的演講和現場程式碼演示。

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

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

(上圖為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應用。

再次顛覆企業級軟體開發

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

(上圖為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全家桶帶來雲時代的軟體開發變革

(上圖為熱情的中國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無伺服器平臺,加之完整的現代雲原生系統構建方法論,將幫助現代企業更加順暢地完成數字化轉型之路。(文/寧川)