實現微服務會帶來哪些挑戰?

微服務給我們帶來的並非只有好處,還有相應的一些挑戰。
服務“微”化之後,一個顯著的特點就是服務的數量增多了。如果將軟件開發和交付也作為一種生產模式看待,那麼數量眾多的微服務實際上就類似於傳統生產線上的產品,而在傳統生產模型下,為了能夠高效地生產大量產品,通常採用的就是標準化生產。


比如在汽車產業,在福特 T 型車沒有出來之前,大多汽車企業的生產效率都不高,而福特在引入標準化生產線之後,福特 T 型車得以大量生產並以低成本優勢快速普及。
在其他行業也是同樣的道理,個性化生產雖然會深得個別用戶的喜歡,但生產成本通常也會很高,生產效率因為受限於個性化需求,也無法從“熟能生巧”中獲益,所以,最終用戶需要為生產成本和效率付出更多的溢價才能獲得最終產品。
而相對於個性化生產來說,標準化生產走的是另一條路,通過生產標準產品,使得整條生產鏈路可重複,從而提升了生產效率,可以為更廣層面的用戶提供大量“物美價廉”的標準產品。
微服務的研發和交付其實就類似於產品的生產鏈路,而數量大這一特點則決定了,我們無法通過個性化的生產模式來支撐整個微服務的交付鏈路和研發體系。
雖然微服務化之後,我們可以投入相應的人力和團隊對應各個微服務的開發和交付,可擴展性上絕對沒有問題,但這不意味著現實情況下我們就能這樣做,因為這些都涉及人力和資源成本,而這往往是受限的。所以,使用標準化的思路來開發和交付微服務就變成了自然而然的選擇:

通過標準化,我們可以重複使用開發階段打造的一系列環境和工具支持。
通過標準化,我們可以複用支持整個微服務交付鏈路的各項基礎設施。
通過標準化,我們可以減少採購差異導致的成本上升,同時更加高效地利用硬件資源。
通過標準化,我們可以用標準的協議和格式來治理和維護數量龐大的微服務。
如果你還對使用標準化的思路來構建微服務體系存有疑惑,那麼,不妨再結合微服務的多語言生態特性思考一番:
增加一種語言生態用於微服務的開發和交付,我們是否要圍繞著這種語言生態和微服務的需求重新搭建一套研發/測試環境?
我們是否還要圍繞著這種語言生態打造一系列的工具來提升日常開發的效率?
增加一種語言生態,我們是不是還要圍繞這種語言生態搭建一套針對微服務的交付鏈路基礎設施?
增加一種語言生態,我們是否還要圍繞它提供特定的硬件環境以及運維支撐工具和平臺?
多語言生態雖然靈活度高了,不同語種和思路的團隊成員也能夠百花齊放了,但是不是也同樣帶來了以上一系列的成本?

所以,很多事情你能做,並不意味著你一定要做。適度的收縮語言生態的選擇範圍,並圍繞主要的語言生態構建一套標準化的微服務交付體系,或許是更為合理的做法。
要實施高效可重複的標準化微服務生產,我們需要有類似傳統行業生產線的基礎設施。否則,高效可重複的開發和交付大量的微服務就無從談起,所以,完備的微服務研發和交付體系基礎設施建設就成為了實施微服務的終極挑戰。
一個公司或者組織要很好地或者說成熟地實施微服務化戰略,為交付鏈路提供完備支撐的基礎設施建設必不可少!


分享到:


相關文章: