無論係初步開發軟體階段定係開發完軟體考慮緊轉架構嘅時候,你都要了解吓時下最流行嘅兩種軟體架構👉🏻單體架構(Monolithic Architecture)同埋微服務(Microservices),一齊了解兩種架構嘅分別,睇吓邊種更加啱公司嘅長遠發展啦!💪🏻
🌟咩係單體架構?
佢係軟體傳統嘅模型,成個軟體建構做一個單一嘅大型運算網絡,而且多數都係用一樣嘅程式語言同技術,將所有業務功能模組同服務結合喺同一個程式碼庫,簡單舉個例子,喺百貨公司🛍️入面,無論係食物、服裝定係電器都係喺同一個地方,就好似單體架構咁屬於單一,而且係唔可以分割嘅。
🌟單體架構三大好處
1️⃣ 易於部署:
因為佢直接整合晒所有功能嘅完整架構,所以部署變得比較簡單同快捷。
2️⃣ 初期開發快捷:
多數都係用單一嘅程式碼嚟建構軟體,令開發速度更快,而難度相對比較低。
3️⃣ 測試容易:
佢係一個整合型架構,所以做端對端測試嘅時候,執行速度通常比分散式架構嘅測試速度更加快。
🌟三個單體架構嘅缺點
1️⃣ 可擴展性低:
系統嘅擴展只限於成個軟體,冇辦法對特定功能組件做擴展。
2️⃣ 容錯性低:
呢個架構令到程式碼耦合性非常之高,只要其中一個模組有錯誤就會令成個系統都發生問題。基本上每一次更新都係牽一髮而動全身,一個小變動都可能需要成個系統做修正🫨!
3️⃣ 靈活性低:
無論係框架定係語言嘅任何改變都會影響成個系統,令到成本提高又嘥時間,變相成個系統都受到用緊嘅技術限制,可以變動嘅空間太低。即係當原本團隊用緊A語言技術去寫成個系統,但新團隊係用 B 語言技術去做就會令到個系統嘅語言超混亂,甚至要重新寫過。
🌟咩係微服務?
佢係將唔同嘅功能同服務拆分成一組組細嘅模組,令到耦合性變得鬆散,每一個模組負責特定嘅業務功能,可以獨立開發、部署同埋擴展,甚至有專屬嘅程式碼庫,就好似一條街入面有好多唔同嘅小店,每個小店都專注賣一樣唔同嘅嘢咁,獨立性高,一間小店嘅離開都唔會影響到成條街。
🌟微服務三大好處
1️⃣ 獨立部署:
軟體基於佢嘅特定功能拆分唔同嘅模組,每個模組都可以個別部署。開發人員可以專注番負責嘅模組,唔洗擔心衝突嘅發生。
2️⃣ 靈活性高:
開發人員可以自由選擇佢用開嘅工具同程式碼語言,唔洗好似單體結構咁限定晒,而且每個模組可以單獨擴展,根據番需求去有效分配資源,令到開發或者更新維護嘅過程靈活性高,效率自然就更高喇。
3️⃣ 維護容易:
每個模組獨立做更新或者維護,就算是但一個模組程式碼出現問題都唔會令到成個軟體崩潰,令到軟體更新版本更快更易,停機時間都相對變短。
🌟兩個微服務嘅缺點
1️⃣ 成本高:
因為模組分得比較細緻,變相開發團隊要有一定規模先可以令效率更高,亦需要管理人員去制定模組之間嘅 API 協定,同埋管理成個團隊溝通同埋協調各個模組嘅更新,即係唔只要有一定嘅技術,持續嘅整合都需要密切嘅溝通同交流,令到開發成本大增。
2️⃣ 管理困難:
每一個模組都有自己嘅更新日誌、唔同嘅語言同技術,軟體嘅監控技術都會因為鬆散嘅結構唔容易發現到問題,而且如果冇通用平台、日誌標準等,開發團隊都好難知道應該搵邊個去支援,令到整合程式碼又好定係管理團隊都比較困難。
所以,冇話邊個架構係最好,只有邊樣係對公司嚟講最啱用。基本上,如果軟體功能定位上唔係太複雜、冇一定規模嘅開發團隊同埋好少會做更新嘅話,單體架構的確係最理想同最快開發到軟體。但係公司規模大,軟體定位又好複雜嘅話都建議可以考慮擴建人手去用微服務,可以確保番每次嘅小更新,軟體都唔易因為出錯而崩潰,搞到要重建軟體。