與Susan Fowler探討生產就緒微服務之問答

weixin_33763244發表於2017-02-07

Microservices.com Practitioners峰會是為從業者量身定製的微服務會議,峰會專注於介紹大規模採用微服務的實際應用。峰會將會於2017年1月31日在舊金山舉行。演講者包括來自Uber、New Relic、Lyft、PayPal和Google的微服務從業者。

\\

Susan Fowler是Stripe的工程師,她是《生產就緒微服務》一書的作者,並受邀會在峰會上發言。在Uber的時候,Fowler致力於標準化微服務,並將微服務嵌入各種關鍵業務團隊,幫助他們的服務變得更加可靠。

\\

在峰會之前,InfoQ採訪了Fowler,和她討論了成功實施微服務架構的技術、業務和文化挑戰。

\\

InfoQ:可以在哪裡看到微服務架構的理念和大多陣列織的實際系統相關聯,甚至是產生衝突?

\\
\

Susan Fowler:在相關聯方面,我認為採用微服務架構是很多軟體應用程式發展的自然步驟。Monorepos(monoliths)很難大規模使用,許多工程組織可以發現,並確實發現現在規模化發展受到了限制(沒有併發性,沒有分割槽等等)。他們還發現,開發速度停滯不前,因為一旦應用程式很龐大且有很多工程師同時工作於相同的應用程式上時,在monorepo上部署開發就變得不太可能(從組織的角度來看)。一旦真的發生這種情況,最簡單、最容易規模化的方法就是採用微服務架構。

\\

這也正是大多數衝突發生的地方。由於採用微服務往往是軟體系統發展的“下一步”,所以大多數系統的設計中都沒有考慮到微服務架構,這會產生很多問題,其中一些是組織性的,另一些是技術性的。

\\

比如說,從組織的角度上看,最終會有很多孤立的、沒有關聯的團隊,除非你事先計劃了很多跨團隊協作,否則他們悶頭做自己的微服務工作,但不知道系統的其他部分工作。最終微服務開發團隊之間還會缺乏相互信任,他們不確定自己的服務所依賴的其他微服務是否是可靠的、穩定的、規模化的等等。

\\

你也可能發現(與許多公司做的一樣),很難在微服務生態系統中僱傭並運營單獨的運營組織,開發人員需要學習接管他們微服務的運營職責(很多人可能會不習慣,或沒受過培訓,或準備開始做)。

\\

在技術方面,比如說你可能會碰到很多奇怪的微服務,這些微服務沒有什麼意義,相互之間沒有很好聯絡。這是因為它們之間的邊界和它們的功能從沒有在原來的monolith中恰當地定義過。

\\

我經常能看到的另一個技術挑戰是,微服務的基礎設施需要非常複雜的微服務架構才能成功,許多習慣於執行monolithic應用程式的公司通常沒有考慮到這些方面。

\
\\

InfoQ:對於擁有傳統monolithic系統工作經驗的開發人員,他們想要轉到寫微服務需要學習的最重要技能是什麼?

\\
\

Fowler:當他們的組織開始採用微服務架構時,開發人員需要學習的最重要技能是他們最需要的操作技能。Monolithic應用程式中,分離應用程式的開發和應用程式的維護相對容易,並且能在兩個單獨的團隊之間拆分開發人員和運營人員的職責。在微服務架構中,情況並非如此,通常會有幾十個、幾百個或幾千個微服務,因此對於微服務開發團隊來說,分別僱傭開發人員和運營工程師是沒有用的。此外,微服務架構允許開發者快速變動,因此從技術角度考慮也不需要有專門的運營工程師執行服務,開發者是最瞭解服務的工程師,他們能最好地執行它。

\
\\

InfoQ:除了開發人員需要掌握的新技能,還要什麼文化或組織的改變來支援微服務?

\\
\

Fowler:真是很好的問題,要回答這個問題需要牽涉到很多內容(我寫的書《生產就緒微服務》都是在回答這個問題!)我認為工程組織最要做的事情就是建立非常穩定的、可靠的、先進的應用程式平臺基礎設施(在微服務架構四層模型的第三層)。

\
\\

InfoQ:正如你的博文《四層微服務架構》中所述的一樣,成功的MSA需要成熟的基礎設施層次。雖然單個微服務並不很有用,但每個系統都要從無到有。那組織如何管理好從遺留系統轉換到微服務所需的開銷?

\\
\

Fowler:我認為大多數小公司不一定能從微服務架構中獲益,而且我不認為大多數公司應該打破他們的遺留系統而轉換到微服務。

\\

在有些情況下,微服務真的非常非常好。首先,如果應用程式或是系統有點複雜,但是它的各種功能之間可以劃分出非常清晰的邊界,那麼轉為微服務並不會很痛苦(前提是,如你所述,所需的基礎設施能夠到位)。我覺得這是比較罕見的情況。

\\

第二種情況是大多數工程師和公司經歷的微服務故事:應用程式已經不能再擴充套件了,可擴充套件性的限制造成了嚴重的效能和穩定性問題,不能再對應用程式做些什麼了,開發速度停滯不前。在這種奇特的常見場景中,調整微服務所需的額外基礎設施工作非常容易:無論是構建基礎設施,還是未來應用程式無法規模化。

\
\\

檢視英文原文Q\u0026amp;A with Susan Fowler on Production-Ready Microservices

相關文章