說了這麼多,看起來用微服務可以治百病,難到它一點缺點都沒有嗎?
不是的,萬物皆有正反兩極,你想想看,原本你的系統只有一大包,假設拆成五個微服務好了,如果你公司並沒有整合 CI/CD,每次你都需要手動部署程式碼,原本你只要手動做一次,現在要做五次了。
單體式系統架構就算程式再複雜,也只是在函式之間呼叫來呼叫去,當你將它們拆開後,它們彼此之間就算是外部系統了,在不停地轉傳的過程中,訊息會不會在中途遺失?訊息遺失的話該怎麼處理。又或者你是否有足夠成熟的監控機制,足以察覺到訊息有遺失?
訊息在服務之間傳來傳去,是否中間會被截取,進而引發系統安全疑慮。如果你收到一個 Bug 回報,原本只有看一個 log,但你現在卻有 5 個 log,如果你的服務邊界切割的好不好?說不定你無法明確的知道該查看哪個 log,增加了追 bug 的複雜度。