微服务架构师的职责——《微服务设计读书笔记》
如何定義架構師
? ? ? ??架構師從英文單詞Architect翻譯而來,在英文中,Architect原來的意思是“建筑師”。作者吐槽英文中架構師與傳統的建筑師單詞相同,但實際的工作性質并不相同,以致于在英文的語境中會造成理解上的差異。
? ? ? 傳統的建筑師在設計建筑時要求極端地精確,在正式施工之前會進行完整的論證、設計、計劃等,不允許出現任何差錯;而軟件架構師則地面對的問題更加不可測,軟件在使用的過程中會面臨大量的需求變更,甚至在發布至正式環境后仍然不斷演化。
? ? ? 因此軟件架構師必須要改變那種一開始就要設計出完美產品的想法,相反,我們應該設計出一個合理的框架,在這個框架中慢慢地演化出正確的系統。這就像城市規劃師一樣,他的職責是優化城鎮布局,使其易于現有居民生活, 同時也會考慮一些未來的變化,如劃分工業區和居民區,建在工業區的民居是不允許的,居民區的污水處理廠也是不允許的。城市就在這樣的大原則下逐步演化。
? ? ? 未來的變化很難預見,所以與其對所有變化的可能性進行預測,不如做一個允許變化的計劃,為此,應該:專注在大方法向,避免對所有事件做過于詳盡的設計,只在有限的情況下參與到非常具體的細節實現中來,要保證系統不但能夠滿足當前的需求,還能應對將來的變化。因而,我們更愿意把架構師叫成演化式架構師。
?
演化式架構師的職責
? ? ? 1.關心服務之間的事務,多于關注服務內部發生的事情
? ? ??這并不意味著服務內部的完全自治,這要視情況而定,如果整個團隊采用了10種不同的技術棧,可能意味著團隊的學習成本更高;或者每個服務暴露出來的接口標準都不一致,這將造成災難。最低的要求是花時間跟每個服務團隊在一起工作。
? ? ? 2.讓系統設計原則服務于最大目標,讓實踐來鞏固原則
? ? ? 假如公司的目標是:快速占領東南亞新市場,那么你的原則可能就是要求服務必須能方便地部署到相應的國家,在實踐層面,我們可能會尋找能提供全球化的云廠商來實現我們的需求。
原則與實戰有時難以區分,但只要把握:重要的原則用來指導系統的演化,同時也要有一些細節來指導如何實現這些原則,就可以了。
? ? ? 3.全局掌控微服務的狀態
? ? ? 必須全局掌握微服務的健康狀態,將這些狀態信息進行統一管理。
? ? ? 要全局掌握微服務的安全性,不能讓一個異常的服務毀了整個系統,因此每個服務必須很好地應對其他服務的錯誤請求。
? ? ? 4.代碼治理
? ? ??提供最佳實踐范例和代碼模板來保證質量,提供統一的服務來保證效率,在DRY中尋求平衡。
? ? ? 5.技術負債
? ? ? 有時為了服務于最大目標,在短時間內可能會忽略一些原則和最佳實踐,雖然這短期能帶來一些利益,但長期來年進要付出代價的。
? ? ? 不光走捷徑會引入技術負債,有時系統的目標發生改變也會引用技術債務。
? ? ? 架構師應能提供一些溫和的指導,然后讓團隊自行決定如何償還這些技術負債。
? ? ? 6.團隊領導
? ? ? 不要總是施加你的影響力,與各個服務團隊一起工作,即使時間不那么多,從而了解所做的決定對團隊造成的影響。可以從各服務團隊抽一個人出來形成一個團隊治理小組。
?
參考
? ? ? 《微服務設計》(Sam Newman 著 / 崔力強 張駿 譯)
相關文章:?
微服務的概念——《微服務設計》讀書筆記
原文地址:http://www.cnblogs.com/gudi/p/6591246.html
.NET社區新聞,深度好文,微信中搜索dotNET跨平臺或掃描二維碼關注
總結
以上是生活随笔為你收集整理的微服务架构师的职责——《微服务设计读书笔记》的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C#将引入可空的引用类型
- 下一篇: 建模:确定服务的边界——《微服务设计》读