微(wei)服務不是軟件(jian)工(gong)程銀(yin)彈(dan)的10個原(yuan)因(yin)
hi,我(wo)是熵減,見字如面。
微服務是一種軟件架(jia)構風格,其旨在(zai)通過將(jiang)應(ying)(ying)用程序(xu)拆(chai)分(fen)為小型(xing)、獨立的(de)服務,來增強應(ying)(ying)用程序(xu)的(de)可(ke)(ke)伸縮性、可(ke)(ke)維護性和可(ke)(ke)測試性。
雖然微(wei)服務可以為軟(ruan)件(jian)開發提供許多好處,但(dan)它(ta)們并不總(zong)是適用于(yu)所有(you)情況的(de)最佳選擇。
換句話(hua)說,微(wei)服務架構,也(ye)不是軟件(jian)工(gong)程的銀彈(dan)。
所以(yi),技術團隊(dui)再考慮(lv)是(shi)否使用微服務架構(gou)時(shi),有(you)以(yi)下10個(ge)點,是(shi)需要慎重(zhong)考慮(lv)的。
增加了復雜性
世界上沒有免(mian)費(fei)的(de)(de)東西。實(shi)現微服務(wu)架構,需要有大量的(de)(de)基礎(chu)設施來(lai)配(pei)套的(de)(de),譬如服務(wu)發(fa)現、負載(zai)均衡和服務(wu)間通信等。這些機制(zhi)和體(ti)系(xi),會增加系(xi)統的(de)(de)復雜(za)性,讓維護成本更高。
微服務可(ke)以解(jie)決許多問(wen)題,例(li)(li)如應用(yong)程序可(ke)伸縮性(xing)和(he)可(ke)維護性(xing),但它并(bing)不是(shi)一(yi)個單一(yi)的(de)解(jie)決方案。它需要與其他(ta)技(ji)術和(he)最佳實踐結合(he)使用(yong),例(li)(li)如DevOps、CI/CD和(he)容器化。
測試更困難的
使用微(wei)服務(wu)架構時,系(xi)統的(de)測試工作會變的(de)更為的(de)復(fu)雜。除(chu)了(le)每一個服務(wu)需要(yao)必須(xu)的(de)單獨測試外,還需要(yao)與其所依賴的(de)其他服務(wu)一起來(lai)測試,才能(neng)最終保障系(xi)統的(de)質(zhi)量。
部署成本更高
微(wei)服(fu)務需要更多的開(kai)發、部署和測試工作,并且需要更多的服(fu)務器資(zi)源。
對(dui)于(yu)中(zhong)小型的應用程序(xu)和(he)簡單系(xi)統,微服務架構可能過(guo)于(yu)復雜和(he)昂貴(gui),是不值得采(cai)用。
運維成本更高
即是每一(yi)個(ge)服(fu)務都很(hen)簡單,管(guan)理和支持一(yi)個(ge)服(fu)務,總是比管(guan)理100個(ge)服(fu)務要容易(yi)的多。
當使(shi)用(yong)微服(fu)務(wu)架(jia)構時,你就必須管(guan)理(li)和監控(kong)多個服(fu)務(wu),這可(ke)能會增加不少的(de)運維資(zi)源的(de)開銷。
在微服務架(jia)構下,開(kai)發人員仍然需要投(tou)入(ru)大量的工作(zuo),例如設計和實施服務,以及(ji)監控(kong)和故障(zhang)排除。
調試更困難了
微服務(wu)架構最大一個挑戰就是:在分(fen)布式系(xi)統(tong)中(zhong),定位和調試系(xi)統(tong)問題時,會異常的(de)困難(nan)。
在一個巨大(da)的分布(bu)式的微服務系統(tong)中,要定位和識別出(chu)問題的根本原因,其困難程度是不(bu)言而喻的。譬(pi)如,需要在多個系統(tong)中去獲取信(xin)息,再加(jia)上復(fu)雜的調(diao)用關系,要理清楚后,才能做(zuo)信(xin)息的整合和串聯等。
系統時延會更高
微服(fu)務是通(tong)過(guo)網絡相(xiang)互(hu)通(tong)信的(de),這可能會給你(ni)的(de)系統帶來額外的(de)時(shi)延。
所以(yi),對于時延要求較高(gao)的場景,就需要慎重考慮微服務的調用層(ceng)級(ji)關(guan)系和(he)具體的代碼實現方式,以(yi)滿足場景所需。
難以理解的系統
當系統內多(duo)個服務獨立開發和運行時,我(wo)們就很難以掌握系統整體的運行狀況了。
系統之間是(shi)如(ru)(ru)何組合(he)的,調用(yong)請求是(shi)如(ru)(ru)何流轉(zhuan)的,數據(ju)是(shi)如(ru)(ru)何傳遞的等(deng)。
都會讓理解(jie)成本增加(jia)不少,系(xi)統(tong)變得難以掌控,可觀測性降低,分險也(ye)就增加(jia)了(le)。
需要專職團隊
微服務并不是無代價的。
微服務(wu)架構(gou)的有效(xiao)落(luo)地,需要一(yi)個(ge)具備分布(bu)式(shi)系統(tong)、網絡和DevOps專業(ye)技能的團隊。
采用微服務架構需(xu)要大量的投資,例如培訓(xun)、開發、測試、部署和維護(hu)。
企業需要(yao)考慮這(zhe)些成本,并權衡微服務(wu)架構的(de)優(you)點和(he)缺點。
安全的問題
微服務并(bing)不是無風險的,保護(hu)微服務架構比保護(hu)單體應用(yong)更具挑戰性。
采用(yong)微服務(wu)(wu)架(jia)構可能會引(yin)入(ru)新的(de)風險,例如服務(wu)(wu)之間的(de)通信(xin)問(wen)題、服務(wu)(wu)部署和版(ban)本控(kong)制問(wen)題、以及依賴關系(xi)的(de)復雜性。這些風險需要(yao)被(bei)認真評(ping)估(gu),并(bing)且需要(yao)采取適當的(de)措(cuo)施來減(jian)輕(qing)這些風險。
并不總是必要的
微服務并不(bu)是適用于(yu)所有團隊(dui)的。
采用微服務架構(gou)需(xu)要更高的技術能力和開發經驗。
對于一些中(zhong)小型團(tuan)隊或初創公司來說(shuo),可(ke)能(neng)沒有足(zu)夠的(de)資源和技(ji)能(neng)來開發和維護微服務架構。
因此,需(xu)要根據團(tuan)隊的技能(neng)和(he)經驗,以及(ji)項目的規模和(he)復(fu)雜(za)度(du)來評估,是(shi)否(fou)適(shi)合采用微服務架構(gou)。
微服務不是一個必選項,只是一個可選項而已。
最后
盡管微服務架構在很(hen)多(duo)情(qing)況(kuang)(kuang)下(xia)可以(yi)提供一些優勢,但也(ye)需(xu)要(yao)根(gen)據具體情(qing)況(kuang)(kuang)進(jin)行評估和決策。
技術團隊,需要考慮技術和業務(wu)需求(qiu),以(yi)及組(zu)織的能力和資(zi)源(yuan)等(deng)多(duo)個方面,并綜合(he)權衡微服務(wu)架構的優缺點(dian),才能做(zuo)出正(zheng)確的決策(ce)。
閱讀,思考,練習,分(fen)享,日(ri)(ri)日(ri)(ri)不(bu)斷之功。
嗯,寫完了。
新的一(yi)天,加油哦 (? ??_??)?
關注 熵減黑客 ,一起學習成長
