1. 程式人生 > >軟體架構師成長之路

軟體架構師成長之路

        對於任何一個軟體開發人員來說,架構師都是一個令人嚮往的角色。就連世界首富比爾蓋茨在2000年卸任公司CEO的同時,也擔任了微軟公司的榮譽角色“首席軟體架構師”,可見“架構師”這一稱謂的吸引力。架構師是公司的“金領”,有著非常高的收入,很少需要考慮生存的問題,從而有更多的精力思考關鍵技術問題,形成“強者愈強”的良性迴圈。部分優秀的開發人員在工作了一定時間後,就要開始考慮自己的未來到底向哪個方向發展。如果開發人員的溝通能力強過技術能力,在補充一定的專案管理知識後,可以向技術管理的方向轉型。如果其對技術一直很感興趣,而溝通能力也不弱,則可以試著進一步加強技術修養,以期向架構師的方向發展,最終“修成正果”。
        那麼,到底什麼是架構師呢?所謂的架構師,應該是一個技術企業的最高技術決策者。他主要負責公司軟體產品或軟體專案的技術路線與技術框架的制訂。好的架構師都是善良的獨裁者,具有很強的技術、良好的寫作能力、良好的口頭表達能力,能夠在各個層次進行溝通。從開發人員到架構師的成長應該是階梯式的,一般來講開發人員在剛剛開始工作時只能開發簡單的獨立軟體模組,慢慢的隨著經驗的增長,他開始接觸一些相互之間有資訊傳遞的模組,而後來,他會發現自己接到的開發任務已經不是一個獨立的單體,這些任務由一些專門的軟體部分組成,可能包含資料庫,工作流引擎,訊息服務等等各種功能模組,可能分佈在不同的伺服器上,所有的部分協同起來,完成軟體功能。而這時候,體系結構的好壞將直接決定了系統的效能和可擴充套件性,而就在這時候,這名優秀的開發人員也開始思考架構師應該思考的問題了,或者說,他向成長為架構師的道路邁出了一大步。
        什麼是架構師最具價值的技能呢?就是要了解不同的知識,做一個“雜家”或者說“博學家”。當然,如果你的資料庫技術非常棒,或者你在工作流引擎方面具有不可超越的專家知識,那也是很不錯的。好的架構師有好多都是從專家成長過來的。但是,這不是架構師應該做的事情,架構師應該做的是瞭解所有的東西,既瞭解技術的巨集觀面,又瞭解技術的細節。真正的架構師不僅僅要了解軟體,也要了解硬體,在關鍵的部位使用合適的硬體來取代軟體,可以成倍甚至成百倍的提高整個系統的效率。下面我將會以網際網路行業對的架構師的要求為例,向大家講解作為架構師應該具備的知識。
        網際網路行業是當前最激動人心的行業之一,很多的創新都來自於這個行業,而每一個大型的網站如Google,Yahoo,Myspace等都需要解決一個非常複雜的問題,就是網站的分散式向外擴充套件(Scale Out)的問題。解決這個問題,需要最優秀的架構師對業務進行剖析,利用軟硬體將網站進行重構,甚至根據業務研發相應的分散式技術,解決網站複雜的分散式計算的問題。如果你想在這個行業中成為一名架構師的話,需要至少掌握網路知識,硬體,軟體,網站優化等方方面面的知識:
網路知識。
        當前的軟體已經絕對不是那種僅僅跑在一臺單機上的孤立應用了。不僅僅是在網際網路行業,任何一個行業的軟體,都要求其具有網路功能。因此,網路知識是架構師必備的知識。我們所說的網路知識,不僅僅包括TCP/IP,http等網際網路行業常用的軟體協議,也包括網路規劃,甚至更具體的說,根據網站應用所處的地理環境進行網路規劃。比如人們常說:“這世界上最遠的距離不是生與死的距離,而是電信到網通的距離”(笑)如果應用是建立在中國的,就要考慮電信使用者和網通使用者訪問網站的速度應該都比較快才可以。這時候的解決方案可能有多種,比如採用CDN(Content Delivery Network內容分發網路)使得網站的內容釋出到離使用者最近的伺服器,又可以採用把伺服器放在一些所謂的雙線機房中,甚至將幾種方案結合起來使用。這些都統統歸到網路知識中。做為公司的架構師,要對這些知識都有所瞭解,才有助於在遇到問題時找到最佳答案。
硬體知識。
        瞭解硬體的極限,是架構師的基本功。我見過一些人,他們的眼中軟體硬體都是沒有極限的,需要資源就申請,系統性能下降了就買更高階的裝置。然而,硬體的效能有很大一部分取決於I/O裝置。而這些I/O裝置依靠的都是機械物理運動,這種運動是有極限的。因此當資源訪問量增大到一定的程度時,這種物理運動將成為瓶頸。比如說,在開發網站的過程中,記錄訪客的狀態是一件很重要的事情,一般來說可以使用HttpSession來記錄。而 HttpSession的儲存問題將是一個很大的挑戰,尤其是多機共享Session時,將HttpSession存成檔案並通過多機共享或網路備份的方式來解決分散式的問題是常用的方案,然而,架構師必須考慮到這種方案是有I/O極限限制的,很難擴充套件到超過一定規模的大型網路。同時,架構師應該瞭解目前最近的硬體發展是否對軟體系統會造成一定的影響,比如在多核的條件下是否對軟體程式設計有新的要求,是否會對執行在虛擬機器和非虛擬機器上的程式有影響等等。
軟體知識。
        軟體知識所包含的範圍就更加廣泛了。對於網際網路行業來講,架構師要了解作業系統,資料庫,應用伺服器等各方面的知識。比如說,如果網站使用的作業系統是Linux,就要了解這個Linux版本的效能與侷限性,比如說最多可以存放的單個檔案為多大。有的資料庫的資料是以單個檔案來存放的,雖然我們很少見到資料庫中的資料多到不能再放入一條記錄的情況,但是作為架構師,請時刻注意,這種可能性是有的。而且如果你有幸在一家高速成長的網際網路企業中,而你所負責的應用又沒有經過優化的話,可能你會很快見到這種現象。這種現象的發生可能是由於作業系統不支援大檔案的原因,也可能是資料庫不支援大檔案。不論如何,架構師應該在這種現象發生之前就把一切都準備好。對資料庫中表的拆分是架構師應該遇到的另外一個困難。一般來說增加應用伺服器比較簡單而增加資料庫伺服器則是比較複雜的問題,如果一個站點由多個數據庫支援,架構師需要考慮如何在保證資料一致的情況下,讓多個數據庫分擔壓力。有些解決方案是將資料庫的讀寫分開,使得大多數的查詢sql不經過核心資料庫,而只是訪問資料庫的副本,但事實上,這種方式也只能維護規模不大的網站。對於大型的網站來說,把業務分散到不同的資料庫中,只共享必要的資料,才是合理的提高網站擴充套件性的解決方案。
其他知識。
        作為系統架構師,可能還需要對分散式系統,負載均衡,網路安全,資料監控等等各方面都有所瞭解。不僅僅是瞭解理論知識,也要對相關的產品和業界進展有一定的認識。比如說做負載均衡最好的產品是那種。目前最常用的備份策略是什麼,有什麼缺點。如何使用快取,如何做好日誌分析等等。

        剛剛談到的是架構師需要掌握的知識,然而,冰凍三尺非一日之寒。這個過程需要我們慢慢的積累。如果你已經進入到公司進行軟體開發,請時刻關注你所開發軟體的效能與可擴充套件性,而不僅僅侷限在功能上,時刻想著任何一個簡單的問題:我開發的模組如果放在多人併發的環境下會怎樣,慢慢的就會有所心得。如果你還是一個在校學生,不要想著自己離架構師這個職位還很遙遠。要知道,成為架構師的修煉之路是很長的,甚至可以說是終身的,因此早點進入學習狀態,不斷修煉自己。在學校期間學好離散數學,資料結構,作業系統,編譯原理,體系結構,資料庫原理等關鍵課程,並積極尋找機會到外面實習,增長自己的工作經驗。如果有機會去到一些技術主導的公司中工作,就一定不要放棄這種機會,慢慢就會成長起來。最重要的,你會養成關注技術,勤于思考的好習慣。當有一天你發現自己對任何技術難題都可以一眼看到其本質,並能夠將其分解為一個個可輕鬆解決的模組,你會由衷的感覺到知識給你帶來的快樂,或許那一天,你已經是一個架構師了。

相關推薦

軟體架構成長

        對於任何一個軟體開發人員來說,架構師都是一個令人嚮往的角色。就連世界首富比爾蓋茨在2000年卸任公司CEO的同時,也擔任了微軟公司的榮譽角色“首席軟體架構師”,可見“架構師”這一稱謂的吸引力。架構師是公司的“金領”,有著非常高的收入,很少需要考慮生存的問題,

開啟運維自動化架構成長

系統管 體驗 asc 職責 教育 管理 mysq 安全管理 現在 技術的提升僅是量的積累,思想的提升才是質的飛躍!這句話是我在網上看到認為最有道理的勵誌語錄了,當然互聯網IT行業的工作者相對理解的會更加深刻。以這句話開頭引出我將要寫的這篇文章。首先,請允許我做一個自我介紹:

架構成長-基於android fragment通信的面向對象的萬能接口

ref 方法 state 常用 ise val attach 不能 lease 前言   開發一個app時,常用Activity和Fragment,由於操作方便Fragment越來越受歡迎,這樣就避免不了Activity和Fragment、Fragment和Fragment

架構成長(1)--什麽是架構

自然 得到 場景 裏來 計劃 理論 混合 研發 既然 前言: 哲學家常思考的問題:" 我是誰?"" 我從哪裏來?"" 要到哪裏去?不只是哲學家,我想每個人都有自己對這三個問題的認知。 如果我們要成為架構師,我們自己要面臨的三

架構成長 5 --如何獲取知識(學習境界)(方法)

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

架構成長2.1-PXE+Kickstart原理

點選返回架構師成長之路 架構師成長之路2.1-PXE+Kickstart原理 PXE+Kickstart 主要用於在公司內網批量安裝新伺服器系統,這極大地簡化了用光碟重複安裝Linux作業系統的過程,再加上分散式自動化運維工具puppet進行批量部署,達到了自動化運維的目的,避免了重複性勞動,極大的提高了

架構成長 4 --架構知識體系(方法)

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

架構成長 1 --什麼是架構

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

架構成長 3 --如何成為架構(方法)

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

架構成長 2 --架構必備技能(目標)

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

架構成長2.3-PXE+Kickstart無人值守大量部署Linux

點選返回架構師成長之路 架構師成長之路2.3-PXE+Kickstart無人值守大量部署Linux 一定要關閉,否則安裝一定會出問題。                     &nbs

架構成長(3)--如何成為架構(方法)

     接下來我們就要往這個方向努力。然而如唐僧去西天取經一樣,要歷經種種磨難,一路上打敗各種妖魔鬼怪才能繼續前行,所以唐僧取經,第一件事,就是招徒弟,遇見妖魔鬼怪就讓技術高超的徒弟打敗它,徒弟不聽話就念緊箍咒,徒弟也搞不定的妖怪,就請觀音菩薩搞定,這就是唐僧成功的法寶,沒法寶上路,看來我們會死的比較慘啊,

架構成長(2)--架構必備技能(目標)

前言:"比你牛B的人比你還努力,你有什麼資格不去奮鬥"哲學家常思考的問題:" 我是誰?"" 我從哪裡來?"" 要到哪裡去?不只是哲學家,我想每個人都有自己對這三個問題的認知。 如果我們要成為架構師,我們

架構成長4.2-多維監控體系_系統監控

點選返回架構師成長之路 架構師成長之路4.2-多維監控體系_系統監控 監控物件: 監控物件的理解:CPU工作原理   監控物件的指標:CPU使用率、CPU負載 、CPU個數、 CPU上下文切換 確認效能基準線:怎麼樣才算故障?CPU負載多少才算高? 監控範圍:

架構成長4.3-多維監控體系_應用服務監控

點選返回架構師成長之路 架構師成長之路4.3-多維監控體系_應用服務監控 監控物件: 監控物件的理解:CPU工作原理   監控物件的指標:CPU使用率、CPU負載 、CPU個數、 CPU上下文切換 確認效能基準線:怎麼樣才算故障?CPU負載多少才算高? 監控範圍:

架構成長(1)--什麼是架構

前言:哲學家常思考的問題:" 我是誰?"" 我從哪裡來?"" 要到哪裡去?不只是哲學家,我想每個人都有自己對這三個問題的認知。 如果我們要成為架構師,我們自己要面臨的三大問題: 找準自己定位:我是誰?在哪裡? 怎樣做好架構師:我要做什麼? 如何搭建架構師知識體系:我該怎麼做

java技術達人成長記WEB架構成長(6年)

      WEB架構師成長之路之一-走正確的路      本人也是coding很多年,雖然很失敗,但也總算有點失敗的心得,不過我在中國,大多數程式設計師都是像我一樣,在一直走著彎路,如果想成為一個架構師,

架構成長2.4-Kickstart檔案剖析

點選返回架構師成長之路 架構師成長之路2.4-Kickstart檔案剖析  kickstart檔案是一個簡單的文字檔案,它包含了一個專案列表,每個專案由一個關鍵字來識別。 建立kickstart檔案注意: 每節必須按順序指定.除非特別申明,每節內的專案則不必按序排列.小節的順序為:

前端架構成長

前兩天公司領導對員工進行崗位職責邊緣劃分,老大問我:“未來職場規劃?”,我說:“我想成為全棧工程師!”。雖然我在公司一直做前端開發,但是作為前端工程師我總是妄自菲薄感覺自己像個門外漢,技術太淺登不得大雅

架構成長4.4-多維監控體系_zabbix

配置使用 客戶端 成長 創建 zabbix客戶端 導入導出 val size opera 點擊返回架構師成長之路 架構師成長之路4.4-多維監控體系_zabbix 點擊返回:自學Zabbix之路 點擊返回:自學Zabbix4.0之路 點擊返回:自學zabbix集錦