智能教學(xué)、管理與服務(wù)系列之單體架構(gòu)VS中臺微服務(wù)
今年2月中共中央、國務(wù)院印發(fā)的《中國教育現(xiàn)代化2035》標(biāo)志著我國教育信息化轉(zhuǎn)型已經(jīng)步入關(guān)鍵時期,2019年卓云科技憑借對數(shù)字校園智慧化領(lǐng)域十余年的探索和積累,成功研發(fā)并對外發(fā)布了基于智慧校園微服務(wù)中臺的系列智慧校園解決方案,為全面構(gòu)建智慧校園領(lǐng)域的新生態(tài)助力。
什么是單體架構(gòu)?
單體架構(gòu)就是傳統(tǒng)軟件項目開發(fā)模式,無論業(yè)務(wù)多復(fù)雜都在一個工程下,不斷延申擴(kuò)展,程序不敢保證日益健壯,但絕對日益臃腫,系統(tǒng)之間交互的集成和協(xié)作成本非常高昂的一種模式。
什么是中臺微服務(wù)?
高校用戶為了打通系統(tǒng)間的集成與協(xié)作問題,有了“中心化”的思想,于是開發(fā)商也就開發(fā)了中心化的幾大平臺。“中心化”架構(gòu)的所有服務(wù)調(diào)用者和服務(wù)提供者之間的交互都必須通過這個中心點,而這個中心點的能力是很難進(jìn)行擴(kuò)展的,導(dǎo)致這中心會成為一個瓶頸。
卓云在智慧校園行業(yè)率先提出“大中臺、小前臺”戰(zhàn)略,中臺集合了智慧校園的數(shù)據(jù)運營能力和技術(shù)能力,提供標(biāo)準(zhǔn)的認(rèn)證、數(shù)據(jù)、接口以及工具,對各類型前臺業(yè)務(wù)形成強有力的支撐。而微服務(wù)是體現(xiàn)去中心化、天然分布式,是“大中臺、小前臺”戰(zhàn)略的具體實現(xiàn)方式的一種。
為什么要做微服務(wù)?
傳統(tǒng)單體架構(gòu)在規(guī)模比較小的情況下很OK,但隨著系統(tǒng)規(guī)模的擴(kuò)充,它暴露出來的問題也越來越多,我們來看看以下幾個問題:
1.復(fù)雜性不斷攀升
無論多么牛b的大拿,無論前期設(shè)計多么清晰,隨著業(yè)務(wù)復(fù)雜度的提升,程序復(fù)雜性也不斷攀升,模塊之間逐漸模糊,邏輯逐漸混亂,因為現(xiàn)實環(huán)境中項目工程管理無法達(dá)到完美的程度,就算企業(yè)拿到了CMM3甚至CMM5的企業(yè)也做不到,每個模塊都可能不同的人進(jìn)行維護(hù),前期的設(shè)計思想、邏輯和開發(fā)風(fēng)格100%無法延續(xù)。周而復(fù)始,無論多么完美的開局最后都是一鍋粥。
2.技術(shù)債務(wù)不斷提升
延續(xù)上一個問題,復(fù)雜性不斷攀升的同時,人員流動是常態(tài),疏于代碼質(zhì)量的自我管束,導(dǎo)致項目中大坑套小坑。由于單體架構(gòu),代碼龐大,出現(xiàn)問題了,明知道是坑也得跳,也無法判斷哪個坑更小,往往時間緊迫,以先填坑再說的原則進(jìn)行維護(hù),導(dǎo)致填了一個坑的同時可能又挖了更多個坑。
3.新人難于接手
原本很簡單的業(yè)務(wù),一個新人來了接手應(yīng)該很容易,但是新人不得不去了解核心業(yè)務(wù)以外更多的業(yè)務(wù),更為關(guān)鍵的是即使了解外圍業(yè)務(wù)也未必讀得懂大坑套小坑的程序,于是可能出現(xiàn)新人為了完成任務(wù),在原有環(huán)境中又開發(fā)了一次,程序越來越復(fù)雜,新開發(fā)的可能又無形中挖了新的坑……
4.技術(shù)逐漸落后、阻礙創(chuàng)新
立項之時確立了技術(shù)架構(gòu),隨著技術(shù)的發(fā)展,新技術(shù)出現(xiàn)了,但又不能隨意更改,比如起初項目使用struts2寫的,由于各模塊間有著千絲萬縷的聯(lián)系,代碼量大,邏輯不夠清楚,如果現(xiàn)在想用新技術(shù)來重構(gòu)這個項目將是非常困難的,付出的成本將非常大,不得不硬著頭皮繼續(xù)使用老的struts架構(gòu),這就阻礙了技術(shù)的創(chuàng)新。阻礙新技術(shù)創(chuàng)新的另外一方面,也影響人員的招聘,有2年左右經(jīng)驗的喜歡使用新技術(shù),沒有經(jīng)驗的喜歡學(xué)習(xí)新技術(shù),各種阻礙……
5.無法低成本地按需伸縮
一方面,技術(shù)上為擴(kuò)展某個模塊不得不考慮更多的模塊,甚至可能影響到其他模塊的功能以及性能;
另一方面,擴(kuò)展一個模塊原本一個程序員的工作量,結(jié)果需要至少2人甚至更多的人員,成本至少翻倍。
怎樣判斷什么業(yè)務(wù)適合做成微服務(wù)呢?
首先,微服務(wù)體現(xiàn)在一個“微”字上,業(yè)務(wù)清晰。假想拆分后,能否帶來業(yè)務(wù)上的隔離?對于功能和功能之間有著緊密的配合關(guān)系,如果強制拆分為較小的服務(wù)單元,會讓集成工作量急劇上升,并且這種人為的切割無法帶來業(yè)務(wù)上的真正的隔離,也就無法做到獨立部署和運行,也就不適合做成微服務(wù)了。