微服務是如何演變的
微服務的概念產生是順應這樣的需求:為了開發出速度更快、更有彈性且用戶體驗更佳的應用。這個概念等同于具有可擴展性的自動化系統,在簡單的商業化架構上運行軟件。應用快速開發的需求影響到了全部公司,以及如何看待歷來業務安排的方式。來自微服務的新實踐代表著需要小型團隊以對于公司來說陌生的方式——自上而下進行迭代。這意味著企業運作的方式將獲得徹底的改變。
現在在針對應用架構與微服務的新思考方面,容器生態系統逐漸成為核心主題。根據Battery Ventures技術人員Adrian Cockcroft的說法:關于微服務有一些基本的原則需要思考。首先,如今構建軟件的價格更為低廉,容器的出現降低了成本。Docker被所有人納入藍圖——從軟件供應商到終端用戶,所有人都在嘗試找出容器的用法,因為用它就能加快軟件的交付節奏。不過這也代表著要安裝的系統是應用級別的,也就是說在應用的開發、部署與管理方面出現了不同的需求。
舉個例子,對于要處理服務與堆棧范圍增長的公司來說,監控比以往更加重要。要想解決問題,必須對數據日志進行分析,而這些日志很可能橫跨臨時節點與多項服務。由于需要細化監控與加強工具,從業人員能更好地掌握這些構建模塊對于應用所依賴的許多潛在微服務的影響。
那么起作用的是什么呢?從公司與API開始:基于微服務的產品團隊與另一個基于終端的平臺團隊之間靠API連接,通過API調用以及企業基礎架構持續作出相應的回應來生效。
微服務被定義為特定背景下松耦合、面向服務的架構,允許在無需理解其他部件運作原理的情況下進行更新。整個服務是跨公司構建的,但所有權卻在同一個地方。微服務架構提供了更多系統間的點對點調用。消息形式必須靈活,所有部件在無論哪個版本中都能運作。這意味著在構建微服務架構時,我們需要一些工具來配置、探索、輸送流量、觀察與構建系統。
IBM杰出的工程師兼IBM云計算中心的CTO Andrew Hately作出了類比:15年前人們可能需要每周查看一下自己的銀行余額,而互聯網允許人們實時查看余額甚至做出進一步操作,也許隨著智能手機的發展,很多事情都發生的改變。如今,人們可以即時訪問自己的賬戶收支信息。這種速度與即時性代表著:在過去的5-10年內,企業提供服務的發展速度必須跟得上社交網絡與搜索公司發展的速度。公司必須處理員工、消費者、系統與所有可能組合之間的持續互動——就像Hately所說的完全互聯與持續可用。這意味著企業流程需要重建,需要將所有東西連接起來。如果公司不進行這方面的嘗試,也無法提供相應功能的話,很快就會面臨收入減少甚至出局的局面。
Hately表示:“工具非常關鍵。” 有數百家網站不支持代碼,收到反饋后,在下一組測試用例中消費者就能使用它了。這種嚴格的開發過程提供了一種企業工作方式,也為微服務發展提供了思考方式。DevOps中的ops也會執行這樣的工作。如果你有一小段代碼并為其定義指標的話,就能細分出哪些會成功,哪些會失敗。
IBM通過為消費者及內部團隊構建反饋通道與成功標準,在敏捷、DevOps、精益生產與其他迭代進程中結合最佳實踐,創建了名為IBM Bluemix Garage Method方法的企業方法論。IBM Bluemix Garage Method方法將企業解決方案的可靠性及可測試性與最新開放社區在規模質量上的最佳實踐結合起來,持續創新、創建持續交付渠道并在云平臺上進行部署。這種方法很有價值,向所有人開放資源能夠提高個人、團隊與全公司的DevOps技能,以及管理與監控能力。
軟件相關的契約
第一代的容器管理平臺支持這些速度更快的開發進程。Docker的產品高級VP Scott Johnston表示,在Docker Compose中,微服務促進了工具發展,YAML文件扮演了描述不同組件的清單(manifest)。Compose讓開發人員得以用抽象的方式描述多容器應用,它可以描述web容器、數據庫容器、負載均衡及其間的邏輯關系,無需連網或部署存儲。
Engine Yard的Matt Butcher表示:微服務是軟件相關的契約。有些人會辯稱微服務是正確執行的面向服務架構(SOA)。開發者想要的是有用、功能豐富且結構優雅的架構。微服務使得軟件開發回歸Unix的根源——將一件事完成得很好。用Unix可以任意輸出命令。微服務不止在如何優秀地完成工作方面,同時在如何與環境互動方面也表現出契約性。如果運行良好,它所做的工作就像是優秀的Unix shell腳本。
舉個例子,Kubernetes清單文件格式扮演著契約的角色,這個清單提供了所需的來源細節、存儲卷定義、存儲需求等,扮演了強大的DevOps類契約。它讓開發者和運營者了解想要的內容。開發者與運營者之間的關系不再如同之前那樣——開發者被迫只管自己的一攤工作。
一張清單可能會包括應用元數據,加上具體版本的描述性參數,其中可能還有多個清單。也許是一個實例、一個pod清單、一個復制控制器(replication controller)或者一個服務定義,還有組成文件的已知來源位置。任意標簽可能由圖表中所包括的組件來定義。
Butcher表示:“應用開發者在這方面的體驗夠深刻了。一旦出現典型問題,就會說丟過墻去,各管各的,反正有DevOps來負責生產環境中的運行事宜,開發者只負責開發,總有一個切換過程,往往會成為各掃門前雪的后果。”
如果開發者構建容器,會存在一定的水平保證(由抽象層決定):這些容器的運行方式在生產階段與開發階段是一樣的。這已經緩解了讓懂得容器這個基本工具的DevOps專業人員感到頭疼的大多問題。容器化已經提供了這種保障,不過像Helm(Engine Yard所提供的新服務)之類的產品有助于進一步規范化這種關系,具體表現為團隊間的契約形式——團隊成員不能再推卸責任,各掃門前雪了,而要全程參與。
從虛擬機與Monolith,到容器,再到微服務
根據Joyent的CTO Bryan Cantrill的說法:容器為原生云架構提供了基礎,與傳統的虛擬化形式相比,象征著一種新的應用架構形式。在使用較大的機器來進行計算時,基于硬件的虛擬化或者傳統虛擬機流行過一段時間。虛擬機為運營團隊提供了管理大型整體應用的方式,就像Cantrill說的“過于臃腫”,而硬件定義了企業架構。虛擬機建議在底層之上,承擔了運營系統的負載。但是容器創建了一個全新而更敏捷的抽象。就是Cantrill的那句話:“應用繼續減肥速成修煉?!?/p>
如今,唯一的麻煩在于如何將虛擬機和monolith換成容器和微服務。各家公司還在想方設法執行這種轉變,因為兩種方式對應用架構、基礎設施還有公司自身整體的思路都是迥異的。
Cantrill表示:Joyent的開源Triton服務,其目的就是為了簡化與加速公司向容器與微服務的轉變。它允許開發者簡化架構,只提供容器,不提供虛擬機。由于無需配置網絡等操作,用戶可以通過閱讀微服務手冊,在短時間內完成部署。
Cantrill表示,Joyent公司是Docker Compose的粉絲,因為Compose可以用來與單獨的Docker Engine通訊。Docker的遠程端點由Triton部署,從而虛擬化了整個數據中心。使用這些工具,很容易快速讓一個完整有彈性的運營服務運轉起來。正如Cantrill所言:“這是大勢所趨?!?/p>
VMware的CTO Kit Colbert從如何沿著容器之旅前進的角度來觀察市場。VMware著重運營領域?,F在它開發了一種方式,來滿足新的開發人員及其需求,不過是作為基礎架構提供商存在。
對于VMware來說,這家公司將自己視為基礎設施提供商,而不是以應用為中心、面向架構的公司。Colbert只看到了對Cloud Foundry感興趣的消費者,不過也有人想要DIY的方法。VMware正在設法通過vSphere集成容器(VIC)與Photon平臺對應用技術提供支持。
為了讓消費者適應使用容器,vSphere集成容器(VIC)讓容器化工作負載稱為vSphere的重中之重。VIC適合在開發進程中運行,將容器化最有價值的一個方面應用在容器中:靈活并具有動態的資源界限。通過虛擬化,VMware將普通硬件轉化為簡單、可取代的財產。同樣,通過在虛擬機中應用Docker端點,vSphere集成容器創建了完全動態邊界的虛擬容器主機。結果就是對傳統與基于微服務應用同樣支持的基礎架構,允許IT與開發者的訪問。
相比之下,VMware的Photon平臺是專為原生云應用設計的。Photon平臺由最小的管理程序與控制面板組成,專為微服務提供速度與規模的服務。Photon平臺在設計時還考慮到了開發者通過API使用時的易用性,讓這個平臺成為一個提供應用程序與快速部署的自助服務平臺。
從VMware的角度來說,運營團隊也在推進部署速度。現在更著重于數字化體驗或者軟件如何提供更多功能方面。很類似我們如何看待在智能手機上使用的應用。供應商可能以聲音很大的揚聲器而聞名,不過服務的應用是否能提供功能?
Colbert詢問:“我能依賴它嗎?” 公司必須找出構建應用,為尋找高質量應用的消費者提供服務的方式。想要繼續進步,就必須找到這一點。很多擁有外置式、虛擬化基礎架構的消費者希望:隨著應用開發進程的加快,解決公司面臨的挑戰。
在微服務時代的開發
軟件開發是迭代式的,需要持續的反饋循環才能奏效。這也是類似IBM Bluemix Garage Method所提供的工具所提供的功能。不過大多公司是根據模型來執行的,這與開發者工作的方式不同。開發者不會按照銷售、市場推廣、財務等部門人員的方式來工作,開發者不是按照計劃或方案來執行工作的。軟件開發的過程有更多的迭代,并非瀑布式自上而下的。
Pivotal的首席技術Michael Coté表示:“我不知道怎么說,不過真實世界與軟件世界是完全不同的。”Coté辯稱:找出軟件開發的方式似乎非常矛盾,不過事實上確實阻止了人們想要根據一份文檔來了解一個巨大機器的所有部件的工作方式。通過遵守軟件開發的原則,各家公司找到了自己的辦法,而不是嚴格遵守固定的計劃。
Coté認為,沒有執行微服務的固定道路。用微服務可以在運行中和架構上獲得靈活性。微服務根據簡單的原則構建出真正復雜的東西。原則越簡單,所能創造的東西就越復雜。
不過,如果把復雜性轉移到其他地方會發生什么?Pivotal這個平臺管理著復雜程度。去掉選擇,讓消費者無需考慮網絡、運營系統等問題。它允許消費者將復雜性放在應用堆棧的頂層,在為終端用戶提供服務時能夠更好的區分服務。Hately表示:“在科技行業,我們看到了另一個文藝復興時期?!?/p>
同樣地,IBM Bluemix Garage Method也希望簡化復雜性,以便讓開發者的工作更有效率,能夠更好地享受自己的工作。所有這些努力都為企業提供了巨大的機會,無論在技術還是文化層面。
-
微服務
+關注
關注
0文章
137瀏覽量
7341
發布評論請先 登錄
相關推薦
評論