SaaS架構:開放平臺架構設計
當前位置:點晴教程→知識管理交流
→『 技術文檔交流 』
為什么需要搭建開放平臺增強產品能力 開放平臺能夠讓三方開發者和合作伙伴開發新的應用或服務,增加原有SaaS產品能力。這樣就可以滿足更多用戶需求,從而提高用戶的滿意度和黏性。 促進創新 三方開發者能夠在SaaS標準產品的基礎上,創造新的解決方案,為平臺帶來創新的業務模式,這些可能為SaaS企業帶來更多的盈利機會。 構建生態系統 開放平臺能夠建立一個以SaaS標準產品為中心的生態系統,吸引開發者、合作伙伴和其他相關方參加,共同構建一個互惠互利的生態圈。 降低開發和運營成本 通過邀請三方開發者來創造和擴展產品能力,他們可以有效分擔SaaS企業的開發、運營成本,更聚焦于核心產品的優化和創新。 開放平臺的服務對象是誰?SaaS企業的開放平臺通常包括以下關鍵用戶角色: 第三方開發者 他們期望能快速入駐開放平臺,并構建應用,通過用戶訂購應用獲取收益。因此,他們需要API文檔、SDK工具和開發者后臺,幫助開發者構建、測試和部署應用,并且利用平臺資源推廣自己的應用。 定制客戶 定制客戶一般為擁有自研能力的企業客戶,有定制化功能需求,例如與內部系統(如ERP、CRM)進行打通,實現企業自身的業務流程。 平臺運營人員 平臺運營人員需要為三方開放者和企業客戶服務,幫助他們解決問題,因此,需要客戶管理,應用申請流程管理、服務配置、參數配置、角色分配、財務對賬管理等產品能力。 開放平臺的運營流程SaaS開放平臺的運營流程涉及平臺的管理和維護,為企業客戶、三方開發者提供服務,包括吸引與管理三方開發者,提供必要的開發工具和支持,對開發者創建的應用進行審核和上線管理,通過數據監控和分析評估平臺的健康度和用戶活躍度,確保提供有效的服務支持,和維護平臺的安全和合規性。 下圖展示了開放平臺的整體運營流程,實際的開放平臺項目可以基于該流程做變更。 開放平臺整體架構設計管理后臺 層針對不同角色,提供不同的管理后臺:
服務層 服務層為上層的管理后臺提供核心服務能力:
API網關 API網關是整個開放平臺的流量入口,它提供的能力確保了平臺操作的安全、穩定和高效管理。 業務開放能力 業務開放能力由各個業務域系統提供,這些開放能力提供了核心業務數據/功能的交互能力。 開放能力設計開放能力可以分為以下幾種類型:
以商品系統為例,列出不同類型開放能力的使用場景:
開放API設計原則RESTful風格APIRESTful API 是一種遵循 REST 原則的 API 設計方式。REST 是一組約束條件和原則,由 Roy Fielding 在 2000 年的博士論文中提出。 RESTful API 的設計依賴于網絡協議,主要是 HTTP,并且它使用 HTTP 的原生功能(比如 HTTP 的動詞和狀態碼)來執行操作。以下是 RESTful API 的一些主要特點:
RESTful API的三個顯著優勢如下:
但嚴格遵循 RESTful API風格,也有一些缺陷: HTTP協議的動詞受限 當業務需求變得復雜時,僅依賴于HTTP的動詞方法來對資源操作,可能不足以滿足需求,這時往往需要通過接口名稱來進一步區分。此外,一些特定的HTTP請求,如PUT和DELETE,可能會在網絡傳輸過程中被某些防火墻設備攔截。 URL包含參數,可讀性差 在URL中嵌入參數占位符(例如:GET /Api/Orders/{id}/OrderItems/{id})會降低其可讀性。如果需要基于URL統計接口的調用次數,需要對具有相同URL的不同參數進行額外的處理。 HTTP狀態碼的表達性差 使用如20X、30X、4XX、5XX等標準的HTTP狀態碼,不足以描述復雜的業務場景的狀態。 建議接口設計遵循以下準則:
API分組原則根據業務領域,對開放API進行分組。例如店鋪API、商品API、庫存API、訂單API、物流API、客戶API、營銷API。 SaaS標準產品一般都基于DDD進行架構設計,根據業務領域組織開放API,是普遍采用的最佳實踐。當需要改進或變更某個特定業務領域的功能時,開發人員可以直接找到相關的API組進行修改,不會影響到其他領域的API。 對于三方開發人員,可以更容易地找到與某個業務功能相關的API,因為它們通過業務域的劃分邏輯組織在一起。 版本管理為了統一和清晰地標識不同版本的相同接口,建議將版本號放置在接口路徑的末尾,示例如下: 返回數據每個接口的響應數據,應遵循統一的JSON或XML格式規范,并且至少應包含以下關鍵字段:
安全措施接口簽名 為開發者分配AccessKey(開發者標識,確保唯一)和SecretKey(用于接口加密,確保不易被窮舉,生成算法不易被猜測)。 按照請求參數名的字母升序排列非空請求參數(包含AccessKey),使用URL鍵值對的格式(即key1=value1&key2=value2…)拼接成字符串A。 在字符串A最后拼接上Secretkey得到字符串B。 對字符串B進行MD5運算,得到Sign值。請求時,攜帶參數AccessKey和Sign,只有擁有合法的身份AccessKey和正確的簽名Sign才能放行。這樣就解決了身份驗證和參數篡改問題,即使請求參數被劫持,由于獲取不到SecretKey(僅作本地加密使用,不參與網絡傳輸),也無法偽造合法的請求。 數據加密 敏感數據,如用戶信息,應使用加密算法進行保護,常用的加密方法包括RSA和AES。 訪問控制 在接口訪問的API網關,應設置訪問控制,僅允許來自被商家授權的白名單的請求。商家可以通過商家后臺系統自主管理其白名單。 消息推送消息推送是平臺主動通知三方系統,提供數據更新的一種機制,滿足三方系統對信息實時性的需求。例如,當商家成功創建訂單后,三方系統可以通過訂單查詢接口來獲取訂單的當前狀態。 三方系統若想實時獲取訂單狀態,可以選擇定時查詢接口,但這樣效率低并消耗大量資源。通過系統主動推送訂單狀態信息,可以有效地解決這一問題。但消息推送也帶來了一些挑戰:
?本文來自博客園,作者:架構師湯師爺,轉載請注明原文鏈接:https://www.cnblogs.com/tangshiye/p/18460498 該文章在 2024/10/18 9:26:20 編輯過 |
關鍵字查詢
相關文章
正在查詢... |