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