如何定義架構師
架構師從英文單詞architect翻譯而來,在英文中,
architect
原來的意思是「建築師」。作者吐槽英文中架構師與傳統的建築師單詞相同,但實際的工作性質並不相同,以致於在英文的語境中會造成理解上的差異。
傳統的建築師在設計建築時要求極端地精確,在正式施工之前會進行完整的論證、設計、計畫等,不允許出現任何差錯;而軟體架構師則地面對的問題更加不可測,軟體在使用的過程中會面臨大量的需求變更,甚至在發布至正式環境後仍然不斷演化。
因此軟體架構師必須要改變那種一開始就要設計出完美產品的想法,相反,我們應該設計出乙個合理的框架,在這個框架中慢慢地演化出正確的系統。這就像城市規劃師一樣,他的職責是優化城鎮布局,使其易於現有居民生活,
同時也會考慮一些未來的變化,如劃分工業區和居民區,建在工業區的民居是不允許的,居民區的汙水處理廠也是不允許的。城市就在這樣的大原則下逐步演化。
未來的變化很難預見,所以與其對所有變化的可能性進行**,不如做乙個允許變化的計畫,為此,應該:專注在大方法向,避免對所有事件做過於詳盡的設計,只在有限的情況下參與到非常具體的細節實現中來,要保證系統不但能夠滿足當前的需求,還能應對將來的變化。因而,我們更願意把架構師叫成演化式架構師。
演化式架構師的職責
1.關心服務之間的事務,多於關注服務內部發生的事情
這並不意味著服務內部的完全自治,這要視情況而定,如果整個團隊採用了10種不同的技術棧,可能意味著團隊的學習成本更高;或者每個服務暴露出來的介面標準都不一致,這將造成災難。最低的要求是花時間跟每個服務團隊在一起工作。
2.讓系統設計原則服務於最大目標,讓實踐來鞏固原則
假如公司的目標是:快速占領東南亞新市場,那麼你的原則可能就是要求服務必須能方便地部署到相應的國家,在實踐層面,我們可能會尋找能提供全球化的雲廠商來實現我們的需求。
原則與實戰有時難以區分,但只要把握:重要的原則用來指導系統的演化,同時也要有一些細節來指導如何實現這些原則,就可以了。
3.全域性掌控微服務的狀態
必須全域性掌握微服務的健康狀態,將這些狀態資訊進行統一管理。
要全域性掌握微服務的安全性,不能讓乙個異常的服務毀了整個系統,因此每個服務必須很好地應對其他服務的錯誤請求。
4.**治理
提供最佳實踐範例和**模板來保證質量,提供統一的服務來保證效率,在dry中尋求平衡。
5.技術負債
有時為了服務於最大目標,在短時間內可能會忽略一些原則和最佳實踐,雖然這短期能帶來一些利益,但長期來年進要付出代價的。
不光走捷徑會引入技術負債,有時系統的目標發生改變也會引用技術債務。
架構師應能提供一些溫和的指導,然後讓團隊自行決定如何償還這些技術負債。
6.團隊領導
不要總是施加你的影響力,與各個服務團隊一起工作,即使時間不那麼多,從而了解所做的決定對團隊造成的影響。可以從各服務團隊抽乙個人出來形成乙個團隊治理小組。
參考
《微服務設計》(sam newman 著 / 崔力強 張駿 譯)
微服務與微服務架構
微服務 微服務強調的是服務的大小,它關注的是某乙個點,是具體解決某乙個問題 提供落地對應服務的乙個服務應用,狹意的看,可以看作eclipse裡面的乙個個微服務工程 或者module。例如 訂單服務 支付服務 微服務架構 馬丁.福勒 martin fowler 微服務架構介紹 微服務架構是 種架構模式...
微服務架構
一 先了解一下什麼是單體應用 就是乙個應用程式包含了所有模組功能,各模組同時部署。當然這種應用模式比較容易部署 測試,但隨著專案的加大,單體模式就會變得越來越臃腫,維護的成本逐漸變高。當乙個模組出錯,整個應用都會出現問題,擴充套件能力也會受到限制。二 什麼是微服務 是將整個應用程式分解為多個模組,各...
微服務架構
簡單來說,微服務架構風格想要開發一種由多個小服務組成的應用,每個服務執行於獨立的程序,並且採用輕量級互動,多數情況下乙個http的資源api,這些服務具備獨立業務能力並可以通過自動化部署方式獨立部署,這種風格使最小化集中管理,從而可以使用多種不同的程式語言喝資料儲存技術 james lewis 和 ...