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