一蟋字、概述
本文基于團(tuán)隊(duì)在開發(fā)aPaas過程中的討論及實(shí)踐經(jīng)驗(yàn)以及對網(wǎng)上相關(guān)aPaaS資料的學(xué)習(xí),總結(jié)整理而成扭勉,著重介紹有關(guān)aPaaS平臺(tái)設(shè)計(jì)方面的一些思考鹊奖。
??根據(jù)Gartner的定義,aPaaS是基于PaaS的一種解決方案涂炎,支持應(yīng)用程序在云端的開發(fā)忠聚、部署和運(yùn)行,提供軟件開發(fā)中的基礎(chǔ)工具給用戶唱捣,包括數(shù)據(jù)對象两蟀、權(quán)限管理、用戶界面等震缭。
??簡而言之赂毯,aPaaS是讓用戶能自己開發(fā)應(yīng)用程序的一個(gè)服務(wù)平臺(tái),其目的是為了提高應(yīng)用研發(fā)的交付效率。關(guān)于aPaaS是否真能提高交付效率網(wǎng)上其實(shí)是有爭議的党涕,但本文旗幟鮮明地持肯定意見活烙,這源于我對軟件工程及aPaaS的下述幾個(gè)基本理念。
- 效率因素:軟件工程領(lǐng)域的效率提升源于技術(shù)變革和分工細(xì)化兩個(gè)方面遣鼓。
- 本質(zhì)變化:aPaaS本質(zhì)上是一種新的開發(fā)方法啸盏,而不是一種新技術(shù),帶來的是分工的細(xì)化而不是技術(shù)的變革骑祟。
- 力量來源:aPaaS開發(fā)應(yīng)用的方式極大利用了軟件專業(yè)領(lǐng)域的技術(shù)積累和非專業(yè)人士關(guān)于軟件的知識(shí)沉淀回懦。
二、模型設(shè)計(jì)
??模型是表達(dá)設(shè)計(jì)構(gòu)思的好工具次企,在開始設(shè)計(jì)aPaaS平臺(tái)前怯晕,我們首先對要建設(shè)一個(gè)什么樣的aPaaS要有一個(gè)統(tǒng)一的認(rèn)知,這個(gè)認(rèn)知建立在一些基本的概念之上缸棵,可以稱之為概念模型舟茶。概念模型可以看做是設(shè)計(jì)草圖或設(shè)計(jì)大綱,是對我們腦海中想象的設(shè)計(jì)對象的最粗略描述堵第,是設(shè)計(jì)者吧凉、實(shí)現(xiàn)者、使用者所達(dá)成的第一份共識(shí)踏志。
(注意阀捅,本文中的“概念模型”一詞有別于數(shù)據(jù)庫設(shè)計(jì)領(lǐng)域中所說的概念模型。 )
概念模型
??清晰明確的概念模型及對概念的解釋是后續(xù)設(shè)計(jì)的基礎(chǔ)针余,也是在團(tuán)隊(duì)協(xié)作中保障概念完整性的必要手段饲鄙。下面是我對模型中涉及的aPaaS相關(guān)概念的理解:
- aPaaS平臺(tái)
平臺(tái)是一個(gè)系統(tǒng),由一系列工具和服務(wù)組成圆雁。aPaaS平臺(tái)包含了創(chuàng)建應(yīng)用的工具忍级、支撐aPaaS應(yīng)用運(yùn)行的服務(wù)及底層數(shù)據(jù)存儲(chǔ)、網(wǎng)絡(luò)伪朽、硬件等基礎(chǔ)設(shè)施轴咱。
- 應(yīng)用(App)
應(yīng)用的全稱是應(yīng)用程序,在aPaaS平臺(tái)上創(chuàng)建出來的應(yīng)用程序驱负,其運(yùn)行依賴于aPaaS平臺(tái)提供的服務(wù)嗦玖,應(yīng)用可分為普通應(yīng)用和SaaS應(yīng)用。
- 租戶
租戶是指租賃使用一個(gè)系統(tǒng)或平臺(tái)的用戶跃脊,租戶通常是一個(gè)機(jī)構(gòu)宇挫。在aPaaS上,租戶可自建應(yīng)用酪术,也可以選用服務(wù)供應(yīng)商創(chuàng)建的應(yīng)用器瘪,不同租戶的應(yīng)用和數(shù)據(jù)應(yīng)彼此隔離翠储。
- 服務(wù)供應(yīng)商(Service Provider,SP)
服務(wù)供應(yīng)商指專門開發(fā)應(yīng)用給aPaaS租戶使用的特殊機(jī)構(gòu)橡疼,SP開發(fā)的應(yīng)用一般為SaaS類應(yīng)用援所,對應(yīng)的租戶自建的應(yīng)用可稱之為普通應(yīng)用或私有應(yīng)用。
- SaaS應(yīng)用
SaaS應(yīng)用指一個(gè)SaaS系統(tǒng)欣除,一個(gè)SaaS應(yīng)用可以給不同的租戶使用住拭。
- 應(yīng)用池
應(yīng)用池是指所有應(yīng)用的集合,包含普通應(yīng)用和SaaS應(yīng)用历帚,應(yīng)用池由aPaaS平臺(tái)統(tǒng)一管理滔岳。
三、架構(gòu)設(shè)計(jì)
??架構(gòu)設(shè)計(jì)的目標(biāo)是為系統(tǒng)提供一個(gè)藍(lán)圖挽牢,用于指導(dǎo)后續(xù)的詳細(xì)設(shè)計(jì)和實(shí)現(xiàn)開發(fā)等各方面工作谱煤。一個(gè)完整詳實(shí)的架構(gòu)應(yīng)該從多方面視角進(jìn)行描述,常用的方法有4+1視圖禽拔、五視圖法等刘离。然而實(shí)際工作中大家往往只用一張圖來表達(dá)架構(gòu),其側(cè)重點(diǎn)也因人而異睹栖,并沒有事實(shí)上的統(tǒng)一標(biāo)準(zhǔn)硫惕。
??本文我用邏輯架構(gòu)和系統(tǒng)架構(gòu)兩張圖來表達(dá)對aPaaS架構(gòu)的設(shè)計(jì)構(gòu)思。
(一)邏輯架構(gòu)
??邏輯架構(gòu)更多面向用戶和產(chǎn)品人員磨淌,主要從功能職責(zé)的角度對系統(tǒng)進(jìn)行模塊化設(shè)計(jì)疲憋,并闡述各模塊之間的邏輯關(guān)系凿渊。
邏輯模塊說明
- 平臺(tái)門戶
這是用戶了解并接觸aPaaS平臺(tái)的入口梁只,是平臺(tái)對外的門戶網(wǎng)站。用戶在未登錄狀態(tài)下應(yīng)該可以看到到平臺(tái)的能力介紹埃脏、應(yīng)用市場搪锣、幫助文檔等內(nèi)容。
- 應(yīng)用搭建環(huán)境
這是用戶基于aPaaS平臺(tái)搭建應(yīng)用的集成開發(fā)環(huán)境(IDE)彩掐,通常實(shí)現(xiàn)為一個(gè)基于Web的拖拽式的設(shè)計(jì)器构舟。用戶在這里設(shè)計(jì)應(yīng)用的頁面、數(shù)據(jù)模型堵幽,預(yù)覽設(shè)計(jì)結(jié)果狗超,最終打包發(fā)布,便完成了應(yīng)用的搭建朴下。
- 租戶/SP管理后臺(tái)
這是租戶或SP對其在平臺(tái)上資源和信息進(jìn)行管理的后臺(tái)努咐,例如查看、啟用殴胧、禁用創(chuàng)建的應(yīng)用渗稍,管理應(yīng)用的用戶佩迟、數(shù)據(jù)、權(quán)限竿屹,編輯查看租戶的注冊信息等报强。
- 運(yùn)營管理后臺(tái)
這是平臺(tái)的運(yùn)營或管理人員對平臺(tái)本身進(jìn)行管理的后臺(tái),例如管理租戶拱燃、應(yīng)用秉溉、IDE、服務(wù)器資源等碗誉。
- 身份服務(wù)
身份服務(wù)負(fù)責(zé)平臺(tái)的注冊登錄坚嗜、角色權(quán)限管理、租戶的組織人員信息維護(hù)等诗充。身份服務(wù)可以實(shí)現(xiàn)為IAM或IDaaS苍蔬,它是構(gòu)成aPaaS平臺(tái)的基礎(chǔ)部件。
- 應(yīng)用運(yùn)行環(huán)境
這是支撐aPaaS應(yīng)用運(yùn)行的一組服務(wù)蝴蜓,如負(fù)責(zé)繪制應(yīng)用界面的渲染引擎碟绑、保障應(yīng)用流程正確執(zhí)行的流程引擎、以及對應(yīng)用運(yùn)行進(jìn)行監(jiān)控管理的監(jiān)控和日志模塊等茎匠。
- 應(yīng)用服務(wù)
這是用于管理應(yīng)用元數(shù)據(jù)的一組服務(wù)格仲,如查看或修改應(yīng)用的基本信息、配置信息诵冒,按條件獲取應(yīng)用或應(yīng)用模板等凯肋。模塊1~4中應(yīng)該相關(guān)的功能將依賴此服務(wù)。
- 數(shù)據(jù)服務(wù)
這是一組負(fù)責(zé)平臺(tái)所有數(shù)據(jù)的讀寫汽馋、搜索侮东、或分析的服務(wù)。
- 權(quán)益服務(wù)
這是有關(guān)租戶付費(fèi)權(quán)益的服務(wù)豹芯,負(fù)責(zé)平臺(tái)付費(fèi)功能的開通悄雅、關(guān)閉、計(jì)費(fèi)等铁蹈。
(二)系統(tǒng)架構(gòu)
??系統(tǒng)架構(gòu)面向開發(fā)和測試人員宽闲,主要從技術(shù)角度對系統(tǒng)水平和垂直拆分,描述組成系統(tǒng)的前端程序握牧、后臺(tái)服務(wù)容诬、子系統(tǒng)、中間件等之間的關(guān)聯(lián)依賴關(guān)系沿腰。
系統(tǒng)模塊說明
- 應(yīng)用層
應(yīng)用層細(xì)分為前端览徒、網(wǎng)關(guān)和API三層,前端通常是基于Web技術(shù)實(shí)現(xiàn)運(yùn)行于瀏覽器中矫俺,因此本層也可以稱之為Web層吱殉。但也可以基于小程序掸冤、移動(dòng)端等技術(shù)實(shí)現(xiàn)前端層。前端的模塊主要按產(chǎn)品功能劃分友雳,其中的組件稿湿、模塊可能不止一個(gè),X前端代表其他前端模塊押赊。
- 服務(wù)層
服務(wù)層是負(fù)責(zé)業(yè)務(wù)處理的一層饺藤,按業(yè)務(wù)功能進(jìn)行模塊劃分,各模塊不應(yīng)定與API層一一對應(yīng)流礁,一個(gè)API模塊按需可以依賴多個(gè)服務(wù)涕俗。
- 數(shù)據(jù)層
數(shù)據(jù)層是存儲(chǔ)數(shù)據(jù)的一層,分為在線數(shù)據(jù)和離線數(shù)據(jù)神帅。
- PaaS層
PaaS層通常是一個(gè)云計(jì)算平臺(tái)再姑,包含了數(shù)據(jù)庫、操作系統(tǒng)找御、虛擬化元镀、網(wǎng)絡(luò)代理等一系列基礎(chǔ)設(shè)施。
四霎桅、實(shí)現(xiàn)設(shè)計(jì)
??實(shí)現(xiàn)設(shè)計(jì)是對架構(gòu)的實(shí)現(xiàn)方案和實(shí)現(xiàn)過程的設(shè)計(jì)栖疑。實(shí)現(xiàn)方案要根據(jù)團(tuán)隊(duì)現(xiàn)狀、企業(yè)基礎(chǔ)設(shè)施滔驶、項(xiàng)目工期遇革、未來規(guī)劃等約束條件進(jìn)行技術(shù)選型,確定技術(shù)實(shí)現(xiàn)方案揭糕、輸出系統(tǒng)的技術(shù)架構(gòu)萝快。實(shí)現(xiàn)過程是要對架構(gòu)中的模塊進(jìn)行優(yōu)先級(jí)排序,制定架構(gòu)實(shí)現(xiàn)的里程碑插佛,有時(shí)甚至要對部分模塊進(jìn)行過渡方案的設(shè)計(jì)杠巡,因?yàn)槿魏蜗到y(tǒng)的實(shí)現(xiàn)都不是一撮而就的,架構(gòu)的落地應(yīng)該是一個(gè)逐步滿足產(chǎn)品需求的循序漸進(jìn)的過程雇寇。
??基于上述原因,本文暫不提供具體的實(shí)現(xiàn)設(shè)計(jì)蚌铜,但分享幾個(gè)在實(shí)現(xiàn)系統(tǒng)架構(gòu)時(shí)的注意事項(xiàng)锨侯。
(一)概念完整性
??概念完整性有時(shí)也稱作概念一致性,指的是在概念的傳遞過程中確保概念不被曲解冬殃、所有人都對同一概念有相同的理解囚痴。可以類比數(shù)據(jù)安全三要素之一的數(shù)據(jù)完整性來理解审葬。在系統(tǒng)設(shè)計(jì)的任一階段深滚,都會(huì)引入很多概念奕谭,概念完整性是確保設(shè)計(jì)被準(zhǔn)確實(shí)現(xiàn)的重要基礎(chǔ)。
(二)康威定律
??康威定律是馬爾文康威1967提出的:“設(shè)計(jì)系統(tǒng)的架構(gòu)受制于產(chǎn)生這些設(shè)計(jì)的組織的溝通結(jié)構(gòu)痴荐⊙” 簡單來說就是,有什么樣人員組織結(jié)構(gòu)就會(huì)設(shè)計(jì)出什么樣的系統(tǒng)架構(gòu)生兆。后來康威定律逐漸演變?yōu)樗膫€(gè)定律:
- 第一定律 組織溝通方式會(huì)通過系統(tǒng)設(shè)計(jì)表達(dá)出來难捌。
- 第二定律 時(shí)間再多一件事情也不可能做的完美,但總有時(shí)間做完一件事情鸦难。
- 第三定律 線型系統(tǒng)和線型組織架構(gòu)間有潛在的異質(zhì)同態(tài)特性根吁。
- 第四定律 大的系統(tǒng)組織總是比小系統(tǒng)更傾向于分解。
(三)演化原則
??有句話叫“好的架構(gòu)是進(jìn)化出來的合蔽,不是設(shè)計(jì)出來的”击敌。雖然本文給出的設(shè)計(jì)更多是基于理性模型,但這不代表我認(rèn)可設(shè)計(jì)中的理性主義拴事。設(shè)計(jì)中的理性主義者認(rèn)為良好的教育愚争、成熟的經(jīng)驗(yàn)和足夠細(xì)致的思考能讓設(shè)計(jì)者創(chuàng)造出完美的作品。與之相對的挤聘,設(shè)計(jì)的實(shí)證主義者則認(rèn)為轰枝,人都優(yōu)缺點(diǎn)、總是會(huì)犯錯(cuò)的组去,因此設(shè)計(jì)工作就應(yīng)該是一個(gè)在實(shí)踐中不斷找尋缺陷并在下一次迭代中改進(jìn)提升的過程鞍陨。相信大部分人都會(huì)選擇實(shí)證主義的吧。
參考資料
- 產(chǎn)品領(lǐng)域的元宇宙:aPaaS產(chǎn)品解構(gòu)
http://www.woshipm.com/pd/5224337.html - 一文講透APaaS平臺(tái)是什么
https://blog.mingdao.com/11411.html - 騰訊ToB从隆,“千帆計(jì)劃”進(jìn)化
https://www.leiphone.com/category/CorporateServices/iuLnjB7Qgnt4FcOu.html - 什么是IDaaS
https://help.aliyun.com/document_detail/408885.html - 阿里低代碼引擎和生態(tài)建設(shè)實(shí)戰(zhàn)及思考
https://mp.weixin.qq.com/s/MI6MrUKKydtnSdO4xq6jwA - 《設(shè)計(jì)原本》(圖靈獎(jiǎng)得主诚撵、《人月神話》作者經(jīng)典著作)