拆解 | SAAS系統(tǒng)的底層架構(gòu)設計
作者對SaaS系統(tǒng)的底層架構(gòu)的設計進行了拆解并梳理了需求邏輯,供大家一同參考和學習。
SaaS系統(tǒng)在建設過程中,因面向的用戶群體業(yè)務靈活性變化,許多同仁在做系統(tǒng)時,基于公司/市場等多方面壓力,往往在建設初期忽略最為重要的底層架構(gòu)設計,將更多的視角精力投入至業(yè)務場景的支撐。
但是每當系統(tǒng)支撐需求到達一定階段的時候,才會將產(chǎn)品視角回顧至底層架構(gòu)及公有業(yè)務模塊,這時基本面臨底層重構(gòu)的窘境。(接下里正應對那句:人在家中坐,鍋從天上來。經(jīng)典語錄有多少同仁正在經(jīng)歷/經(jīng)歷過?)
在過往的SaaS系統(tǒng)架構(gòu)設計中,個人看好基于OA協(xié)同辦公的工具型SaaS系統(tǒng)的架構(gòu)模式。在參考了市面多項產(chǎn)品后,我花了2個月的時間去進行底層架構(gòu)的設計。(多數(shù)的產(chǎn)品同仁觀念里,這樣是不存在事情。開發(fā)和老板會打死你!但是你要去用不要臉的精神去說服他們。)在經(jīng)歷2個系統(tǒng)的開發(fā)過程及運行后,認證了這種設計方法的通用性。希望這種設計方法能夠獲得諸位同仁的認可,并且能在你們建設系統(tǒng)的過程中起到一定的案例參考作用。
整個底層功能結(jié)構(gòu)的建設,個人入手時并沒有將用戶權(quán)限,人員管理,組織結(jié)構(gòu)放到第一視角。而是意識到SAAS-軟件即服務的租戶觀念。整個系統(tǒng)的建設前提是滿足租戶使用的需求,解決租戶業(yè)務場景上的痛點。那么第一視角是考慮租戶來了系統(tǒng)需要做什么?)租戶怎么來產(chǎn)品運營考慮的事兒。
為此將底層拆分了如下圖的功能類型,并且大致說下需求邏輯。
一、注冊環(huán)節(jié)
SaaS系統(tǒng)面向用戶注冊與傳統(tǒng)注冊策略區(qū)別在于,字段多用性,字段變化多發(fā)性。
例如:現(xiàn)在一款面向企業(yè)操作工具的租戶注冊。需要用戶輸入用戶名稱、手機號碼、圖形驗證碼、短信驗證碼、密碼及二次確認密碼等數(shù)據(jù)。那么這些字段信息,在傳統(tǒng)系統(tǒng)中的運用,多在于查詢注冊用戶USER-ID相關數(shù)據(jù),數(shù)據(jù)維度多以外鍵映射多張的數(shù)據(jù)表,不存在因其他數(shù)據(jù)表變化而影響該部分數(shù)據(jù)留存。
而基于租戶模式的SaaS系統(tǒng)中,上述數(shù)據(jù)作用不僅僅是用于傳統(tǒng)數(shù)據(jù)查詢,獲取。更多在于字段書多張業(yè)務數(shù)據(jù)表之間分離結(jié)耦,
二、低概率異常場景
因租戶注冊的手機號,可能會掛失/注銷,而影響整個操作系統(tǒng)的運用、(這種低概率業(yè)務事件,若系統(tǒng)底層設計時若未考慮進入,基于SaaS安全性承諾、我們是無法查詢租戶登錄密碼的)那么為了避免該類實現(xiàn)發(fā)生,從產(chǎn)品維度,是否可以將租戶注冊的手機號當做賬號處理,將賬號植入密保手機概念。
租戶手機號碼不可登錄系統(tǒng)的時候,我們一則可以協(xié)助租戶更換密保手機。二則可以培養(yǎng)租戶對于系統(tǒng)靈活安全的平臺意識。
三、租戶注冊功能需求明細說明
- PC端賬號注冊,視為注冊租戶-【即根機構(gòu)】-且視為注冊企業(yè)租戶的人員為admin角色。當且僅admin角色下僅有1人。
- 移動端注冊時,不做根機構(gòu)注冊,視為C端流量用戶流入企業(yè)系統(tǒng)??杀桓鶛C構(gòu)邀請加入租戶,或者主動申請加入租戶。
注冊時,字段說明及注重邏輯事項明細如下:
1. 賬號
必填項、11位手機號碼、號段驗證。錯誤提示語【請輸入11位未注冊的手機號、】
(1)若點擊【確認注冊】校驗賬號已注冊、給與提示語【請輸入11位未注冊的手機號】提示語定時界面3s、自動隱藏【注:短信驗證碼費用由***網(wǎng)進行承擔】
(2)企業(yè)注冊的手機號做2類邏輯:
- 視作手機號為賬號;
- 視作手機號為聯(lián)系方式-以防注冊企業(yè)租戶的人員手機丟失,手機號注銷等不可控因素。
(3)且注冊的賬號允許以:賬號+密碼的形式進行登錄。且注冊的手機號允許視為聯(lián)系電話在(個人信息詳情頁-聯(lián)系電話)被更換,更換的時候需要提示為:該手機號為賬號密保手機,請確認是本人操作,并且輸入手機驗證碼。
2. 企業(yè)名
必填項、輸入企業(yè)名后,校驗該企業(yè)名是否已注冊,對應錯誤提示語:該企業(yè)已注冊,請換個企業(yè)名稱再注冊,提示語定時3s后自動隱藏。
注:企業(yè)名稱輸入后,該字段自動存儲至【企業(yè)信息-企業(yè)名稱中】、且系統(tǒng)左上角的名稱顯示注冊時輸入的名稱。
此字段邏輯為:
(1)注冊時,企業(yè)ID下的企業(yè)信息詳情表、該字段數(shù)據(jù)字段為insert動作,在企業(yè)信息中,編輯此字段名稱后,做updata。 除非注冊企業(yè)租戶的admin角色,申請注銷企業(yè)賬號,此時做邏輯刪除?!疽苑榔髽I(yè)人員誤操作。故在注冊時控制只有admin角色下成員有此權(quán)限,且admin只有1人,以此控制風險】
(2)企業(yè)注冊時,不做OCR營業(yè)執(zhí)照認證,注冊進入之后,根據(jù)租戶的付費詳情,所開通的功能模塊,強制邀請企業(yè)營業(yè)執(zhí)照認證,且認證時調(diào)用企信寶/天眼查做認證審核【企業(yè)認證審核的接口費用,由金柚網(wǎng)免費承擔】
3. 驗證碼
有效期60s,重復獲取間隔60s,輸入錯誤驗證碼,在輸入框提示:請輸入正確驗證,或請重新獲取驗證碼。
短信下發(fā)驗證碼模板內(nèi)容例如:金柚網(wǎng)歡迎你的加入,您的驗證碼為56554【6位】有效期為60s,請注意保密。
4. 密碼
6-20位任意純屬數(shù)字/純英文/數(shù)字英文組合【錯誤提示語:請輸入6-20位密碼】
密碼確認:兩次密碼輸入需一致。若不一致提示語【請保持2個密碼一致】
5. 勾選【我同意服務條款】、未勾提示語
請勾選服務條款。點擊服務條款,則進入【服務條款詳情滾動頁】-注冊條款詳情頁,先由PM提供自造文件,后續(xù)由法務提供注冊服務條款明細協(xié)議。
6. 點擊確認注冊后,前端給與loding加載界面,此階段為向后臺傳數(shù)據(jù)過程
加載過程中如遇【斷網(wǎng)、接口異常、服務器崩潰、、】不可控因素導致注冊失敗。給與404報錯界面。–loding加載界面及404報錯界面,請UI自行設計/前端自行提供。
7. 服務協(xié)議條款展示
注冊企業(yè)租戶賬號后,進入添加團隊/申請加入團隊業(yè)務功能模塊。
前提:視為租戶申請加入其他根機構(gòu)/創(chuàng)建根機構(gòu)【出于業(yè)務角度考慮、當前租戶賬號加入的根機構(gòu)+自主創(chuàng)建的根機構(gòu),不得超過6個,即檢測一個賬號是否屬于6個根機構(gòu)范圍】
如圖:創(chuàng)建或加入根機構(gòu)界面
通過點擊:創(chuàng)建團隊、進入創(chuàng)建團隊詳情操作頁面、如下圖
其中聯(lián)系電話:為注冊時所 使用的手機號碼,前端自行拉取,回填至輸入框即可。
團隊名稱為注冊時,所填寫的企業(yè)名稱即可。前端自行拉取?;靥钪凛斎肟蚣纯?/p>
四、場景考慮
若租戶不想使用注冊時需要使用的手機號/租戶不方便使用該號碼。
用戶可點擊【*聯(lián)系電話】輸入框進行輸入新的手機號、用戶可點擊團隊名稱輸入新的團隊名稱。點擊創(chuàng)建團隊時。需要校驗如下內(nèi)容。
1. 新輸入的手機號、是否已屬于6個團隊?
若不屬于:可被使用,并且將注冊時所使用的手機號,存儲在個人信息-聯(lián)系方式的字段,uodata成為新的手機號碼。觸發(fā)節(jié)點為創(chuàng)建團隊最后一步操作,即加載loding成功時做觸發(fā)。
若屬于:輸入框內(nèi),給與提示語【該手機號已加入6個團隊,請更換手機號】定時3s、自動隱藏,并且清空新輸入的手機號,輸入框內(nèi)為待輸入狀態(tài)
且需校驗輸入的是否為11位手機號,如非手機號:提示語【請輸入11位正確手機號碼,定時1.5s、自動隱藏】
2. 輸入的團隊名稱是否已使用?
若使用:輸入框內(nèi)給與提示語?!驹搱F隊名稱已被使用,請換個團隊名稱試試、】定時3s、自動隱藏,并且清空新輸入的手機號,輸入框內(nèi)為待輸入狀態(tài)
若未使用:原注冊時輸入的企業(yè)名稱,存儲在企業(yè)信息的-企業(yè)名稱做updata操作,觸發(fā)節(jié)點為創(chuàng)建團隊最后一步操作,即加載loding成功時做觸發(fā)。
3. 聯(lián)系方式及團隊名稱查詢觸發(fā)為輸入完畢,且換輸入框時觸發(fā)
如圖:點擊創(chuàng)建團隊,loding的加載界面及過程。
點擊【創(chuàng)建團隊】后進入創(chuàng)建加載頁面,加載過程中可能會遇到各種因素導致創(chuàng)建失?。ɡ捍藭r服務器崩潰,等未知因素)若創(chuàng)建失敗,則跳轉(zhuǎn)至創(chuàng)建失敗提示頁面、創(chuàng)建失敗給與404報錯界面。
404界面固定報錯提示語:柚子君走丟了,請重新嘗試創(chuàng)建。此時數(shù)據(jù)中,個人信息-聯(lián)系電話 及企業(yè)信息-企業(yè)名稱字段做updata的操作。且記錄之前注冊時的電話及名稱。
創(chuàng)建后先給與當前頁面提示語[創(chuàng)建成功]定時1.5s,自動隱藏。隱藏后進入初始化團隊賬號頁面,現(xiàn)在暫時不做浮層指引教學。前端預留,此時數(shù)據(jù)庫記錄該賬號對應的企業(yè)ID。手機號對應的團隊名稱
注冊企業(yè)租戶賬號后,申請加入團隊業(yè)務功能模塊。
如圖:點擊申請加入團隊,進入該頁面。
輸入框內(nèi)輸入用戶需要加入的根機構(gòu)名稱。
場景:輸入的團隊名稱已加入場景下,給與錯誤提示語
輸入的團隊名稱系統(tǒng)內(nèi)無名稱,給與錯誤提示語。且搜索無果的場景下
提示語內(nèi)容為【沒有與您搜索項類似的團隊,您可以換個名稱試試】
點擊搜索,進入加載搜索loding,加載max5s,超時給與404報錯界面,
所搜結(jié)果呈現(xiàn)界面,如圖:
①結(jié)果呈現(xiàn),以表單形式給與,表單最多顯示5行,排序無規(guī)則,以5個結(jié)果/頁進行翻頁處理。
表單字段:團隊名稱+團隊聯(lián)系人【即租戶個人中心-昵稱字段】
根機構(gòu)搜索范圍:數(shù)據(jù)庫全局。搜索內(nèi)容組合【包含字符串】
②點擊其中的某個團隊,申請加入,交互跳轉(zhuǎn)頁面。
備注輸入框長度限制:50文字、備注輸入,點擊確定按鈕,會向被加入的根機構(gòu)admin發(fā)起一條消息:消息內(nèi)容:【hr名稱】您好,【雇員姓名】于【申請加入時間】申請加入團隊,請?zhí)幚怼?/p>
五、找回密碼功能需求說明
賬號:11位手機號校驗【提示語:請輸入11位手機號,定時器3s,自動隱藏,】
若手機號未注冊【該手機號未注冊-定時器3s,自動隱藏】
驗證碼:有效期60s,重復獲取間隔60s,輸入錯誤驗證碼,在輸入框提示:請輸入正確驗證,或請重新獲取驗證碼。
短信下發(fā)驗證碼模板內(nèi)容例如:金柚網(wǎng)提示您,您找回密碼的驗證碼為565641【六位】驗證碼模板配置時,設置有效期為5分鐘,防止用戶無聊,隨意申請驗證碼,這樣會增加我們企業(yè)驗證碼的費用。
密碼:6-20位任意純屬數(shù)字/純英文/數(shù)字英文組合【錯誤提示語:請輸入6-20位密碼】
密碼確認:兩次密碼輸入需一致。若不一致提示語【請保持2個密碼一致】
六、登錄需求說明文檔
賬號輸入:11位手機號,輸入錯誤提示語【請輸入11位已注冊的手機號】
密碼輸入錯誤提示語:輸入正確密碼
記住密碼時效為:7天,7天內(nèi)登錄無需再次輸入密碼
登錄前需注意如下場景不可登錄系統(tǒng):
- 賬號未經(jīng)注冊—提示語:您暫未注冊賬號,請注冊后再登錄?!咎崾菊Z定時1.5s、自動隱藏】
- 賬號被后臺管理員拉黑–提示語:您暫時無法登錄系統(tǒng)賬戶,請聯(lián)系客服人員??头娫挒?00-0000-000?!敬颂柎a系統(tǒng)正式投入租戶開放時,換成真實人工客服電話/機器人電話、提示語為固定在登錄頁面。不做定時隱藏?!?/li>
- 賬號已注冊、但其賬號不是admin賬號。并且該賬號未啟用狀態(tài)?!灸馁~號暫未啟用,請聯(lián)系企業(yè)管理員修改賬號狀態(tài)。–不顯示企業(yè)租戶管理員聯(lián)系方式。出于隱私維度考慮】
- 租戶/員工賬號被禁用。【您的賬號當前處于禁用狀態(tài)、請聯(lián)系管理員。固定在提示頁面,】
- 租戶/員工所屬角色被禁用?!灸斍八鶎俚慕巧驯还芾韱T禁用,請聯(lián)系管理員】
- 租戶/員工所在部門被禁用?!究傻顷?、進入系統(tǒng)后僅顯示菜單tab,右側(cè)提示語:您當前所在部門屬于停用狀態(tài),請聯(lián)系系統(tǒng)管理員】
需要跳轉(zhuǎn)至選擇團隊頁面后,才能進入系統(tǒng)。
第三方掃碼登錄,可往后合理排至3/4期。做第三方登錄時、請架構(gòu)師提前自行查詢對應各方平臺的開放API。
第一次在平臺上發(fā)布文章,沒寫好的地方歡迎諸位客官點評,文章對您有價值的話,點個贊唄(也可以用打賞來羞辱我)。下期文章《電子簽章通應性功能建設》
本文由 @最靚的仔 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載
題圖來自Unsplash,基于CC0協(xié)議
標題黨
架構(gòu)何在?
大神可以要一份這個架構(gòu)的PRD么,978174898@qq.com 最近正面臨一個多租戶的項目沒有思路
還是有一定的學到,謝謝大神??
標題起的有點大
不做一點夸大標題,能吸引您進來么
底層架構(gòu)設計確實需要較長時間,反復打磨調(diào)整完善。
個人感覺:前半部分的導圖比較全面,后半部分有點細,類PRD文檔了。
堅持,加油
謝謝,這篇文章確實是用PRD改的。
同感