- 相關(guān)推薦
互聯(lián)網(wǎng)架構(gòu)師必須具備的技能
對(duì)于任何一個(gè)軟件開(kāi)發(fā)人員來(lái)說(shuō),架構(gòu)師都是一個(gè)令人向往的角色。就連世界首富比爾蓋茨在2000年卸任公司ceo的同時(shí),也擔(dān)任了微軟公司的榮譽(yù)角色“首席軟件架構(gòu)師”,可見(jiàn)“架構(gòu)師”這一稱謂的吸引力。那么作為一名互聯(lián)網(wǎng)架構(gòu)師必須具備的技能有哪些呢?小編為大家講解如下,歡迎查看!
架構(gòu)師是公司的“金領(lǐng)”,有著非常高的收入,很少需要考慮生存的問(wèn)題,從而有更多的精力思考關(guān)鍵技術(shù)問(wèn)題,形成“強(qiáng)者愈強(qiáng)”的良性循環(huán)。部分優(yōu)秀的開(kāi)發(fā)人員在工作了一定時(shí)間后,就要開(kāi)始考慮自己的未來(lái)到底向哪個(gè)方向發(fā)展。如果開(kāi)發(fā)人員的溝通能力強(qiáng)過(guò)技術(shù)能力,在補(bǔ)充一定的項(xiàng)目管理知識(shí)后,可以向技術(shù)管理的方向轉(zhuǎn)型。如果其對(duì)技術(shù)一直很感興趣,而溝通能力也不弱,則可以試著進(jìn)一步加強(qiáng)技術(shù)修養(yǎng),以期向架構(gòu)師的方向發(fā)展,最終“修成正果”。
那么,到底什么是架構(gòu)師呢?所謂的架構(gòu)師,應(yīng)該是一個(gè)技術(shù)企業(yè)的最高技術(shù)決策者。他主要負(fù)責(zé)公司軟件產(chǎn)品或軟件項(xiàng)目的技術(shù)路線與技術(shù)框架的制訂。好的架構(gòu)師都是善良的獨(dú)裁的人,具有很強(qiáng)的技術(shù)、良好的寫(xiě)作能力、良好的口頭表達(dá)能力,能夠在各個(gè)層次進(jìn)行溝通。從開(kāi)發(fā)人員到架構(gòu)師的成長(zhǎng)應(yīng)該是階梯式的,一般來(lái)講開(kāi)發(fā)人員在剛剛開(kāi)始工作時(shí)只能開(kāi)發(fā)簡(jiǎn)單的獨(dú)立軟件模塊,慢慢的隨著經(jīng)驗(yàn)的增長(zhǎng),他開(kāi)始接觸一些相互之間有信息傳遞的模塊,而后來(lái),他會(huì)發(fā)現(xiàn)自己接到的開(kāi)發(fā)任務(wù)已經(jīng)不是一個(gè)獨(dú)立的單體,這些任務(wù)由一些專門(mén)的軟件部分組成,可能包含數(shù)據(jù)庫(kù),工作流引擎,消息服務(wù)等等各種功能模塊,可能分布在不同的服務(wù)器上,所有的部分協(xié)同起來(lái),完成軟件功能。而這時(shí)候,體系結(jié)構(gòu)的好壞將直接決定了系統(tǒng)的性能和可擴(kuò)展性,而就在這時(shí)候,這名優(yōu)秀的開(kāi)發(fā)人員也開(kāi)始思考架構(gòu)師應(yīng)該思考的問(wèn)題了,或者說(shuō),他向成長(zhǎng)為架構(gòu)師的道路邁出了一大步。
什么是架構(gòu)師最具價(jià)值的技能呢?就是要了解不同的知識(shí),做一個(gè)“雜家”或者說(shuō)“博學(xué)家”。當(dāng)然,如果你的數(shù)據(jù)庫(kù)技術(shù)非常棒,或者你在工作流引擎方面具有不可超越的專家知識(shí),那也是很不錯(cuò)的。好的架構(gòu)師有好多都是從專家成長(zhǎng)過(guò)來(lái)的。但是,這不是架構(gòu)師應(yīng)該做的事情,架構(gòu)師應(yīng)該做的是了解所有的東西,既了解技術(shù)的宏觀面,又了解技術(shù)的細(xì)節(jié)。真正的架構(gòu)師不僅僅要了解軟件,也要了解硬件,在關(guān)鍵的部位使用合適的硬件來(lái)取代軟件,可以成倍甚至成百倍的提高整個(gè)系統(tǒng)的效率。下面我將會(huì)以互聯(lián)網(wǎng)行業(yè)對(duì)的架構(gòu)師的要求為例,向大家講解作為架構(gòu)師應(yīng)該具備的知識(shí)。
互聯(lián)網(wǎng)行業(yè)是當(dāng)前最激動(dòng)人心的行業(yè)之一,很多的創(chuàng)新都來(lái)自于這個(gè)行業(yè),而每一個(gè)大型的網(wǎng)站如google,yahoo,myspace等都需要解決一個(gè)非常復(fù)雜的問(wèn)題,就是網(wǎng)站的分布式向外擴(kuò)展(scale out)的問(wèn)題。解決這個(gè)問(wèn)題,需要最優(yōu)秀的架構(gòu)師對(duì)業(yè)務(wù)進(jìn)行剖析,利用軟硬件將網(wǎng)站進(jìn)行重構(gòu),甚至根據(jù)業(yè)務(wù)研發(fā)相應(yīng)的分布式技術(shù),解決網(wǎng)站復(fù)雜的分布式計(jì)算的問(wèn)題。如果你想在這個(gè)行業(yè)中成為一名架構(gòu)師的話,需要至少掌握網(wǎng)絡(luò)知識(shí),硬件,軟件,網(wǎng)站優(yōu)化等方方面面的知識(shí):
1.網(wǎng)絡(luò)知識(shí)
當(dāng)前的軟件已經(jīng)絕對(duì)不是那種僅僅跑在一臺(tái)單機(jī)上的孤立應(yīng)用了。不僅僅是在互聯(lián)網(wǎng)行業(yè),任何一個(gè)行業(yè)的軟件,都要求其具有網(wǎng)絡(luò)功能。因此,網(wǎng)絡(luò)知識(shí)是架構(gòu)師必備的知識(shí)。我們所說(shuō)的網(wǎng)絡(luò)知識(shí),不僅僅包括tcp/ip,http等互聯(lián)網(wǎng)行業(yè)常用的軟件協(xié)議,也包括網(wǎng)絡(luò)規(guī)劃,甚至更具體的說(shuō),根據(jù)網(wǎng)站應(yīng)用所處的地理環(huán)境進(jìn)行網(wǎng)絡(luò)規(guī)劃。比如人們常說(shuō):“這世界上最遠(yuǎn)的距離不是生與死的距離,而是電信到網(wǎng)通的距離”(笑)如果應(yīng)用是建立在中國(guó)的,就要考慮電信用戶和網(wǎng)通用戶訪問(wèn)網(wǎng)站的速度應(yīng)該都比較快才可以。這時(shí)候的解決方案可能有多種,比如采用cdn(content delivery network內(nèi)容分發(fā)網(wǎng)絡(luò))使得網(wǎng)站的內(nèi)容發(fā)布到離用戶最近的服務(wù)器,又可以采用把服務(wù)器放在一些所謂的雙線機(jī)房中,甚至將幾種方案結(jié)合起來(lái)使用。這些都統(tǒng)統(tǒng)歸到網(wǎng)絡(luò)知識(shí)中。做為公司的架構(gòu)師,要對(duì)這些知識(shí)都有所了解,才有助于在遇到問(wèn)題時(shí)找到最佳答案。
2.硬件知識(shí)
了解硬件的極限,是架構(gòu)師的基本功。我見(jiàn)過(guò)一些人,他們的眼中軟件硬件都是沒(méi)有極限的,需要資源就申請(qǐng),系統(tǒng)性能下降了就買(mǎi)更高級(jí)的設(shè)備。然而,硬件的性能有很大一部分取決于i/o設(shè)備。而這些i/o設(shè)備依靠的都是機(jī)械物理運(yùn)動(dòng),這種運(yùn)動(dòng)是有極限的。因此當(dāng)資源訪問(wèn)量增大到一定的程度時(shí),這種物理運(yùn)動(dòng)將成為瓶頸。比如說(shuō),在開(kāi)發(fā)網(wǎng)站的過(guò)程中,記錄訪客的狀態(tài)是一件很重要的事情,一般來(lái)說(shuō)可以使用httpsession來(lái)記錄。而httpsession的存儲(chǔ)問(wèn)題將是一個(gè)很大的挑戰(zhàn),尤其是多機(jī)共享session時(shí),將httpsession存成文件并通過(guò)多機(jī)共享或網(wǎng)絡(luò)備份的方式來(lái)解決分布式的問(wèn)題是常用的方案,然而,架構(gòu)師必須考慮到這種方案是有i/o極限限制的,很難擴(kuò)展到超過(guò)一定規(guī)模的大型網(wǎng)絡(luò)。同時(shí),架構(gòu)師應(yīng)該了解目前最近的硬件發(fā)展是否對(duì)軟件系統(tǒng)會(huì)造成一定的影響,比如在多核的條件下是否對(duì)軟件編程有新的要求,是否會(huì)對(duì)運(yùn)行在虛擬機(jī)和非虛擬機(jī)上的程序有影響等等。
3.軟件知識(shí)
軟件知識(shí)所包含的范圍就更加廣泛了。對(duì)于互聯(lián)網(wǎng)行業(yè)來(lái)講,架構(gòu)師要了解操作系統(tǒng),數(shù)據(jù)庫(kù),應(yīng)用服務(wù)器等各方面的知識(shí)。比如說(shuō),如果網(wǎng)站使用的操作系統(tǒng)是linux,就要了解這個(gè)linux版本的性能與局限性,比如說(shuō)最多可以存放的單個(gè)文件為多大。有的數(shù)據(jù)庫(kù)的數(shù)據(jù)是以單個(gè)文件來(lái)存放的,雖然我們很
少見(jiàn)到數(shù)據(jù)庫(kù)中的數(shù)據(jù)多到不能再放入一條記錄的情況,但是作為架構(gòu)師,請(qǐng)時(shí)刻注意,這種可能性是有的。而且如果你有幸在一家高速成長(zhǎng)的互聯(lián)網(wǎng)企業(yè)中,而你所負(fù)責(zé)的應(yīng)用又沒(méi)有經(jīng)過(guò)優(yōu)化的話,可能你會(huì)很快見(jiàn)到這種現(xiàn)象。這種現(xiàn)象的發(fā)生可能是由于操作系統(tǒng)不支持大文件的原因,也可能是數(shù)據(jù)庫(kù)不支持大文件。不論如何,架構(gòu)師應(yīng)該在這種現(xiàn)象發(fā)生之前就把一切都準(zhǔn)備好。對(duì)數(shù)據(jù)庫(kù)中表的拆分是架構(gòu)師應(yīng)該遇到的另外一個(gè)困難。一般來(lái)說(shuō)增加應(yīng)用服務(wù)器比較簡(jiǎn)單而增加數(shù)據(jù)庫(kù)服務(wù)器則是比較復(fù)雜的問(wèn)題,如果一個(gè)站點(diǎn)由多個(gè)數(shù)據(jù)庫(kù)支持,架構(gòu)師需要考慮如何在保證數(shù)據(jù)一致的情況下,讓多個(gè)數(shù)據(jù)庫(kù)分擔(dān)壓力。有些解決方案是將數(shù)據(jù)庫(kù)的讀寫(xiě)分開(kāi),使得大多數(shù)的查詢sql不經(jīng)過(guò)核心數(shù)據(jù)庫(kù),而只是訪問(wèn)數(shù)據(jù)庫(kù)的副本,但事實(shí)上,這種方式也只能維護(hù)規(guī)模不大的網(wǎng)站。對(duì)于大型的網(wǎng)站來(lái)說(shuō),把業(yè)務(wù)分散到不同的數(shù)據(jù)庫(kù)中,只共享必要的數(shù)據(jù),才是合理的提高網(wǎng)站擴(kuò)展性的解決方案。
4.其他知識(shí)
作為系統(tǒng)架構(gòu)師,可能還需要對(duì)分布式系統(tǒng),負(fù)載均衡,網(wǎng)絡(luò)安全,數(shù)據(jù)監(jiān)控等等各方面都有所了解。不僅僅是了解理論知識(shí),也要對(duì)相關(guān)的產(chǎn)品和業(yè)界進(jìn)展有一定的認(rèn)識(shí)。比如說(shuō)做負(fù)載均衡最好的產(chǎn)品是那種。目前最常用的備份策略是什么,有什么缺點(diǎn)。如何使用緩存,如何做好日志分析等等。
剛剛談到的是架構(gòu)師需要掌握的知識(shí),然而,冰凍三尺非一日之寒。這個(gè)過(guò)程需要我們慢慢的積累。如果你已經(jīng)進(jìn)入到公司進(jìn)行軟件開(kāi)發(fā),請(qǐng)時(shí)刻關(guān)注你所開(kāi)發(fā)軟件的性能與可擴(kuò)展性,而不僅僅局限在功能上,時(shí)刻想著任何一個(gè)簡(jiǎn)單的問(wèn)題:我開(kāi)發(fā)的模塊如果放在多人并發(fā)的環(huán)境下會(huì)怎樣,慢慢的就會(huì)有所心得。如果你還是一個(gè)在校學(xué)生,不要想著自己離架構(gòu)師這個(gè)職位還很遙遠(yuǎn)。要知道,成為架構(gòu)師的修煉之路是很長(zhǎng)的,甚至可以說(shuō)是終身的,因此早點(diǎn)進(jìn)入學(xué)習(xí)狀態(tài),不斷修煉自己。在學(xué)校期間學(xué)好離散數(shù)學(xué),數(shù)據(jù)結(jié)構(gòu),操作系統(tǒng),編譯原理,體系結(jié)構(gòu),數(shù)據(jù)庫(kù)原理等關(guān)鍵課程,并積極尋找機(jī)會(huì)到外面實(shí)習(xí),增長(zhǎng)自己的工作經(jīng)驗(yàn)。如果有機(jī)會(huì)去到一些技術(shù)主導(dǎo)的公司中工作,就一定不要放棄這種機(jī)會(huì),慢慢就會(huì)成長(zhǎng)起來(lái)。最重要的,你會(huì)養(yǎng)成關(guān)注技術(shù),勤于思考的好習(xí)慣。當(dāng)有一天你發(fā)現(xiàn)自己對(duì)任何技術(shù)難題都可以一眼看到其本質(zhì),并能夠?qū)⑵浞纸鉃橐粋(gè)個(gè)可輕松解決的模塊,你會(huì)由衷的感覺(jué)到知識(shí)給你帶來(lái)的快樂(lè),或許那一天,你已經(jīng)是一個(gè)架構(gòu)師了。
拓展:架構(gòu)師必須具備的能力
1、軟件架構(gòu)的定義:
軟件架構(gòu)(Software Architecture)也稱之為軟件體系結(jié)構(gòu),它是一組有關(guān)如下要素的重要決策:軟件系統(tǒng)的組織,構(gòu)成系統(tǒng)的結(jié)構(gòu)化元素,接口和它們相互協(xié)作的行為的選擇,結(jié)構(gòu)化元素和行為元素組合成粒度更大的子系統(tǒng)方式的選擇,以及指導(dǎo)這一組織(元素及其接口、協(xié)作和組合方式)的架構(gòu)風(fēng)格的選擇。換句話說(shuō),軟件架構(gòu)實(shí)際上是對(duì)系統(tǒng)整體結(jié)構(gòu)設(shè)計(jì)的刻劃,系統(tǒng)架構(gòu)師是做全局的、整體的把握工作。架構(gòu)的組成與決策是架構(gòu)設(shè)計(jì)的兩個(gè)基本概念。架構(gòu)=>藍(lán)圖+規(guī)則+解決方案。
軟件架構(gòu)是一個(gè)認(rèn)識(shí)事物的過(guò)程:原型、發(fā)現(xiàn)、改進(jìn)、再發(fā)現(xiàn)、再改進(jìn),這是軟件開(kāi)發(fā)的必由螺旋。
2、架構(gòu)師成長(zhǎng)路線圖:
系統(tǒng)架構(gòu)師已經(jīng)不僅僅是技術(shù)精湛的技術(shù)專家,他需要與業(yè)務(wù)團(tuán)隊(duì)緊密合作,并且精通市場(chǎng)、業(yè)務(wù)與管理。從上升趨勢(shì)來(lái)說(shuō),可以有三個(gè)層面的路線圖:第一個(gè)層面,要關(guān)注系統(tǒng)思考。在這個(gè)層面,重要的不僅僅是掌握設(shè)計(jì)的知識(shí)點(diǎn),而是更重視分析能力、創(chuàng)新思維能力的提升,需要更廣闊的思路,這方面的空間相當(dāng)非常大。這是第一層面的能力基礎(chǔ)。第二個(gè)層面,要關(guān)注總結(jié)和指導(dǎo),思維空間要轉(zhuǎn)向群體。如何把已有的經(jīng)驗(yàn)總結(jié)出來(lái),并讓這種智力資產(chǎn)真正發(fā)揮作用?成為架構(gòu)師上升第二層面的能力基礎(chǔ)。第三個(gè)層面,要提升自身的全面修養(yǎng)。我們必須引發(fā)自己思維方式的變革,要培養(yǎng)組織力、領(lǐng)導(dǎo)力、創(chuàng)新力以及擁有激情,這是架構(gòu)師上升第三層面的能力基礎(chǔ)。
要看到自身的弱點(diǎn),思路要寬,多思考
架構(gòu)師并不是一個(gè)普通的技術(shù)人員,他對(duì)設(shè)計(jì)站的角度更高,需要的知識(shí)和能力結(jié)構(gòu)更復(fù)雜,他需要具有其他人所沒(méi)有的思想、眼光和感知世界的方法,必須突破已有的思維模式和行為模式,突破長(zhǎng)期束縛自己的思維瓶頸,才可能達(dá)到自己從未達(dá)到過(guò)的高度。
架構(gòu)師要養(yǎng)成每項(xiàng)工作都記錄并分析的好習(xí)慣,以形成更扎實(shí)的工作風(fēng)格。在每個(gè)項(xiàng)目完成都需要進(jìn)行總結(jié)。
3、架構(gòu)師要保持自己的競(jìng)爭(zhēng)力:
架構(gòu)師必須關(guān)注今天的IT技術(shù)、商業(yè)模式變革以及由此引發(fā)的軟件產(chǎn)業(yè)變革的重大趨勢(shì),勤于思考并迎接新的挑戰(zhàn)。一個(gè)人最核心的競(jìng)爭(zhēng)優(yōu)勢(shì)是學(xué)習(xí)能力。架構(gòu)師作為技術(shù)層面資深的一群,為了保持競(jìng)爭(zhēng)力需要注意以下幾個(gè)問(wèn)題:
(1)、保持激情:關(guān)鍵是信念。激情源自于信念,有了信念才會(huì)主動(dòng)挑戰(zhàn)自我,迎接挑戰(zhàn)才會(huì)有激情,有了激情工作才會(huì)更有意思。
(2)、創(chuàng)新思考:在工作中多嘗試一些新方法,是維持自我能力的重要手段。
(3)、逆向思維:逆向思維指的是使用與正常思路相反的思維方式去分析同一個(gè)問(wèn)題,使思路多樣化。逆向思維能夠幫助人們沖破傳統(tǒng)思維的束縛,克服慣性思維方式。從反方向考慮問(wèn)題往往會(huì)取得出人意料的結(jié)果。
4、架構(gòu)師要關(guān)注軟件的新趨勢(shì):
目前傳統(tǒng)軟件危機(jī)暴露出的問(wèn)題還未真正解決,新的挑戰(zhàn)卻已擺在眼前。在人們不斷思考面臨的挑戰(zhàn)以及對(duì)策中,形成了一些新的趨勢(shì),包括:
(1)、軟件質(zhì)量以服務(wù)質(zhì)量形式展現(xiàn),對(duì)質(zhì)量的投資可獲得更高的投資回報(bào)。
(2)、軟件過(guò)程擴(kuò)展到用戶,希望更多的用戶深入?yún)⑴c到軟件全生命周期。
(3)、功能至上遠(yuǎn)遠(yuǎn)不夠,用戶體驗(yàn)得到空前重視。
(4)、系統(tǒng)集成模式面臨變革,軟件、服務(wù)、終端、IT基礎(chǔ)設(shè)施將形成更緊密的價(jià)值體系。
(5)、研發(fā)要更多關(guān)注非功能性需求,如安全性質(zhì)量、性能、可靠性、可擴(kuò)充性、可伸縮性、可用性等,從而不斷提高軟件的價(jià)值! ≈R(shí)就是力量==>信息就是力量。
架構(gòu)并不完全是概要設(shè)計(jì)。概要設(shè)計(jì)還是停留在圖紙上,而架構(gòu)必須證明這個(gè)技術(shù)路線可行,并且能夠證明大多數(shù)質(zhì)量風(fēng)險(xiǎn)已經(jīng)得到了解決。
5、所謂設(shè)計(jì)就是解決問(wèn)題的過(guò)程:
軟件設(shè)計(jì)是一種思維活動(dòng),設(shè)計(jì)的魅力在于破解難題,通過(guò)直面問(wèn)題的挑戰(zhàn),以及對(duì)相應(yīng)解決方案的仔細(xì)推敲,才可能設(shè)計(jì)出真正有靈性的產(chǎn)品。
(1)、設(shè)計(jì)不具普遍性:軟件設(shè)計(jì)很少具有普通性,不同的目標(biāo)需要不同的設(shè)計(jì)來(lái)支持。
(2)、做出權(quán)衡:所謂軟件設(shè)計(jì),本質(zhì)上就是在質(zhì)量、成本、時(shí)間以及其它各種因素之間做出權(quán)衡。
(3)、記錄設(shè)計(jì)的理由(設(shè)計(jì)文檔)。多關(guān)注各種方面的架構(gòu)設(shè)計(jì)。
【互聯(lián)網(wǎng)架構(gòu)師必須具備的技能】相關(guān)文章:
采購(gòu)主管必須具備的能力09-07
網(wǎng)絡(luò)營(yíng)銷(xiāo)必須具備的能力06-17
工作中必須具備的心態(tài)04-21
辦公文秘必須具備的素養(yǎng)12-02
車(chē)間主任必須具備的能力03-06
企業(yè)總裁必須具備的三種能力03-15
主持人的必須具備的基本功04-24
客服需要具備哪些素質(zhì)和技能04-24
中層管理人員必須具備哪些能力01-14