重點將從部署系統(tǒng),轉(zhuǎn)移到重新配置現(xiàn)有資源以提高企業(yè)能力。
無論我們是否認識到,系統(tǒng)架構(gòu)都在不斷發(fā)展。在過去的幾十年中,系統(tǒng)架構(gòu)就是構(gòu)建架構(gòu)的過程:確定系統(tǒng)需要做什么,確定所需的主要子系統(tǒng)以及它們?nèi)绾芜B接,并繼續(xù)分解,直到有足夠的細節(jié)供開發(fā)團隊構(gòu)建每個子系統(tǒng),集成子系統(tǒng)并創(chuàng)建所需的系統(tǒng)。這種模式近年來一直在變化,但變化的速度正在增加。
網(wǎng)絡的影響
隨著網(wǎng)絡系統(tǒng)在20世紀90年代變得越來越普遍,系統(tǒng)架構(gòu)實踐開始發(fā)生變化??蛻舳?服務器架構(gòu)作為主導設計模式的出現(xiàn),使得架構(gòu)必須包括網(wǎng)絡。系統(tǒng)不再是整體,它們被部署在一個地方,并從一組固定的終端使用,分布在一個可能很大的地理區(qū)域。
網(wǎng)絡對系統(tǒng)架構(gòu)演變的下一個主要影響是整合系統(tǒng)的愿望。沒過多久就意識到將相同的數(shù)據(jù)輸入不同的系統(tǒng)既費時又容易出錯,所以開始嘗試集成系統(tǒng),以便共享數(shù)據(jù)。這導致了面向服務的體系結(jié)構(gòu)(SOA)的發(fā)展。SOA的基本思想是,功能提供商可以將其產(chǎn)品作為可由網(wǎng)絡上的任何應用程序調(diào)用的服務提供。“服務”只不過是一個定義良好的接口,可以滿足某些所需的功能。SOA承諾了一個動態(tài)可組合應用程序的時代,這些應用程序可以適應新的業(yè)務需求,而無需重新編寫應用程序代碼。
服務的興起
像許多廣泛宣傳的新技術(shù)一樣,SOA從未完全實現(xiàn)其最初的承諾。但是,就像許多大肆宣傳的技術(shù)一樣,在大肆宣傳十年后,我們看到了SOA理念的真正好處。許多功能可用作服務,并且更多企業(yè)正在使用它們。例如,F(xiàn)acebook,Google和其他公司都提供身份驗證服務。如果運行網(wǎng)站,并希望在允許用戶訪問網(wǎng)站的所有功能之前對用戶進行身份驗證,則無需托管自己的身份驗證子系統(tǒng),可以使用其中一種作為服務提供。以類似的方式,評論線程,社交媒體集成,用戶統(tǒng)計和許多其他功能也作為服務提供。整個云計算革命實際上只是將計算硬件轉(zhuǎn)換為按需服務。
雖然它沒有采用最初設想的形式,但SOA革命絕對發(fā)生了。如今,大多數(shù)企業(yè)集成工作都致力于使系統(tǒng)接口公開可用。這通常被稱為“應用程序編程接口(API)的第一哲學”。API第一哲學最著名的例子可能是被稱為“the Steve Yegge rant”的信件,他在那里譴責谷歌沒有采用亞馬遜的API優(yōu)先設計理念。咆哮的基本原因是所有功能都應該通過API在網(wǎng)絡上公開,以促進集成并最大限度地減少企業(yè)生產(chǎn)(和支付)的重復功能。
API如何推動系統(tǒng)架構(gòu)
到目前為止,任何API優(yōu)先任務的主要作用是使開發(fā)人員確保他們記錄他們的API并公布它們。但亞馬遜API首要任務的主要目標是降低在多個系統(tǒng)中開發(fā)重復功能所產(chǎn)生的成本。由于大多數(shù)企業(yè)不會每隔幾年更新一次所有系統(tǒng),因此任何API優(yōu)先授權(quán)都需要時間來顯示企業(yè)中的實際效果。但隨著時間的推移,這些影響將會讓人感覺到,特別是當API優(yōu)先授權(quán)與重建前構(gòu)建任務相結(jié)合時,需要系統(tǒng)開發(fā)人員在構(gòu)建新的功能之前重用企業(yè)中可用的功能。
隨著越來越多的系統(tǒng)通過API提供其功能,并且開發(fā)團隊的任務是在構(gòu)建之前重新使用,將通過將現(xiàn)有功能重新組合為新功能來替換構(gòu)建新系統(tǒng)。目標差異很大的系統(tǒng)之間的重復數(shù)量令人驚訝。大多數(shù)系統(tǒng)都需要一種存儲和檢索數(shù)據(jù)的方法。大多數(shù)系統(tǒng)都需要一種方法來驗證和授權(quán)用戶。大多數(shù)系統(tǒng)都需要能夠顯示文本和渲染圖形??梢詮钠髽I(yè)中的現(xiàn)有資源重用的功能列表一直在繼續(xù)。在系統(tǒng)開發(fā)的早期階段,開發(fā)人員需要創(chuàng)建這些功能,以便擁有最低功能的系統(tǒng)。由于大部分基本功能可用作服務,系統(tǒng)設計人員的任務正在從設計整個系統(tǒng)發(fā)展到在企業(yè)生態(tài)系統(tǒng)內(nèi)設計邊際功能改進。
邁向以能力為中心的架構(gòu)
我們今天所面臨的企業(yè)生態(tài)系統(tǒng),是一個不斷擴展的功能集作為服務提供的生態(tài)系統(tǒng),特別是在云環(huán)境中。云提供商競相提供越來越多的功能,并且已經(jīng)可以通過將一些服務與一些組合軟件或腳本語言拼接在一起,來開發(fā)基本系統(tǒng)。通過這樣做,開發(fā)人員可以在幾周而不是幾個月內(nèi)創(chuàng)建一個功能最少的系統(tǒng)。通過整合新服務或安裝沒有服務的現(xiàn)成模塊,可以快速改進這一基本系統(tǒng)。在這樣的環(huán)境中,一個長達數(shù)月的設計階段,試圖在構(gòu)建開始之前計算出系統(tǒng)的細節(jié)是沒有意義的。我們需要一種新的思考系統(tǒng)架構(gòu)和設計的方式。
在已經(jīng)擁有許多可用服務的企業(yè)中,構(gòu)建新系統(tǒng)應首先明確定義預期系統(tǒng)需要執(zhí)行的功能,并將其與已作為服務提供的功能列表進行比較。這將揭示企業(yè)中已有多少所需系統(tǒng),以及需要構(gòu)建多少?,F(xiàn)有功能和所需功能之間的差異定義了企業(yè)當前功能與所需功能之間的能力差距。隨著我們邁向未來,系統(tǒng)架構(gòu)師的首要任務將從設計整個系統(tǒng),發(fā)展到定義當前的能力增量并設計縮小差距的最佳方法。
我們還沒有達到這種以能力為中心的架構(gòu)很容易的程度。我們了解整個企業(yè)可用服務的能力受到嚴重限制。任何誠實的網(wǎng)絡管理員都會承認他們并沒有真正掌握其網(wǎng)絡上可用的完整服務列表。他們可能知道哪些機器連接到網(wǎng)絡,每臺機器上運行的軟件,以及每臺機器上打開的端口和協(xié)議。但是這些信息只告訴我們這些事情的網(wǎng)絡級方面,它沒有透露有關(guān)這些東西如何被使用的任何信息。例如,網(wǎng)絡上打開端口8443并接受HTTP連接的系統(tǒng)可能正在提供簡單的網(wǎng)頁,或者它可能通過該接口提供許多REST服務。
有辦法克服這種缺乏理解,但大多數(shù)都是手工的。例如,維護列出企業(yè)中可用服務的Wiki需要開發(fā)人員添加他們已部署的服務并維護該列表。并且用于近實時地識別和編目服務接口的自動化裝置將更有效。但那是另一個時間的主題。
也有例外
由于系統(tǒng)需要運行的環(huán)境,傳統(tǒng)系統(tǒng)架構(gòu)在某些領域仍然存在。任何涉及功能完整企業(yè)的操作環(huán)境都存在問題,需要以老式的方式進行全范圍的系統(tǒng)設計。例如,飛機飛行控制系統(tǒng)實際上不能依賴于調(diào)用地面上的服務來執(zhí)行與飛行安全相關(guān)的任何功能的能力。同樣,衛(wèi)星系統(tǒng)和其他類型的嵌入式軟件需要在本地提供所有關(guān)鍵功能。
舊的系統(tǒng)架構(gòu)方式不會完全消失,但是我們已經(jīng)開始考慮如何提高系統(tǒng)架構(gòu)實踐的效率,以便更好地支持當今快速發(fā)展的商業(yè)環(huán)境。
-
接口
+關(guān)注
關(guān)注
33文章
8605瀏覽量
151194 -
SOA
+關(guān)注
關(guān)注
1文章
288瀏覽量
27481
發(fā)布評論請先 登錄
相關(guān)推薦
評論