對於微服務的思考

通信 科技 極客聊天 2017-06-23

起源

在我的2017年計劃裡,提到想去探討微服務對於新興業務和初創公司的價值,是否有指導作用。

經過幾個月的折騰和摸索,基本得到了想要的結論,首先列在這裡。

  1. 對於初創公司和業務,部署微服務基本上是掉坑裡了。

  2. 對於大公司的新興業務,有基礎技術棧和業務棧的積累,才是微服務的生存地。注意這裡有技術棧和業務棧兩部分內容。

微服務的邊界

推薦王垠的這篇博客現實理想主義者,代碼的首要目標是“解決問題”,其次才是“優雅”、或者可擴展性,或者其它的什麼因素。

問題:微服務能夠推動業務快速迭代?

答案是看情況。

對於初創公司而言,很多時候面臨的不確定性太大,遠遠不是微服務就能夠解決的,實際上沒有任何工具(微服務也只是個工具)能解決所有的不確定性問題,所以很多初創公司寧願用excel和郵件來“低效”的處理很多問題,也不會去做類似於CRM這種系統。這是很明智的一種行為,個人感覺也是最合理的。

對於大型公司,微服務是新興業務增長的重要根基。主要包括兩個方面:技術上,微服務催生的基礎服務工具,例如通信中間件、DevOps、監控和跟蹤、統一日誌、配置中心、自動縮擴容等,能夠讓開發人員更專注於業務的同時,即使不具有大併發量、高可用、負載分析等技術棧,也能夠做出高質量的服務。業務棧上,微服務的存在意味著公司內部的服務都會是定義良好的、功能專一的接口,可以通過通信中間件低成本的調用公司現有的服務。

微服務之外

除了服務本身之外,小公司的關鍵在於“人”,合適的人才是業務支撐的關鍵。這個人需要自己去關心所有的技術問題。服務監控、異常日誌、服務可用性、負載評估、甚至DB壓力評估、自己搭建發佈系統等。有些公司初創團隊招聘的小同學服務掛掉了一週都不知道,這暴露了太多問題了,小同學不關注服務本身是一個問題、招聘同學甚至問題更大。

而對於大公司,很多某個業務本身的同學就容易成為一個的“螺絲釘”。雖然大公司的招聘極其嚴格,但是對於其精細的管理和大量的基礎服務,這些同學是over qualified。大公司完善的流程和大量的基礎工具讓一個即使比較“傻”的人也可以寫出可用性比較高的服務,是否去研究底層的實現基本上就看這個人自己的好奇心和自驅力。

藥不能停

微服務架構可能是不適合你的,但個人認為對於架構的探索不能停止。對於微服務的探索至少還可以讓我們獲得兩個東西:

一,理解trade off和沒有銀彈。

微服務只是一種形式,本質上作為後端開發,是要提供高質量的服務。而對形式的分析可以讓人更好的看到靈活性、可用性、人力成本之間的trade off。沒有標準化微服務流程的服務,可用性不如有規範流程的服務,但靈活性更高。有規範化微服務流程,對於人力的要求沒那麼高,而無流程的服務,必須依賴於高質量的人來保證。

二,大量高質量的輪子

微服務的部署中用到的很多組件本身都是業界高質量服務的典範,微服務的部署者選擇它們作為自己服務的模塊不是偶然。對於這些輪子的理解和使用,是一個對架構感興趣人員的基本素質。

原文作者:FISHERMARTYN

相關推薦

推薦中...