Lightbend最近調(diào)查了2100個(gè)JVM(包括Java和Scala)開發(fā)者,進(jìn)行了以下研究:
開發(fā)趨勢和IT基礎(chǔ)設(shè)施趨勢之間的相互關(guān)系。 各家公司在怎樣用最新技術(shù)實(shí)現(xiàn)他們的應(yīng)用程序。 新興技術(shù)的實(shí)際生產(chǎn)使用率統(tǒng)計(jì)分析。報(bào)告全文題為:“2016企業(yè)開發(fā)趨勢:2100個(gè)JVM開發(fā)者的云、容器和微服務(wù)分析”,分析了從使用重量級(jí)J2EE服務(wù)器到微服務(wù)和輕量級(jí)容器來構(gòu)建應(yīng)用程序,這個(gè)變革背后的主要驅(qū)動(dòng)力。
如下圖所示,參與調(diào)查的開發(fā)者來自于不同的公司:
調(diào)查主要得出了以下三個(gè)發(fā)現(xiàn):
微服務(wù)和快速數(shù)據(jù)是現(xiàn)代應(yīng)用程序開發(fā)的主要驅(qū)動(dòng)力。 輕量級(jí)容器在使基礎(chǔ)設(shè)施大眾化,并且在挑戰(zhàn)著Java EE應(yīng)用程序服務(wù)器。 可移植性和彈性的優(yōu)勢在推動(dòng)著“本地云”的進(jìn)程。當(dāng)今的分布式服務(wù)都是為前所未有的大量數(shù)據(jù)而設(shè)計(jì)的,它們需要有更加彈性的、松耦合和可擴(kuò)展的反應(yīng)式系統(tǒng)。
這種向反應(yīng)式系統(tǒng)演化的驅(qū)勢可以從反應(yīng)式宣言中找到答案:
發(fā)生這些變化主要是因?yàn)榻陙韺?yīng)用程序的需求已經(jīng)急劇改變了。幾年前,一套大型系統(tǒng)還會(huì)運(yùn)行在幾十臺(tái)服務(wù)器上,命令響應(yīng)時(shí)間要幾秒鐘,維護(hù)一次要停服幾小時(shí),數(shù)據(jù)以GB來計(jì)算。可現(xiàn)在應(yīng)用程序已經(jīng)到處都可以部署了,從移動(dòng)終端到基于云的集群,上面運(yùn)行著幾千個(gè)多核處理器。用戶希望得到毫秒級(jí)的響應(yīng),而且要100%在線。數(shù)據(jù)也開始用PB來衡量了。當(dāng)今的需求已經(jīng)不可能用過去的軟件架構(gòu)來滿足了。
頻繁的發(fā)布周期在保持對連續(xù)的數(shù)據(jù)的需求方面起著關(guān)鍵作用。如報(bào)告中所說:
如果你還需要12到18個(gè)月才能發(fā)布一次軟件,可能你就已經(jīng)退化回瀑布模型了。
微服務(wù)與快速數(shù)據(jù)
現(xiàn)在的企業(yè)應(yīng)用在設(shè)計(jì)之初就都會(huì)關(guān)注實(shí)時(shí)數(shù)據(jù)和流。微服務(wù)是一個(gè)在應(yīng)用開發(fā)中較新的趨勢,起源于面向服務(wù)的架構(gòu)。如報(bào)告中所說:
十年前,面向服務(wù)的架構(gòu)(Service-Oriented Architecture,SOA)里面包含了許多和微服務(wù)相同的原則,在設(shè)計(jì)接口和解耦應(yīng)用程序這些方面也做得很出色。但SOA沒有全面成功的原因在于對基礎(chǔ)設(shè)施的強(qiáng)調(diào)不夠。現(xiàn)在到處都在采用微服務(wù),原因在于除了服務(wù)隔離之外,它還包括了部署和生命周期方面的考慮,這些都是SOA沒能處理好的問題。
C2B2的首席咨詢顧問Matt Brasier去年末就微服務(wù)和SOA之間的爭執(zhí)發(fā)表過一篇博客:
SOA和微服務(wù)都是相同規(guī)則集的內(nèi)容,只是應(yīng)用在公司內(nèi)的不同層。
微服務(wù)的存在也要?dú)w功于SOA原則為大家所接受。
SOA與微服務(wù)之爭的真正答案應(yīng)該是它們分別適合于不同的解決方案,但因?yàn)楫a(chǎn)生的應(yīng)用程序數(shù)量要遠(yuǎn)遠(yuǎn)多于企業(yè)架構(gòu)的數(shù)量,因此微服務(wù)框架就顯得比ESB更適合于你的項(xiàng)目。
Payara和C2B2的創(chuàng)建者和董事Steve Millidge聲稱:
微服務(wù)與SOA沒什么不同,它還是在說SOA那些事。
除此之外,調(diào)查結(jié)果也表明企業(yè)中向微服務(wù)遷移呈增多趨勢,如下圖所示:
去年末大家已經(jīng)預(yù)見到了這種微服務(wù)的增長趨勢,今年早期InfoQ也討論了這一點(diǎn):“2016年將成為Java EE微服務(wù)之年”。
調(diào)查結(jié)果顯示,如Apache Spark、Apache Kafka和Akka等為了滿足持續(xù)數(shù)據(jù)的需求而設(shè)計(jì)的框架已經(jīng)越來越受大家歡迎,如下圖所示:
盡管微服務(wù)的增長趨勢看著很有前途,在Lightbend的報(bào)告中卻有一個(gè)關(guān)鍵點(diǎn)提到:
看起來微服務(wù)很容易運(yùn)維,但事實(shí)真的如此嗎?對于那些真的在生產(chǎn)環(huán)境中運(yùn)行微服務(wù)的公司來說,有34%表達(dá)到對運(yùn)維工具成熟度的擔(dān)憂(在調(diào)查結(jié)果中,有22%表示運(yùn)維工具的成熟度是微服務(wù)的主要挑戰(zhàn))。
InfoQ討論了從七個(gè)微服務(wù)反模式中學(xué)到的經(jīng)驗(yàn)。OpenCredo的首席科學(xué)家Daniel Bryant談到了微服務(wù)的七宗罪,以及如何避免它們。在這篇Basho博客上,Sean Kelly也談到了一些關(guān)于微服務(wù)的錯(cuò)誤見解,而大家還常常以它們作為遷移到微服務(wù)的指引。在OverOps博客中,Alex Zhitnitsky做了一次“對框架的徹底研究……來看明白它的實(shí)現(xiàn),并了解它們到底是干什么的”。其中涉及到的框架有Java EE、Lightbend的Lagom、Pivotal的Spring Boot、Dropwizard和Spotify的Apollo。
輕量級(jí)容器
輕量級(jí)容器是構(gòu)建的要素,因?yàn)殚_發(fā)者們“都對把容器當(dāng)成可移植基礎(chǔ)設(shè)施寄予了厚望,他們等這個(gè)已經(jīng)等了很久了”。如下圖所示,有30%的受訪者對容器進(jìn)行了實(shí)驗(yàn),22%的受訪者正把容器用于生產(chǎn)環(huán)境,還有22%的受訪者在試用它們。
調(diào)查結(jié)果顯示,大家主要關(guān)注的容器有Docker、Docker Swarm、Kubernetes和Marathon(一種Mesos和DC/OS的容器孵化平臺(tái)),如下圖所示:
Docker有大概50家用戶,包括ADP、PayPal、Uber、Lyft和Merck。Kubernetes有大概20家用戶,包括SAP、Ancestry和eBay。
Lightbend的報(bào)告中有個(gè)關(guān)于容器的關(guān)鍵點(diǎn)提到:
開發(fā)者們認(rèn)為,容器有很大可能會(huì)打破JVM的統(tǒng)治地位——有57%的受訪者認(rèn)為容器會(huì)打破JVM的統(tǒng)治地位,32%的受訪者還不太確定,而只有11%的受訪者認(rèn)為容器是被過度宣傳了。
結(jié)論
Lightbend的報(bào)告中還包括下面這些關(guān)鍵點(diǎn):
在采用微服務(wù)和輕量級(jí)容器方面Scala開發(fā)者走在了Java開發(fā)者前面:
有42%的Scala開發(fā)者把微服務(wù)用在了生產(chǎn)環(huán)境中,只有28%的Java開發(fā)者這么做了。 有31%的Scala開發(fā)者把容器用在了生產(chǎn)環(huán)境中,Java開發(fā)者的對應(yīng)數(shù)字是21%。小公司(員工數(shù)不超過200)中的開發(fā)者比大公司的開發(fā)者在做技術(shù)決策方面有更大的影響力。
在實(shí)現(xiàn)IoT應(yīng)用程序時(shí)容器可能是大家更喜歡的選擇。
查看英文原文:Enterprise Development Trends 2016: A Survey of JVM Developers by Lightbend