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