技術白皮書:現代企業架構設計
【注】本文節譯自:APIs and microservices: How to create modern enterprise architectures (bitpipe.com)
建立和發展現代化的企業架構並非易事:這意味著打破單一的、集中的系統,轉而使用 API 和微服務等工具支援更多雲功能和自適應環境。在本指南中,我們研究了這些型別的雲連線架構的關鍵屬性,並提供了有助於培養以 API 為中心的現代架構的實用建議。接下來,我們來探討一下漸進式 Web 應用程式的出現。
雲應用程式被認為是一種易於部署、修改、擴充套件和計量的服務。這為現代企業架構和應用程式設計須如何發展提供了線索。這就是為什麼,以及未來是什麼樣子。
雲服務本身建立在高度分散式的基礎架構上,旨在對故障具有彈性,並且在不影響使用者的情況下輕鬆移動和調整大小。使用應用程式介面或 API 訪問和控制抽象服務,將使用者與實現細節完全隔離。使用者幾乎不知道或不關心服務在哪裡執行或在什麼型別的系統上執行。這些核心屬性鞏固了雲服務相對於傳統單體軟體的眾多優勢。
然而,這些相同的特性可以而且應該應用於構建在一個或多個雲上的企業應用程式。事實上,使用共享、按需、可伸縮的雲服務的細粒度微服務設計是任何現代企業架構的虛擬需求,這些架構期望滿足數字業務的需求,服務於數百萬移動客戶、智慧機器和連線的感測器。
互聯的數字企業
企業架構必須改變的原因是高速連線和數十年來計算能力指數級摩爾定律改進的融合。這使得廉價智慧手機市場趨於飽和,公用事業規模的 IT 服務提供商得以建立雲服務。這些技術共同推動了業務的巨大變化。無論您將其稱為“新連線經濟學 ”(Gartner) 還是“無界企業 ”(AT&T Bell Labs),它都意味著企業以及隨之而來的 IT 系統和應用程式將越來越多地與人互動,還將以自動化業務流程和智慧裝置的形式與裝置、虛擬物件和其他軟體互動。這是一種互動的爆炸式增長,Gartner 稱之為數字網格。
這對企業架構的影響變得更像是大型雲服務——想想谷歌、Facebook 和 AWS——而不是使用單體的、集中的系統來處理不斷增長和越來越不可預測的工作負載。事實上,隨著雙模 IT、DevOps 和敏捷開發等概念的引入以加快數字業務創新的步伐,其影響將遠遠超出企業架構,深入到 IT 如何開展業務的核心。但是我們這裡的重點是體系結構框架。
處理“連通性”
但是,如果組織選擇實施它,演進的現代企業架構將類似於雲。應用程式是否最終執行在 AWS 和 Azure 等共享的公共服務上;基於 Azure Stack、OpenStack 或 vCloud 等軟體構建的私有基礎設施;或者兩者結合,架構必須假定共享的可用性,即使僅在組織內部,計量軟體服務也可以立即例項化、修改、擴充套件和互連。隨著組織構建的數字服務看起來更像 Facebook 和 Uber,應用架構必須類似於雲原生服務,而不是隔離在單個盒子上的單體系統。
現代架構應具有以下關鍵屬性:
- 將客戶端介面與業務服務分離:應用程式將採用移動和瀏覽器設計正規化,客戶端專門用於 UI 和後端服務的業務處理。
- 天然分散式:後端應用程式將能夠執行多個例項,提供彈性和可擴充套件性,同時支援持續、敏捷開發流程所需的無中斷更新。
- 使用微服務:後端服務將針對特定功能而設計。它還可以在許多消費者之間共享,並可以輕鬆連結到特定應用程式的服務鏈中。將微服務視為用於構建任意複雜功能的構件。服務可以在自己的 VM 中隔離執行,也可以作為共享作業系統例項的容器執行。它們還具有固有的自計量功能,以支援基於消費的計費、細粒度的效能跟蹤和自動擴充套件。
- 非同步服務間通訊:服務將使用訊息匯流排交換資訊,而不是到網路套接字和檔案共享的持久連線。
- 豐富的服務組合:服務將公開元資料,允許它們作為廣泛服務組合的一部分進行管理、使用和編排,包括移動和物聯網應用後端、資料儲存和分析、訊息傳遞、監控和安全。
- 應用程式模板和設計模式庫:
該組合是模板的基礎,這些模板將服務組合在一起,以解決各種應用開發需求和設計模式,比如 Azure 提供的。開發人員庫還包括標準資料模型,用於選擇合適的資料服務,如物件儲存、NoSQL、SQL、大資料,例如 Hadoop 和 Spark;以及滿足特定需求的資料轉換管道。 - 以 API 為中心:API 是主要的,通常也是唯一的服務介面。 客戶端訪問通常是無狀態的,但任何狀態都通過訊息匯流排和後端資料服務處理,並且只有最少的客戶端支援。
- 自動化基礎設施:服務鏈可以從用於部署、擴充套件、移動和停用雲實例的基礎設施模板中例項化。 服務計量和儀表用於對資源使用情況發出警報、活動、錯誤狀態、並觸發自動修復,例如縮放、重啟和人工通知。
- 細粒度的安全性:對單個服務的訪問通過基於角色的訪問控制列表進行控制,策略定義為應用程式模板的一部分。 使用者身份和角色被集中管理,並可能與來自業務合作伙伴或公共線上服務的外部身份管理系統聯合。
待辦事項清單
擁有正確的企業架構可能是未來數字業務計劃成敗的關鍵。 對於 CIO 和 IT 高管來說,這意味著架構應該是執行層的優先順序,它是通過 IT、應用程式開發人員和業務線經理之間的密切協作開發。 對於 IT 經理和技術專業人士來說,企業架構的重要性需要一個由多學科專家組成的專門團隊——例如 IT 運營、AppDev、DevOps、雲運營和資料科學家等——他們的重點是開發、改進、更新和實施架構。
不斷髮展的企業架構是不斷髮展的 IT 的一部分,它必須專注於靈活的服務創新、開發和實施,以響應動態的數字業務需求。因此,它可能會伴隨 IT 內部的結構和文化變化,例如雙模式和 DevOps 組織以及持續交付流程。對於 IT 專業人員來說,這是最具挑戰性但又最激動人心的時刻之一。
在網頁和原生應用之間架起橋樑
移動應用和網站在使用者體驗方面歷來採用不同的模式。讓使用者訪問網站比安裝應用程式要容易得多。但移動應用往往會促進更具吸引力的使用者體驗。一種全新的全渠道應用交付模式,稱為漸進式 Web 應用,有望提供兩全其美的服務,並且是舊金山 O'Reilly Fluent 會議的熱門話題。
谷歌 Chrome 團隊的一名資深軟體工程師 亞歷克斯·拉塞爾(Alex Russell)表示,他們之所以選擇“漸進式 Web 應用”這個詞,是因為它們可以在標籤中開始生活,並逐漸變得像應用程式一樣。有幾個因素正在推動這一趨勢,包括更好的快取技術和使 Web 應用的行為更像移動應用的新技術。
一些先驅企業已經證明了使用新模式有利於增加使用者訪問量和在網站上花費的時間。Flipkart 開始實施漸進式應用,並且發現使用者花在新網站上的時間增加了三倍,每週訪問者增長 40%。他們還發現 63% 轉化率來自主介面訪問者,他們甚至還沒有釋出推送通知。
解決分散式問題
“我認為分發是軟體中最困難的問題,”Russell 說。在早期,使用者必須從軟盤安裝應用程式。現在,讓使用者安裝應用程式要容易得多,但要讓使用者主屏上花費更多的精力和空間,仍然有很多阻力。網路是最便捷的分發平臺,但令人驚訝的是,我們還沒有轉向通過 URL 分發移動應用。Web 應用程式可以更定期地更新,也可以通過單擊連結進行更新,開發無需通過應用商店的審批流程。
但根據 comScore Inc. 的研究,使用者往往會將大約 87% 的時間花在移動應用上,而花在智慧手機上的移動 Web 應用上的時間只佔 13%。另一方面,大多數使用者將大部分時間花在頂級應用上,而其他人則處於休眠狀態。由於這些趨勢,企業最終會花費大量資金讓使用者安裝其軟體的移動應用版本。許多這些應用最終成為永遠不會被使用的殭屍應用。這需要付出很大代價,因為其中許多應用都無法進入頂層。
與此同時,移動網站也吸引了許多未安裝該應用的獨立訪問者。這對於應用使用較少的企業(例如零售商)很重要。使用者平均每月使用 27 個應用,但訪問超過 100 個移動網站。Russell 表示,使用者對下載原生移動應用的空間、頻寬和時間感到焦慮。
超越技術
一些處理密集型應用可能會像原生移動一樣表現得更好。但 Russell 表示,他相信行動網路平臺對於當今的大多數應用來說已經足夠了。他說,阻礙行動網路應用使用的三個主要因素是缺少主屏、缺少推送通知托盤訪問和缺少離線訪問。
主屏訪問
Chrome 團隊最近釋出了 Web 應用清單(Web App Manifest)規範。早期版本可在所有 Android 平臺上執行。這提供了一個框架,用於告訴移動瀏覽器某個特定連結實際上是一個移動應用。 這樣可以更輕鬆地將站點作為單獨的視窗重新啟動,該視窗的外觀和行為類似於其他本機應用程式。
開發人員只需在站點上包含一個清單檔案,其中包含一個指向圖示和應用名稱的連結。Russell 說這是必要的,因為 Web 還沒有應用結構的概念。直覺上,人們知道部落格與部落格中的條目是不同的。清單提供了一種向瀏覽器顯式宣告這種區別的方法。
突破新極限
去年,Chrome 團隊在 Chrome 桌面版和 Android 版上推出了推送通知。 這使得 Web 應用程式可以更輕鬆地將更新定向到推送通知托盤中。 此功能也可用於三星和 Firefox 瀏覽器,並生成行為與本機應用程式非常相似的通知——即使在瀏覽器關閉時也是如此。 使用者必須提供從特定站點接收通知的許可權。
這種策略對零售商的網站很有效,例如,他們可能想向訪問商店的使用者推出優惠券。它將允許使用者接收這些更新,而無需在主屏上安裝任何應用程式。零售商 Beyond The Rack 報告稱,其 50% 的訪客來自發布推送通知。他們還發現在網站上花費的時間和轉化率有所增加。
使用 Service worker 進行更好的快取
最後一個閾值是支援有效的離線功能。谷歌多年來一直致力於解決這個問題。最初,Google Gears 允許通過一組狹窄的方式來考慮打造離線體驗。應用程式快取與現在被納入 HTML5 規範的設計相同。
谷歌現在引入了服務工作者的概念。這種方法允許開發人員指定服務工作者在移動裝置離線或線上時的行為方式。Russell 說離線只是網路連線不穩定的一個特例。這種方法允許應用程式提供令人滿意的使用者體驗,而不管其連通性如何。應用程式外殼可以在重複訪問時立即快取和載入。“現在,有了 Service Worker,你可以在沒有 DNS、http 或 TLS 輔助的情況下將內容投放到螢幕上,”Russell 說。個人、網路廣播、播客、視訊、虛擬貿易展覽、研究報告等——利用技術提供商的豐富研發資源來應對市場趨勢、挑戰和解決方案。我們的現場活動和虛擬研討會為您能夠就您每天面臨的問題和挑戰獲得中立的供應商評論、專家評論和建議。我們的社交社群 IT 知識交流使您可以與同行和專家實時共享現實世界的資訊。