Saturday, December 30, 2017

microservices prerequisites

這兩天看了一篇文章, Enough with the microservices ,文章的大意是講,作者反對成長中的公司,盲目地將公司的軟體架構改成「微服務」,因為帶來的損害大過優點。

文章的最後,介紹了 Martin Fowler 的「微服務的先決條件 (microservices prerequisites) 」。即,要把公司的軟體架構改成微服務,要先做哪些事? 並且提到,對於許多公司,光是完成前兩項,大概就可以解決 90% 以上的問題,並不需要真的做到五項都完成,完整地把軟體架構改成微服務。

先決條件清單如下:

  1. 清理應用程序。確保應用程序具有良好的自動化測試套件,並使用了最新版本的軟件包、框架和編程語言。
  2. 重構應用程序,把它拆分成多個模塊,為模塊定義清晰的API。不要讓外部代碼直接觸及模塊內部,所有的交互都應該通過模塊提供的API來進行。
  3. 從應用程序中選擇一個模塊,並把它拆分成獨立的應用程序,部署在相同的主機上。你可以從中獲得一些好處,而不會帶來太多的運維麻煩。不過,你仍然需要解決這兩個應用之間的交互問題,雖然它們都部署在同一個主機上。不過你可以無視微服務架構裡固有的網絡分區問題和分佈式系統的可用性問題。
  4. 把獨立出來的模塊移動到不同的主機上。現在,你需要處理跨網絡交互問題,不過這樣可以讓這兩個系統之間的耦合降得更低。
  5. 如果有可能,可以重構數據存儲系統,讓另一個主機上的模塊負責自己的數據存儲。