拆解 | SAAS系統的底層架構設計

9 評論 25051 瀏覽 211 收藏 17 分鐘

作者對SaaS系統的底層架構的設計進行了拆解并梳理了需求邏輯,供大家一同參考和學習。

SaaS系統在建設過程中,因面向的用戶群體業務靈活性變化,許多同仁在做系統時,基于公司/市場等多方面壓力,往往在建設初期忽略最為重要的底層架構設計,將更多的視角精力投入至業務場景的支撐。

但是每當系統支撐需求到達一定階段的時候,才會將產品視角回顧至底層架構及公有業務模塊,這時基本面臨底層重構的窘境。(接下里正應對那句:人在家中坐,鍋從天上來。經典語錄有多少同仁正在經歷/經歷過?)

在過往的SaaS系統架構設計中,個人看好基于OA協同辦公的工具型SaaS系統的架構模式。在參考了市面多項產品后,我花了2個月的時間去進行底層架構的設計。(多數的產品同仁觀念里,這樣是不存在事情。開發和老板會打死你!但是你要去用不要臉的精神去說服他們。)在經歷2個系統的開發過程及運行后,認證了這種設計方法的通用性。希望這種設計方法能夠獲得諸位同仁的認可,并且能在你們建設系統的過程中起到一定的案例參考作用。

整個底層功能結構的建設,個人入手時并沒有將用戶權限,人員管理,組織結構放到第一視角。而是意識到SAAS-軟件即服務的租戶觀念。整個系統的建設前提是滿足租戶使用的需求,解決租戶業務場景上的痛點。那么第一視角是考慮租戶來了系統需要做什么?)租戶怎么來產品運營考慮的事兒。

為此將底層拆分了如下圖的功能類型,并且大致說下需求邏輯。

一、注冊環節

SaaS系統面向用戶注冊與傳統注冊策略區別在于,字段多用性,字段變化多發性。

例如:現在一款面向企業操作工具的租戶注冊。需要用戶輸入用戶名稱、手機號碼、圖形驗證碼、短信驗證碼、密碼及二次確認密碼等數據。那么這些字段信息,在傳統系統中的運用,多在于查詢注冊用戶USER-ID相關數據,數據維度多以外鍵映射多張的數據表,不存在因其他數據表變化而影響該部分數據留存。

而基于租戶模式的SaaS系統中,上述數據作用不僅僅是用于傳統數據查詢,獲取。更多在于字段書多張業務數據表之間分離結耦,

二、低概率異常場景

因租戶注冊的手機號,可能會掛失/注銷,而影響整個操作系統的運用、(這種低概率業務事件,若系統底層設計時若未考慮進入,基于SaaS安全性承諾、我們是無法查詢租戶登錄密碼的)那么為了避免該類實現發生,從產品維度,是否可以將租戶注冊的手機號當做賬號處理,將賬號植入密保手機概念。

租戶手機號碼不可登錄系統的時候,我們一則可以協助租戶更換密保手機。二則可以培養租戶對于系統靈活安全的平臺意識。

三、租戶注冊功能需求明細說明

  • PC端賬號注冊,視為注冊租戶-【即根機構】-且視為注冊企業租戶的人員為admin角色。當且僅admin角色下僅有1人。
  • 移動端注冊時,不做根機構注冊,視為C端流量用戶流入企業系統??杀桓鶛C構邀請加入租戶,或者主動申請加入租戶。

注冊時,字段說明及注重邏輯事項明細如下:

1. 賬號

必填項、11位手機號碼、號段驗證。錯誤提示語【請輸入11位未注冊的手機號、】

(1)若點擊【確認注冊】校驗賬號已注冊、給與提示語【請輸入11位未注冊的手機號】提示語定時界面3s、自動隱藏【注:短信驗證碼費用由***網進行承擔】

(2)企業注冊的手機號做2類邏輯:

  1. 視作手機號為賬號;
  2. 視作手機號為聯系方式-以防注冊企業租戶的人員手機丟失,手機號注銷等不可控因素。

(3)且注冊的賬號允許以:賬號+密碼的形式進行登錄。且注冊的手機號允許視為聯系電話在(個人信息詳情頁-聯系電話)被更換,更換的時候需要提示為:該手機號為賬號密保手機,請確認是本人操作,并且輸入手機驗證碼。

2. 企業名

必填項、輸入企業名后,校驗該企業名是否已注冊,對應錯誤提示語:該企業已注冊,請換個企業名稱再注冊,提示語定時3s后自動隱藏。

注:企業名稱輸入后,該字段自動存儲至【企業信息-企業名稱中】、且系統左上角的名稱顯示注冊時輸入的名稱。

此字段邏輯為:

(1)注冊時,企業ID下的企業信息詳情表、該字段數據字段為insert動作,在企業信息中,編輯此字段名稱后,做updata。 除非注冊企業租戶的admin角色,申請注銷企業賬號,此時做邏輯刪除?!疽苑榔髽I人員誤操作。故在注冊時控制只有admin角色下成員有此權限,且admin只有1人,以此控制風險】

(2)企業注冊時,不做OCR營業執照認證,注冊進入之后,根據租戶的付費詳情,所開通的功能模塊,強制邀請企業營業執照認證,且認證時調用企信寶/天眼查做認證審核【企業認證審核的接口費用,由金柚網免費承擔】

3. 驗證碼

有效期60s,重復獲取間隔60s,輸入錯誤驗證碼,在輸入框提示:請輸入正確驗證,或請重新獲取驗證碼。

短信下發驗證碼模板內容例如:金柚網歡迎你的加入,您的驗證碼為56554【6位】有效期為60s,請注意保密。

4. 密碼

6-20位任意純屬數字/純英文/數字英文組合【錯誤提示語:請輸入6-20位密碼】

密碼確認:兩次密碼輸入需一致。若不一致提示語【請保持2個密碼一致】

5. 勾選【我同意服務條款】、未勾提示語

請勾選服務條款。點擊服務條款,則進入【服務條款詳情滾動頁】-注冊條款詳情頁,先由PM提供自造文件,后續由法務提供注冊服務條款明細協議。

6. 點擊確認注冊后,前端給與loding加載界面,此階段為向后臺傳數據過程

加載過程中如遇【斷網、接口異常、服務器崩潰、、】不可控因素導致注冊失敗。給與404報錯界面。–loding加載界面及404報錯界面,請UI自行設計/前端自行提供。

7. 服務協議條款展示

注冊企業租戶賬號后,進入添加團隊/申請加入團隊業務功能模塊。

前提:視為租戶申請加入其他根機構/創建根機構【出于業務角度考慮、當前租戶賬號加入的根機構+自主創建的根機構,不得超過6個,即檢測一個賬號是否屬于6個根機構范圍】

如圖:創建或加入根機構界面

通過點擊:創建團隊、進入創建團隊詳情操作頁面、如下圖

其中聯系電話:為注冊時所 使用的手機號碼,前端自行拉取,回填至輸入框即可。

團隊名稱為注冊時,所填寫的企業名稱即可。前端自行拉取?;靥钪凛斎肟蚣纯?/p>

四、場景考慮

若租戶不想使用注冊時需要使用的手機號/租戶不方便使用該號碼。

用戶可點擊【*聯系電話】輸入框進行輸入新的手機號、用戶可點擊團隊名稱輸入新的團隊名稱。點擊創建團隊時。需要校驗如下內容。

1. 新輸入的手機號、是否已屬于6個團隊?

若不屬于:可被使用,并且將注冊時所使用的手機號,存儲在個人信息-聯系方式的字段,uodata成為新的手機號碼。觸發節點為創建團隊最后一步操作,即加載loding成功時做觸發。

若屬于:輸入框內,給與提示語【該手機號已加入6個團隊,請更換手機號】定時3s、自動隱藏,并且清空新輸入的手機號,輸入框內為待輸入狀態

且需校驗輸入的是否為11位手機號,如非手機號:提示語【請輸入11位正確手機號碼,定時1.5s、自動隱藏】

2. 輸入的團隊名稱是否已使用?

若使用:輸入框內給與提示語。【該團隊名稱已被使用,請換個團隊名稱試試、】定時3s、自動隱藏,并且清空新輸入的手機號,輸入框內為待輸入狀態

若未使用:原注冊時輸入的企業名稱,存儲在企業信息的-企業名稱做updata操作,觸發節點為創建團隊最后一步操作,即加載loding成功時做觸發。

3. 聯系方式及團隊名稱查詢觸發為輸入完畢,且換輸入框時觸發

如圖:點擊創建團隊,loding的加載界面及過程。

點擊【創建團隊】后進入創建加載頁面,加載過程中可能會遇到各種因素導致創建失?。ɡ捍藭r服務器崩潰,等未知因素)若創建失敗,則跳轉至創建失敗提示頁面、創建失敗給與404報錯界面。

404界面固定報錯提示語:柚子君走丟了,請重新嘗試創建。此時數據中,個人信息-聯系電話 及企業信息-企業名稱字段做updata的操作。且記錄之前注冊時的電話及名稱。

創建后先給與當前頁面提示語[創建成功]定時1.5s,自動隱藏。隱藏后進入初始化團隊賬號頁面,現在暫時不做浮層指引教學。前端預留,此時數據庫記錄該賬號對應的企業ID。手機號對應的團隊名稱

注冊企業租戶賬號后,申請加入團隊業務功能模塊。

如圖:點擊申請加入團隊,進入該頁面。

輸入框內輸入用戶需要加入的根機構名稱。

場景:輸入的團隊名稱已加入場景下,給與錯誤提示語

輸入的團隊名稱系統內無名稱,給與錯誤提示語。且搜索無果的場景下

提示語內容為【沒有與您搜索項類似的團隊,您可以換個名稱試試】

點擊搜索,進入加載搜索loding,加載max5s,超時給與404報錯界面,

所搜結果呈現界面,如圖:

①結果呈現,以表單形式給與,表單最多顯示5行,排序無規則,以5個結果/頁進行翻頁處理。

表單字段:團隊名稱+團隊聯系人【即租戶個人中心-昵稱字段】

根機構搜索范圍:數據庫全局。搜索內容組合【包含字符串】

②點擊其中的某個團隊,申請加入,交互跳轉頁面。

備注輸入框長度限制:50文字、備注輸入,點擊確定按鈕,會向被加入的根機構admin發起一條消息:消息內容:【hr名稱】您好,【雇員姓名】于【申請加入時間】申請加入團隊,請處理。

五、找回密碼功能需求說明

賬號:11位手機號校驗【提示語:請輸入11位手機號,定時器3s,自動隱藏,】

若手機號未注冊【該手機號未注冊-定時器3s,自動隱藏】

驗證碼:有效期60s,重復獲取間隔60s,輸入錯誤驗證碼,在輸入框提示:請輸入正確驗證,或請重新獲取驗證碼。

短信下發驗證碼模板內容例如:金柚網提示您,您找回密碼的驗證碼為565641【六位】驗證碼模板配置時,設置有效期為5分鐘,防止用戶無聊,隨意申請驗證碼,這樣會增加我們企業驗證碼的費用。

密碼:6-20位任意純屬數字/純英文/數字英文組合【錯誤提示語:請輸入6-20位密碼】

密碼確認:兩次密碼輸入需一致。若不一致提示語【請保持2個密碼一致】

六、登錄需求說明文檔

賬號輸入:11位手機號,輸入錯誤提示語【請輸入11位已注冊的手機號】

密碼輸入錯誤提示語:輸入正確密碼

記住密碼時效為:7天,7天內登錄無需再次輸入密碼

登錄前需注意如下場景不可登錄系統:

  1. 賬號未經注冊—提示語:您暫未注冊賬號,請注冊后再登錄?!咎崾菊Z定時1.5s、自動隱藏】
  2. 賬號被后臺管理員拉黑–提示語:您暫時無法登錄系統賬戶,請聯系客服人員??头娫挒?00-0000-000?!敬颂柎a系統正式投入租戶開放時,換成真實人工客服電話/機器人電話、提示語為固定在登錄頁面。不做定時隱藏?!?/li>
  3. 賬號已注冊、但其賬號不是admin賬號。并且該賬號未啟用狀態。【您的賬號暫未啟用,請聯系企業管理員修改賬號狀態。–不顯示企業租戶管理員聯系方式。出于隱私維度考慮】
  4. 租戶/員工賬號被禁用?!灸馁~號當前處于禁用狀態、請聯系管理員。固定在提示頁面,】
  5. 租戶/員工所屬角色被禁用?!灸斍八鶎俚慕巧驯还芾韱T禁用,請聯系管理員】
  6. 租戶/員工所在部門被禁用?!究傻顷?、進入系統后僅顯示菜單tab,右側提示語:您當前所在部門屬于停用狀態,請聯系系統管理員】

需要跳轉至選擇團隊頁面后,才能進入系統。

第三方掃碼登錄,可往后合理排至3/4期。做第三方登錄時、請架構師提前自行查詢對應各方平臺的開放API。

第一次在平臺上發布文章,沒寫好的地方歡迎諸位客官點評,文章對您有價值的話,點個贊唄(也可以用打賞來羞辱我)。下期文章《電子簽章通應性功能建設》

 

本文由 @最靚的仔 原創發布于人人都是產品經理。未經許可,禁止轉載

題圖來自Unsplash,基于CC0協議

更多精彩內容,請關注人人都是產品經理微信公眾號或下載App
評論
評論請登錄
  1. 標題黨

    來自湖北 回復
  2. 架構何在?

    來自江蘇 回復
  3. 大神可以要一份這個架構的PRD么,978174898@qq.com 最近正面臨一個多租戶的項目沒有思路

    來自重慶 回復
  4. 還是有一定的學到,謝謝大神??

    來自廣東 回復
  5. 標題起的有點大

    回復
    1. 不做一點夸大標題,能吸引您進來么

      來自浙江 回復
  6. 底層架構設計確實需要較長時間,反復打磨調整完善。
    個人感覺:前半部分的導圖比較全面,后半部分有點細,類PRD文檔了。
    堅持,加油

    來自北京 回復
    1. 謝謝,這篇文章確實是用PRD改的。

      回復
    2. 同感

      來自上海 回復