為什么說2015年將是微服務(wù)架構(gòu)元年?
譯文編者按:微服務(wù)架構(gòu)(MSA)是一種架構(gòu)概念,旨在通過將功能分解到各個離散的服務(wù)中以實現(xiàn)對解決方案的解耦。你可以將其看作是在架構(gòu)層次而非獲取服務(wù)的類上應(yīng)用很多SOLID原則。微服務(wù)架構(gòu)是個很有趣的概念,它的主要作用是將功能分解到離散的各個服務(wù)當(dāng)中,從而降低系統(tǒng)的耦合性,并提供更加靈活的服務(wù)支持。
【51CTO譯文】作為加快Web和移動應(yīng)用程序開發(fā)進程的一種方法,微服務(wù)架構(gòu)在2014年開始受到關(guān)注。今年,更多的企業(yè)組織會獲得微服務(wù)帶來的好處。
使用服務(wù)構(gòu)建應(yīng)用程序這個概念一直具有吸引力。要是既然可以匯編通過標(biāo)準(zhǔn)API利用相同服務(wù)的多個應(yīng)用程序,何必要從頭開始編寫代碼呢?只要正確配置那些服務(wù),你應(yīng)該能獲得巨大的規(guī)模經(jīng)濟效益。
在過去,試圖踐行這個概念的做法在過度設(shè)計(尤其是CORBA 和 SOA趨勢)的重壓之下未能如愿以償。但是微服務(wù)最令人關(guān)注的方面之一在于,使用微服務(wù)在過去是開發(fā)人員推動之下的草根現(xiàn)象。大致上來說,微服務(wù)就是可通過API訪問的、單一用途的小型程序。這回,服務(wù)理念深得人心。
想了解微服務(wù)架構(gòu)的實際案例,只要看一下Stefan Borsje在2014年撰寫的這篇博客:How we build microservices at Karma,他是專門向廣大消費者銷售無線熱點設(shè)備的Karma公司的***技術(shù)官兼聯(lián)合創(chuàng)始人。據(jù)Borsje聲稱,該公司在開發(fā)網(wǎng)上商店時,其開發(fā)團隊“無意中使用了”微服務(wù)。
我們從一個大型的后端應(yīng)用程序著手,必要時將它分解成多個部分。隨著不斷地構(gòu)建應(yīng)用程序,我們開始清楚自己在努力解決的那個問題;而我們對這個問題越熟悉,我們需要為該應(yīng)用程序的不同部分設(shè)置邊界就來得越明顯。每當(dāng)我們遇到應(yīng)該是獨立部分的組件,我們就將它變成一個服務(wù)。
起初,這些部分相對較大,但是與其他用戶采用微服務(wù)的情況一樣,我們也發(fā)現(xiàn)那些部分可以變得越來越小。
比如說,那個整體式應(yīng)用程序最初有一個“商店”組件,Borsje的開發(fā)團隊將其細(xì)分為訂單處理、訂單執(zhí)行和跟蹤等服務(wù)。連面向公眾的前端也被分解成了多個服務(wù)。Borsje表示,將細(xì)粒度功能分隔成獨立服務(wù)大幅提升了工作效率,這在一方面歸功于開發(fā)人員在開發(fā)時不需要操心整體式應(yīng)用程序的所有依賴項。
對Karma來說,微服務(wù)存在的***問題在于測試方面。正如Borsje所說:“行動和最終結(jié)果相距甚遠(yuǎn),以至于很難發(fā)現(xiàn)準(zhǔn)確的因果關(guān)系。整條鏈中可能會出現(xiàn)問題,但這條鏈中到底哪個環(huán)節(jié)出了問題呢?”
《敏捷宣言》一書的合著者Martin Fowler在去年3月份整理出了人們青睞微服務(wù)的原因,隨后在11月份發(fā)布了一篇演示文稿,較為詳細(xì)地概述了多層微服務(wù)測試體系。他支持單個服務(wù)的單元測試,這不足為奇,不過他承認(rèn)這不足以確定整個系統(tǒng)是否在正常運行。他貼心地列出了一系列整合、組件、契約和端到端測試策略,這些策略有望幫助開發(fā)人員盡量弄明白微服務(wù)最棘手的問題之一。
另一個問題是:你無法總是預(yù)測哪些微服務(wù)在某些情形下可能無力滿足需求。我確信,這是Karma將其電子商務(wù)平臺部署在亞馬遜網(wǎng)絡(luò)服務(wù)(AWS)上的一個原因。在AWS環(huán)境下,自動擴展功能能夠在有需要的地方添加計算能力,有助于確保沒有哪個服務(wù)成為瓶頸。請注意:微服務(wù)的典型代表Netfilx也使用AWS――換句話說,微服務(wù)和云相輔相成。從理論上來說,你可以使用VMware或OpenStack,自行構(gòu)建具有自動擴展功能的私有云,但是這么做困難重重,這是公有云勝出的一大原因。
支持微服務(wù)的另一項***技術(shù)是Docker,這項技術(shù)用于包裝應(yīng)用程序,然后將它們部署在Linux容器中。事實證明,微服務(wù)和Docker可謂是天作之合,這是各大公有云現(xiàn)在都支持Docker的一大原因。
很顯然,沒有人聲稱微服務(wù)解決得了所有問題。但是微服務(wù)架構(gòu)可能會在其他基于服務(wù)的解決方案失敗的地方取得成功,因為它是自下而上出現(xiàn)的。開發(fā)人員確定服務(wù)類型和服務(wù)的細(xì)粒度;隨著這股趨勢波及到大企業(yè),開發(fā)團隊就能夠決定哪些服務(wù)對整個企業(yè)而言是同類中***的服務(wù)。
如果使用過去的硬連線基礎(chǔ)設(shè)施,不可能實現(xiàn)這種臨時擴建(ad hoc build-out)。同樣重要的是,開發(fā)人員在協(xié)作方面已大有改進,文化的轉(zhuǎn)變有助于自然有序地構(gòu)建軟件架構(gòu),而不是遵守從上面下達(dá)的命令和規(guī)定。
據(jù)我所聞,許多企業(yè)的開發(fā)人員已經(jīng)在采用微服務(wù)架構(gòu),無論管理層知情還是不知情。借助合適的云基礎(chǔ)設(shè)施,無論是公有云還是私有云, 微服務(wù)架構(gòu)不僅能夠提高開發(fā)人員的工作效率,還能幫助開發(fā)人員開發(fā)出以往不可能構(gòu)建的新型應(yīng)用程序。
英文原文:Why 2015 will be the year of microservices
布加迪編譯