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