實現微服務會帶來哪些挑戰?
微服務給我們帶來的並非只有好處,還有相應的一些挑戰。
服務“微”化之後,一個顯著的特點就是服務的數量增多了。如果將軟體開發和交付也作為一種生產模式看待,那麼數量眾多的微服務實際上就類似於傳統生產線上的產品,而在傳統生產模型下,為了能夠高效地生產大量產品,通常採用的就是標準化生產。
比如在汽車產業,在福特 T 型車沒有出來之前,大多汽車企業的生產效率都不高,而福特在引入標準化生產線之後,福特 T 型車得以大量生產並以低成本優勢快速普及。
在其他行業也是同樣的道理,個性化生產雖然會深得個別使用者的喜歡,但生產成本通常也會很高,生產效率因為受限於個性化需求,也無法從“熟能生巧”中獲益,所以,終端使用者需要為生產成本和效率付出更多的溢價才能獲得最終產品。
而相對於個性化生產來說,標準化生產走的是另一條路,通過生產標準產品,使得整條生產鏈路可重複,從而提升了生產效率,可以為更廣層面的使用者提供大量“物美價廉”的標準產品。
微服務的研發和交付其實就類似於產品的生產鏈路,而數量大這一特點則決定了,我們無法通過個性化的生產模式來支撐整個微服務的交付鏈路和研發體系。
雖然微服務化之後,我們可以投入相應的人力和團隊對應各個微服務的開發和交付,可擴充套件性上絕對沒有問題,但這不意味著現實情況下我們就能這樣做,因為這些都涉及人力和資源成本,而這往往是受限的。所以,使用標準化的思路來開發和交付微服務就變成了自然而然的選擇:
通過標準化,我們可以重複使用開發階段打造的一系列環境和工具支援。
通過標準化,我們可以複用支援整個微服務交付鏈路的各項基礎設施。
通過標準化,我們可以減少採購差異導致的成本上升,同時更加高效地利用硬體資源。
通過標準化,我們可以用標準的協議和格式來治理和維護數量龐大的微服務。
如果你還對使用標準化的思路來構建微服務體系存有疑惑,那麼,不妨再結合微服務的多語言生態特性思考一番:
增加一種語言生態用於微服務的開發和交付,我們是否要圍繞著這種語言生態和微服務的需求重新搭建一套研發/測試環境?
我們是否還要圍繞著這種語言生態打造一系列的工具來提升日常開發的效率?
增加一種語言生態,我們是不是還要圍繞這種語言生態搭建一套針對微服務的交付鏈路基礎設施?
增加一種語言生態,我們是否還要圍繞它提供特定的硬體環境以及運維支撐工具和平臺?
多語言生態雖然靈活度高了,不同語種和思路的團隊成員也能夠百花齊放了,但是不是也同樣帶來了以上一系列的成本?
所以,很多事情你能做,並不意味著你一定要做。適度的收縮語言生態的選擇範圍,並圍繞主要的語言生態構建一套標準化的微服務交付體系,或許是更為合理的做法。
要實施高效可重複的標準化微服務生產,我們需要有類似傳統行業生產線的基礎設施。否則,高效可重複的開發和交付大量的微服務就無從談起,所以,完備的微服務研發和交付體系基礎設施建設就成為了實施微服務的終極挑戰。
一個公司或者組織要很好地或者說成熟地實施微服務化戰略,為交付鏈路提供完備支撐的基礎設施建設必不可少!
- 疫情催化下的全球遠端工作調查報告
- 給產品經理的9千字總結:系統間資料傳輸關注這些就夠了:介面、otter、log4j、SFTP、MQ……
- 安全新手入坑——如何在虛擬機器中安裝作業系統 VMware Tools(T)的安裝
- 王者連跪是什麼感覺?
- 抓取了1400家科技公司的招聘資訊,我發現數據工程師比資料科學家更有市場 - 知乎
- 21中國礦業大學北京\礦大北京計算機考研複試經驗
- Hyperledger Fabric學習筆記(二)- Fabric 2.2.1環境搭建
- 以向量運算為例,總結運算子過載
- svn認證失敗,解決方案
- Cryptographie
- 跟我學Android之七 資原始檔
- 當檔案記憶體使用量並列印檔案超過100k自動結束程式
- R語言 lightgbm 演算法優化:不平衡二分類問題(附程式碼)
- 2021年軟體開發的七大趨勢
- 實現微服務會帶來哪些挑戰?
- 【重點】初窺Linux 之 我最常用的20多條命令
- 如何使用這個 KDE Plasma 文字編輯器?
- SCRIPT7002: XMLHttpRequest: 網路錯誤 0x2ef3的解決方法
- 程式設計師漫畫:終極廣告攔截器
- 猜數字遊戲,遊戲介面