架構師是大忽悠嗎?阿里技術大牛告訴你真相!

來源:阿里云

作者:林昊(花名畢玄),阿里巴巴技術保障部研究員,曾任淘寶網平臺架構部架構師。個人的研究方向主要為Java模塊化、動態化系統的構建,以及高性能大型分布式Java系統構建,主導阿里數據中心異地多活項目建設。

?

架構師,這個title就和總監之類的title一樣,已經徹底被用爛了。但在一個軟件產品的生命周期中,架構師是實實在在的一個極度重要的角色。架構師非常重要的職責是編寫整個系統中核心部分的代碼。這個部分并不一定是技術挑戰最高的,但對整個系統的質量甚至成敗起到非常關鍵的控制作用。架構師必須是從寫核心代碼的人中誕生而來。畢玄的這篇文章就是主要講他理解的架構師到底應該具備什么素質。

?



業務理解和抽象能力


架構師的第一職責是理解業務,并轉換為可被研發理解的實現方案,因此業務理解能力是架構師的必備技能。通常來說一個資深的業務架構師,對業務會有非常深的認識和積累。一個極好的業務架構師應該能大概預判業務未來的發展趨勢,以便在系統的可擴展性上留好一定的空間。所以也會很自然的出現有些業務架構師做著做著就干脆轉為PD類型的角色。
?
抽象能力是通過對業務的理解轉換為系統實現的模型,這顯然也是重要的能力。抽象很多時候也承擔了分解清楚多個團隊的職責,分工清晰化。

NB的代碼能力


之所以現在很多的架構師都會被認為是大忽悠,就是有一堆頂著架構師頭銜,又不干活的人(甚至會出現對技術幾乎不太懂的人),光說不干,再加上說的不靠譜的話,自然很容易被認為是大忽悠。
?
我一直認為架構師有個非常重要的職責是編寫整個系統中核心部分的代碼。這個部分并不一定是技術挑戰最高的,但對整個系統的質量甚至成敗起到非常關鍵的控制作用。

所以架構師必須是從寫核心代碼的人中誕生而來。在一個跨多領域的大型系統中,架構師不太可能什么都擅長,不可能寫各個部分的核心代碼,這種時候架構師一定要知道怎么判斷非自己知識領域的部分實現是否OK,以確保各部分組合在一起的時候是符合架構設計預期的,通常這種確保各部分組織在一起work的機制部分的代碼應該由架構師自己操刀。
?
最關鍵素質:全面

?
全面是一個架構師展現出來的最關鍵素質,全面體現為以下三點:

?

一、在面對業務問題上,架構師腦海里是否會浮現出多種技術方案:

?

這點其實挺重要的。否則可能就會出現明明有一個簡單成熟的方案,但由于不知道而做了其他復雜不成熟的方案,所以廣闊的技術視野是架構師的必備

?

另外架構師不可能全部擅長,在自己不擅長的點上,需要知道找哪個專業的人是靠譜的,這點也非常重要。

二、在做系統設計時是否考慮到了足夠多的方方面面:

?

例如很多系統設計容易遺漏上線環節的細節,導致在上線時發現漏掉了什么考慮,臨時解決或只能重來。

?

記得有一年我做的一個設計沒有考慮到上線階段的一個細節,導致上線的時候發現由于網段的問題完全不work,并且沒有臨時解決方案,只好重來。

?

系統設計不僅僅指導研發同學怎么寫代碼,也包括指導其他所有相關技術同學的工作。

?

又例如我2008年在做服務框架設計的時候,集群和集群之間通過硬件負載均衡設備來訪問的,連接的方式是單個長連接,這個設計導致了運行過程中如果要發布被調用的服務方,很容易出現壓力都集中在前面重啟的機器上,這也是典型的整個鏈路沒有考慮清楚造成的設計問題。

?

再例如2013年我在做一個比較大范圍的系統改造的設計時,由于對其中一部分的軟件了解得不夠,判斷錯誤,導致后來這個改造在進行過程中才發現有些需要改造的關鍵軟件設計做得太粗糙,最后上線進度差不多推遲了一個多月,而且那些后來補的設計都是緊急做的,風險非常高。

?

回顧自己設計過的軟件,發現在這個點上犯的錯可以講好幾天,看來我應該整理另外一篇文檔《我在系統設計上犯過的xxx個錯誤》,里面有些其實靠一份好的系統設計模板也許就能避免掉。一份好的系統設計模板是可以幫助架構師思考全面些的。

?

三、在做系統設計時是否考慮到了未來的一些發展?

盡可能不要出現未來的一點變化就導致現在白干或要花大量力氣來改造的現象
?
想當年做服務框架的時候,后來就發現由于當年做設計的時候沒有考慮到將來服務調用trace的問題,導致了后來為了彌補這點花了巨大的力氣(不是技術上,而是實施上)。
?
全面需要架構師有足夠廣的技術領域知識和足夠多的經驗積累,從全面這點就可以看到架構師的工作絕不是畫幾個框,連幾根線那么簡單。
?
對架構師“全面”這點的挑戰,會隨著系統的范圍越大(一個系統的設計,和100個系統組成的大系統的設計挑戰是完全不同的)而變得越難,無論是知識的廣度、考慮的點的覆蓋度、還是未來趨勢,更復雜的情況甚至會出現架構的調整對應著組織結構的調整,這種也要考慮到,例如服務化這種大的架構改造,就意味著專職的專業領域服務團隊的成立。
?
全局?? ?

全局觀通常是指在系統設計時是否考慮到了對上下游的系統的影響。

畢竟通常所設計的系統不是一個孤立的系統,如果沒有足夠好的全局觀,有可能會導致自己的系統做完上線,其他上下游系統(尤其有些連上下游是誰,怎么用都不知道的情況下)出現問題。這種案例同樣不少。
?
權衡?? ?

權衡同樣也是架構師極度重要的能力。或者也可以認為是決策能力,技術方案的拍板是一個架構師最重要的職責。
?
上面說的“全面”是架構師在思考時“放”的過程,而權衡就是“收”的過程。收的過程結束基本就意味著技術方案的確定,同時也確定了節奏。

權衡在兩點上會體現得特別突出:

?

一、技術方案決策原則:?

通常一個問題都會有多種可解決的技術方案。怎么來決策就至關重要了,而決策通常又和全面相關。大的來說通常決策的原則就是性價比和可持續發展。

?

  • 性價比簡單來說是方案的實現成本,這個成本要包括非常多的方面。例如有些場景可能會是用硬件解決看起來是花錢,但最終折算成本是最劃算的,很多系統設計在決策性價比時都過于隨意,例如一個另外常見的場景就是建設一套新系統替代舊系統,這個時候可能完全沒考慮舊系統的遷移代價甚至超過了改造舊系統的代價。
    ?

  • 可持續發展簡單來說就是所選擇的技術方案在公司是否可持續。例如簡單的案例是公司主體的研發人員都是php,卻搞一個其他語言,且只有極少人懂的。

    當然,這還是要看性價比,如果搞一個其他語言帶來的效益超過了語言/人才體系的更換成本。又例如引入一個開源產品,有無專業團隊維護這都是要考慮的關鍵因素。

?

二、優先級和節奏控制:

經常我會問做系統設計的同學一個問題:對于這個業務場景而言,在系統設計上最需要把握的一個點是什么。

這是一個關鍵問題,全面意味著考慮到了很多地方的問題,但通常業務需求實現都是有很強的時間要求的,因此在這個時候必須考慮清楚不同點的優先級,

同時也包括技術方案在決策時也要做出取舍,有可能選了一個不是那么好的技術方案,但通過留下一些可改造的空間,為以后的重構做好鋪墊,那就是很不錯的,尤其技術同學有些時候比較容易陷入解決技術問題的場景去,但那個問題其實有可能不是現階段最重要的。
?
優先級和節奏控制是我認為一個最NB的架構師的最佳體現,優先級意味著把握住了重點,可以確保在所設計的架構指導下業務實現不會出現大問題,節奏控制則意味著全面,知道隨著業務發展該在什么時間點做什么事,為將來做好鋪墊。

轉載于:https://www.cnblogs.com/zhjh256/p/6444535.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/253307.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/253307.shtml
英文地址,請注明出處:http://en.pswp.cn/news/253307.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

動手動腦-Java重載

有以下例子: 例: Using overloaded methods public class MethodOverload { public static void main(String[] args) { System.out.println("The square of integer 7 is " square(7)); System.out.println("\nThe square of double 7.…

利用django框架,手把手教你搭建數據可視化系統(一)

如何使用django去構建數據可視化的 web,可視化的結果可以呈現在web上。 使用django的MTV模型搭建網站 基礎鋪墊—MTV模型 Created with Raphal 2.1.0Request服務器(Djangoweb)Response首先,要搞清楚我們去訪問服務器,服務器返回信…

智能音箱 之 揚聲器喇叭介紹

在全雙工語音交互的系統中,功放的質量是非常重要的,因為AEC回聲消除對信號失真 是非常敏感的。音頻通路的整體諧波失真需要控制在5%以內。 對于整個系統的諧波失真來說,揚聲器是最關鍵的因素,其次是功放,麥克風的很小…

關于拓撲排序的問題-P3116 [USACO15JAN]會議時間Meeting Time

https://www.luogu.org/problem/show?pid3116 這道題目很水啊,但是我沒有1A,而且wa了好多; 題目意思我就不講了; 反正就是一個拓撲序dp; 但是這道題目規定了起點是1; 所以我一開始直接把1放進隊列里然…

HD-SDI DVR發展與應用剖析

自2010年以來,視頻監控已經進入“高清”監控時代;隨著高清的發展,HD-SDI高清數字系統開始進入人們的視線,在大、小展會上均可以輕松找到“數字高清”的產品和解決方案。作為HD-SDI系統中編碼、存儲部分的HD-SDI高清數字硬盤錄像機…

UML學習——類圖(三)

1.類圖 UML類圖是用來描述類、接口、協作及它們之間的關系的圖。用來顯示系統中各個類的靜態結構。 2.類圖的組成元素 類圖由以下六種元素組成:類,接口,泛化關系,關聯關系,依賴關系,實現關系。 3.類圖的繪制…

傳錘子科技解散成都分公司 才搬遷一年羅永浩就頂不住了

雷帝網 樂天 10月16日報道今日有網友爆料,錘子科技解散成都分公司。有網友指出,爆料的人是錘子科技早期員工王前闖。網友爆料錘子成都研發中心解散網友爆料錘子成都研發中心解散2016年,錘子科技虧損4億元,一直徘徊在破產的邊緣&am…

智能音箱 之 功放與揚聲器(喇叭)的匹配關系

1. 功放的概念   功率放大器簡稱功放,俗稱 “擴音機”,是音響系統中最基本的設備,它的任務是把來自信號源(專業音響系統中則是來自調音臺)的微弱電信號進行放大以驅動揚聲器發出聲音。 2. 功放的分類 功率放大器分…

前端性能優化 Web前端應該從哪些方面來優化網站?

作者:斯迪鏈接:https://www.zhihu.com/question/21658448/answer/18903129來源:知乎著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。前端是龐大的,包括 HTML、 CSS、 Javascript、Image 、Flash…

嵌入式NVR發展淺析

隨著視頻監控的高速發展,視頻監控對硬盤錄像機的要求也在不斷提高,在以往“看得見”的基礎上,要求視頻畫面看的更為清晰、準確。相對于傳統硬盤錄像機,NVR最主要的特征就是“網絡化”、“高清化”,在視頻監控“高清化”…

Maven and Nexus2

2019獨角獸企業重金招聘Python工程師標準>>> Maven and Nexus2 Maven是什么? 構建工具: 通過簡單的命令,能夠完成清理、編譯、測試、打包、部署等一系列過程。同時,不得不提的是,Maven是跨平臺的&#xff0…

Linux kernel的中斷子系統之(九):tasklet

返回目錄:《ARM-Linux中斷系統》。 總結: 二介紹了tasklet存在的意義。 三介紹了通過tasklet_struct來抽想一個tasklet,每個CPU維護一個tasklet鏈表tasklet_vec/tasklet_hi_vec,然后介紹了如何定一個一個tasklet(靜態/動態)&#…

市面主要遠場語音交互技術架構

為什么Google Home要采用雙麥方案,而且大部分智能音箱才用環形六麥?事實上,這是由各家不同的技術架構決定的,當前市面上主要存在三種遠場語音交互技術架構。 1、以Google為代表的純云端技術架構 首先就是以Google為代表的純云端技…

iOSPush自動隱藏tabbar

只需要在UITabBarController添加控制器的時候調用YZNav初始化,就可以實現tabbar的自動隱藏了。 直接上github地址:https://github.com/YouZhiZheShiJingCheng/YZNav 轉載于:https://www.cnblogs.com/BK-12345/p/6472815.html

中國智能高清視頻監控未來發展趨勢

瀏覽數: 1228 海康威視:田振華 《中國公共安全》:您認為高清攝像機將朝著哪個方向發展?像素會達到什么標準? 高清攝像機發展趨勢: 一:高清 雖然說現在已經實現高清,但是從顯示效果來看現有的高…

智能音箱 之 功放介紹

基本分類 功率放大器分甲類功放(A 類),乙類(B 類),甲乙類(AB 類)和丁類(D 類); A 類 指在信號的整個周期內,放大器的任何功率輸出…

create_workqueue和create_singlethread_workqueue【轉】

本文轉載自:http://bgutech.blog.163.com/blog/static/18261124320116181119889/ 1. 什么是workqueueLinux中的Workqueue機制就是為了簡化內核線程的創建。通過調用workqueue的接口就能創建內核線程。并且可以根據當前系統CPU的個數創建線程的數量,使得線…

平安城市與智慧城市對接的關鍵要素

平安城市經過前兩個階段(布點、聯網)的大規模建設之后,如今正向系統應用深化,數據深入挖掘利用的方向發展。以視頻監控為基礎單元,一些城市開始嘗試在既有的社會治安管理平臺系統基礎上拓展更多的應用功能,…

vue學習之路.02

2019獨角獸企業重金招聘Python工程師標準>>> 第一個vue項目 1.創建 vue init webpack app01 2.安裝依賴 cd app01 npm install 3.構建 npm run dev 啟動本機的8080端口 或 …

等價表達式

小目標的最后一步。 原題鏈接:https://www.luogu.org/problem/show?pid1054 精力不足,代碼工作可能要放在后幾天。。。 思路已經明確了,我說一下。 這道題的大意是給出若干表達式,問這些表達式的值和初始表達式的值是不是相等。 …