解密微軟的架構師之路

2021-04-29 22:01:46 字數 3182 閱讀 9240

解密微軟的架構師之路

——專訪windows hpc server 架構師徐明強

白苗若是說起架構師,幾乎所有的開發人員都知道的乙個偉大架構師來自微軟,他就是比爾•蓋茨。這個20世紀最偉大的技術天才有太多的傳奇。對於架構師這個群體,他同樣產生了非同小可的作用。作為乙個企業的大老闆,他是第乙個給自己冠之以「首席架構師」頭銜的人。也正因如此,整個it領域才開始不斷湧現出架構師這個並不算新的職業。為了追尋微軟的架構師文化,我們採訪了微軟windows hpc server架構師徐明強博士,邀請他為我們解密微軟的架構師之路。

微軟架構師定義

對微軟內部的架構師的定義,windows hpc server架構師徐明強博士是這麼描述的:「微軟架構師的職責定義主要在兩個方面。一是要負責整個專案中技術活動和工程過程,進行領導和協調。二是要負責理解系統本身的業務需求,並且建立合理完善的乙個系統體系架構。進一步的細化則可以展開來談。」

「通常架構師要確立每乙個構架檢視的整體架構,比如說檢視的詳細結構、元素的分組以及實現主要分組之間的介面描述。因此和其他角色對比,架構設計師的見解是用在廣度,不是在深度,這樣才能確保架構師在技術活動中起到領導的作用。第二方面,對於業務需求來說,架構師要負責通過軟體架構來決定主要的技術選型。典型的工作包括系統需求設計,實現和部署的檢視以及測試等等。」

三種架構師

這種通用的解釋如果難於理解,那麼是不是會有更具體的實施方法?像微軟這樣龐大的軟體開發組織結構裡,架構師會根據產品團隊,工作職能進行進一步劃分。隨後,徐明強開始介紹微軟架構師的分類。

「如果要理解微軟的架構師職能劃分,就需要先了解微軟的產品部門劃分。通常在微軟內部的產品組,有三個更小一級的分組,一是專案經理組,二是開發組,三則是測試組。」

「專案經理組主要是負責業務的需求定義,產品規格書撰寫。而開發組則主要負責軟體的實現,以滿足專案經理所定義的需求規格書。測試團隊的主要任務則是確保軟體產品交付的質量。不同的分組,有不同的職能劃分。因此,我們看做是有專案經理架構師,開發架構師和測試架構師幾種基本型別。」

「不同的架構師職能大相徑庭,比如專案經理架構師,更側重於業務上的需要。從這個意義上看,你就會發現不同架構師的區別。由於專案經理主要是看使用者的需求,對整個系統效能提出要求,對工作品質提出要求,同時還要確認在使用者應用場景,產品是否可以有效地被系統支撐,因此它具備了非常不同的職能。」

「從測試方面看,測試架構師則關注測試系統對架構的設計的幫助,包括如何自動化測試,或更有效的手工測試等。比如說hpc server 測試組的架構師的工作,由於涉及到很複雜的分布式的系統,就需要做可擴充套件性測試,計算資源分配的測試,包括測試方法的設計等。」

協同工作,準確分工

這麼多不同的架構師,如何協調工作,這是很多人馬上會想到的問題。尤其是在面臨衝突的時候如何解決,關係到每一項工作是否能順利推進。關於這個問題,徐博士給我們舉了個例子。

「比如我負責hpc server 產品的規格說明書,那麼開發組就會強調是否有充裕時間實現各個元件,而測試組將會根據規格說明書來考慮,這個元件所實現的功能是否嚴格滿足規格要求。開發組會有很好的意願來完成產品開發,但如何衡量是否完成卻是乙個問題。從我們的角度看,首先就是應用的場景。例如在乙份需求說明文件中,如果你能描述為什麼有這個需求,並且寫得非常清楚,那麼開發就能準確地知道他們需要做的工作是什麼。如果有一套非常清楚的目錄,告訴使用者如何使用產品,那麼當這個系統做出來以後,每一步都應該考慮到使用者在每乙個階段有什麼樣的知識背景能夠完成下去。只要應用場景的故事清楚,文件自然也能夠清楚。」

「當然,不同的工作也會有不同的優先順序。這同樣是專案經理架構師需要定義清楚的。技術架構師的主要精力,會放在具體選擇哪個元件實現。這對於技術架構師來說,是非常有把握的。因此我們可以看到,產品需求定義得越細、需求的優先順序定義得越好,說明專案經理架構師很好地完成了自己的工作,對於開發架構師的衡量,則是採用什麼技術以及何種元件/架構提高了開發效率。」

「另外一方面是測試,專案經理的架構師同樣需要與測試架構師協同工作。功能的每乙個方面在需求中表現得越細緻,各方面的系統指標越清晰,就越可以幫助測試架構師更好地完成其工作。牽涉到可擴充套件性、可延時等細節效能的指標,是測試架構師的優勢,他們知道怎樣才能處理好這些事情,但它們希望看到明確的指標。」

團隊成長

多數公司裡,架構師都是寶貝。而很多程式設計師,也確實夢想自己能成為一名軟體架構師。但架構師的數量總是有限,多少人可以成為架構師?架構師的團隊是如何成長起來的?徐博士用親身經歷講述了hpc團隊的發展歷程。

「根據產品開發周期,不同的團隊會有不同的配置。我在hpc產品組經歷了兩個多,近三個版本,所以有一點體會。在hpc第一版的時候,基本上我們的產品會分三個主要的元件,每個主要元件會有乙個小團隊。當時包括作業排程系統、管理系統和訊息傳遞介面(mpi),基本上每個元件都有乙個架構師。儘管有的一開始沒有架構師的頭銜。當時大概是乙個架構師和三個開發人員和三個測試人員協同作戰。」

「主要原因在於專案一開始,團隊並沒有考慮如何定義架構,這裡包括技術選型等,很多時候架構師會考慮這些事情,此時不會嚴格按照前面說的不同角色分工。到了後期的版本,產品問世,使用者需求噴湧而出的時候,專案管理架構師角色就開始明晰化了。儘管主要的工作是在第乙個版本上增加功能,但各個部門都會開始聘用更多的開發人員和測試人員,同時管理人員也會增多。」

架構師的核心能力

為了讓開發者逐漸成為架構師,基礎的能力還是需要具備的。「我覺得架構師必須學會的第一件事情就懂得如何進行權衡。因為我們面對的都是相互矛盾的一些設計要素和限制,但事實卻要求你在這些相互矛盾的要素限制和約束條件之間取得非常巧妙的平衡。」徐博士感嘆道。

「架構師必須足夠成熟。因為他們往往需要在無法獲得完整資訊的情況下,迅速領會問題,並根據經驗做出審慎判斷。其實微軟內部有能力要求,能把一張比較模糊的清晰化。這裡我想歸納四個方面。首先是在專題領域的經驗和對微軟軟體開發工程的經驗。第二個就是判斷力、決定能力和領導力,推動各個團隊的技術進展,並且能在壓力下作出關鍵性的決策,然後將開發貫徹到底,而且要提高效率。架構師有權在技術上作出決定,在大家意見不一致的時候,他要能給出自己的乙個意見。第三則是善於溝通。這其中首先就是贏得他人的信任。只有這樣,才可以對他們進行說服,而後進行指導。微軟架構師跟其他的合作的人沒有直接的上下級關係,所以不能靠命令進行指導,所以必須要靠贏得其他人的贊同。第四點,是通常說的抽象思維和分析的能力。具體思維的人可能比較注重細節,但往往也會將問題複雜化,使頭緒增多而無法收斂。 抽象思維可以幫架構師地從大量資訊、系統檔案中,看出一些規律來,而且找出與之相關的方面,歸納關鍵問題,表述模糊的概念並將其變成相關各方能夠理解的專案構件。」

「最後,我認為無論是什麼樣的架構師都要具備一定的商業頭腦,業務的知識要充分把握,因為對業務把握能夠帶來乙個擁抱變化的能力,而且可以在設計的時候留出一點擴充套件的餘地,適應將來可能來臨的需求變化。」

架構師之路

隨著經驗能力的增長,程式的程式設計習慣也在發生著改變,以下是我個人程式設計習慣的改變。1級 思考一段時間,寫一段 2級 用圖形幫助思考,然後寫 3級 將思考過程寫成注釋,然後再寫 4級 用圖形幫助思考,然後一邊寫注釋,一邊寫 5級 思考過程中增加對不確定技術點的測試。6級 將思考過程寫在記事本裡,將...

架構師之路

方 秒殺系統架構優化思路 分布式id生成器 網際網路架構,如何進行容量設計 執行緒數究竟設多少合理 單點系統架構的可用性與效能優化 關於負載均衡的一切 異構伺服器負載均衡及過載保護 lvs為何不能完全替代dns輪詢 究竟啥才是網際網路架構 高併發 究竟啥才是網際網路架構 高可用 100億資料1萬屬性...

架構師之路

架構的定義 我們來看看軟體架構的一般定義 程式和計算系統軟體體系結構是指系統的乙個或多個結構。該結構包括軟體的構建,構建的外部可見屬性以及它們之間的相互關係。該體系結構不是可操作的軟體。具體來說,這是乙個表示式,它使軟體工程師能夠 分析滿足監管要求的設計有效性。在設計更改相對容易的階段,請考慮架構的...