與Susan Fowler探討生產就緒微服務之問答
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
相關文章
- 微服務下認證授權框架的探討微服務框架
- 微服務之springCloud 生產者和docker部署(二)微服務SpringGCCloudDocker
- 重新理解微服務之終究繞不過這4個坎?(觀點探討)微服務
- 索引壓縮在實際生產中應用的探討索引
- 深入探討微服務架構中的同步通訊機制微服務架構
- Java 生態圈與微服務Java微服務
- 你問我答:微服務治理應該如何去做?微服務
- 生產環境部署springcloud微服務啟動慢的問題排查SpringGCCloud微服務
- APP 快取資料執行緒安全問題探討APP快取執行緒
- 考研與就業——答學弟學妹問就業
- Java執行緒的深入探討Java執行緒
- 深入探討ORA-04031的產生原因及解決方法
- 探討基於資訊系統的專案型生產管理
- 企業應用架構演化探討:從微服務到Service Mesh應用架構微服務
- 程式與執行緒的產生執行緒
- 微服務精華問答:什麼是微服務架構中的DRY?| 技術頭條微服務架構
- Java執行緒的深入探討 (轉)Java執行緒
- java微服務 k8s生產環境搭建Java微服務K8S
- 簡單探討JavaScript 與 TypeScript之間的聯絡JavaScriptTypeScript
- Android業務元件化之現狀分析與探討Android元件化
- Martin Fowler:仍無法衡量軟體開發的生產效率
- SimpleRpc-客戶端與服務端工作模型探討RPC客戶端服務端模型
- java多執行緒之消費生產模型Java執行緒模型
- 多執行緒之生產者消費者執行緒
- 微服務治理平臺產品化實踐與應用微服務化解析微服務
- 集團商務智慧建設探討
- 探討Java中的多執行緒概念 - foojayJava執行緒
- 微服務架構:構建PHP微服務生態微服務架構PHP
- Martin Fowler大神 - 微服務、貧血模型、重構、敏捷開發方法論微服務模型敏捷
- 你問我答:現有的應用有必要做微服務改造嗎?微服務
- Promise探討Promise
- 提問與問答技巧
- 探討阻塞佇列和執行緒池原始碼佇列執行緒原始碼
- JAVA執行緒消費者與生產者模型Java執行緒模型
- Oracle資料庫實施產品相容性與最佳實踐探討Oracle資料庫
- 深入探討:Node.js、Vue、SSH服務與SSH免密登入Node.jsVue
- Android 執行緒與訊息 機制 15問15答Android執行緒
- QTP問與答(轉)QT