互聯(lián)網(wǎng)架構(gòu)師必須具備的技能
對于任何一個(gè)軟件開發(fā)人員來說,架構(gòu)師都是一個(gè)令人向往的角色。就連世界首富比爾蓋茨在2000年卸任公司ceo的同時(shí),也擔(dān)任了微軟公司的榮譽(yù)角色“首席軟件架構(gòu)師”,可見“架構(gòu)師”這一稱謂的吸引力。那么作為一名互聯(lián)網(wǎng)架構(gòu)師必須具備的技能有哪些呢?YJBYS小編為大家講解如下,歡迎查看!
架構(gòu)師是公司的“金領(lǐng)”,有著非常高的收入,很少需要考慮生存的問題,從而有更多的精力思考關(guān)鍵技術(shù)問題,形成“強(qiáng)者愈強(qiáng)”的良性循環(huán)。部分優(yōu)秀的開發(fā)人員在工作了一定時(shí)間后,就要開始考慮自己的未來到底向哪個(gè)方向發(fā)展。如果開發(fā)人員的溝通能力強(qiáng)過技術(shù)能力,在補(bǔ)充一定的項(xiàng)目管理知識后,可以向技術(shù)管理的方向轉(zhuǎn)型。如果其對技術(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ù)、良好的寫作能力、良好的口頭表達(dá)能力,能夠在各個(gè)層次進(jìn)行溝通。從開發(fā)人員到架構(gòu)師的成長應(yīng)該是階梯式的,一般來講開發(fā)人員在剛剛開始工作時(shí)只能開發(fā)簡單的獨(dú)立軟件模塊,慢慢的隨著經(jīng)驗(yàn)的增長,他開始接觸一些相互之間有信息傳遞的模塊,而后來,他會發(fā)現(xiàn)自己接到的開發(fā)任務(wù)已經(jīng)不是一個(gè)獨(dú)立的單體,這些任務(wù)由一些專門的軟件部分組成,可能包含數(shù)據(jù)庫,工作流引擎,消息服務(wù)等等各種功能模塊,可能分布在不同的服務(wù)器上,所有的部分協(xié)同起來,完成軟件功能。而這時(shí)候,體系結(jié)構(gòu)的好壞將直接決定了系統(tǒng)的性能和可擴(kuò)展性,而就在這時(shí)候,這名優(yōu)秀的開發(fā)人員也開始思考架構(gòu)師應(yīng)該思考的問題了,或者說,他向成長為架構(gòu)師的道路邁出了一大步。
什么是架構(gòu)師最具價(jià)值的技能呢?就是要了解不同的知識,做一個(gè)“雜家”或者說“博學(xué)家”。當(dāng)然,如果你的數(shù)據(jù)庫技術(shù)非常棒,或者你在工作流引擎方面具有不可超越的專家知識,那也是很不錯(cuò)的。好的架構(gòu)師有好多都是從專家成長過來的。但是,這不是架構(gòu)師應(yīng)該做的事情,架構(gòu)師應(yīng)該做的是了解所有的東西,既了解技術(shù)的宏觀面,又了解技術(shù)的細(xì)節(jié)。真正的架構(gòu)師不僅僅要了解軟件,也要了解硬件,在關(guān)鍵的部位使用合適的硬件來取代軟件,可以成倍甚至成百倍的提高整個(gè)系統(tǒng)的效率。下面我將會以互聯(lián)網(wǎng)行業(yè)對的架構(gòu)師的要求為例,向大家講解作為架構(gòu)師應(yīng)該具備的知識。
互聯(lián)網(wǎng)行業(yè)是當(dāng)前最激動人心的行業(yè)之一,很多的創(chuàng)新都來自于這個(gè)行業(yè),而每一個(gè)大型的網(wǎng)站如google,yahoo,myspace等都需要解決一個(gè)非常復(fù)雜的問題,就是網(wǎng)站的分布式向外擴(kuò)展(scale out)的問題。解決這個(gè)問題,需要最優(yōu)秀的架構(gòu)師對業(yè)務(wù)進(jìn)行剖析,利用軟硬件將網(wǎng)站進(jìn)行重構(gòu),甚至根據(jù)業(yè)務(wù)研發(fā)相應(yīng)的分布式技術(shù),解決網(wǎng)站復(fù)雜的分布式計(jì)算的問題。如果你想在這個(gè)行業(yè)中成為一名架構(gòu)師的話,需要至少掌握網(wǎng)絡(luò)知識,硬件,軟件,網(wǎng)站優(yōu)化等方方面面的知識:
1.網(wǎng)絡(luò)知識
當(dāng)前的軟件已經(jīng)絕對不是那種僅僅跑在一臺單機(jī)上的孤立應(yīng)用了。不僅僅是在互聯(lián)網(wǎng)行業(yè),任何一個(gè)行業(yè)的軟件,都要求其具有網(wǎng)絡(luò)功能。因此,網(wǎng)絡(luò)知識是架構(gòu)師必備的知識。我們所說的網(wǎng)絡(luò)知識,不僅僅包括tcp/ip,http等互聯(lián)網(wǎng)行業(yè)常用的軟件協(xié)議,也包括網(wǎng)絡(luò)規(guī)劃,甚至更具體的說,根據(jù)網(wǎng)站應(yīng)用所處的地理環(huán)境進(jìn)行網(wǎng)絡(luò)規(guī)劃。比如人們常說:“這世界上最遠(yuǎn)的距離不是生與死的距離,而是電信到網(wǎng)通的距離”(笑)如果應(yīng)用是建立在中國的,就要考慮電信用戶和網(wǎng)通用戶訪問網(wǎng)站的速度應(yīng)該都比較快才可以。這時(shí)候的解決方案可能有多種,比如采用cdn(content delivery network內(nèi)容分發(fā)網(wǎng)絡(luò))使得網(wǎng)站的內(nèi)容發(fā)布到離用戶最近的服務(wù)器,又可以采用把服務(wù)器放在一些所謂的雙線機(jī)房中,甚至將幾種方案結(jié)合起來使用。這些都統(tǒng)統(tǒng)歸到網(wǎng)絡(luò)知識中。做為公司的架構(gòu)師,要對這些知識都有所了解,才有助于在遇到問題時(shí)找到最佳答案。
2.硬件知識
了解硬件的極限,是架構(gòu)師的基本功。我見過一些人,他們的眼中軟件硬件都是沒有極限的,需要資源就申請,系統(tǒng)性能下降了就買更高級的設(shè)備。然而,硬件的性能有很大一部分取決于i/o設(shè)備。而這些i/o設(shè)備依靠的都是機(jī)械物理運(yùn)動,這種運(yùn)動是有極限的。因此當(dāng)資源訪問量增大到一定的程度時(shí),這種物理運(yùn)動將成為瓶頸。比如說,在開發(fā)網(wǎng)站的過程中,記錄訪客的狀態(tài)是一件很重要的事情,一般來說可以使用httpsession來記錄。而httpsession的存儲問題將是一個(gè)很大的挑戰(zhàn),尤其是多機(jī)共享session時(shí),將httpsession存成文件并通過多機(jī)共享或網(wǎng)絡(luò)備份的.方式來解決分布式的問題是常用的方案,然而,架構(gòu)師必須考慮到這種方案是有i/o極限限制的,很難擴(kuò)展到超過一定規(guī)模的大型網(wǎng)絡(luò)。同時(shí),架構(gòu)師應(yīng)該了解目前最近的硬件發(fā)展是否對軟件系統(tǒng)會造成一定的影響,比如在多核的條件下是否對軟件編程有新的要求,是否會對運(yùn)行在虛擬機(jī)和非虛擬機(jī)上的程序有影響等等。
3.軟件知識
軟件知識所包含的范圍就更加廣泛了。對于互聯(lián)網(wǎng)行業(yè)來講,架構(gòu)師要了解操作系統(tǒng),數(shù)據(jù)庫,應(yīng)用服務(wù)器等各方面的知識。比如說,如果網(wǎng)站使用的操作系統(tǒng)是linux,就要了解這個(gè)linux版本的性能與局限性,比如說最多可以存放的單個(gè)文件為多大。有的數(shù)據(jù)庫的數(shù)據(jù)是以單個(gè)文件來存放的,雖然我們很
少見到數(shù)據(jù)庫中的數(shù)據(jù)多到不能再放入一條記錄的情況,但是作為架構(gòu)師,請時(shí)刻注意,這種可能性是有的。而且如果你有幸在一家高速成長的互聯(lián)網(wǎng)企業(yè)中,而你所負(fù)責(zé)的應(yīng)用又沒有經(jīng)過優(yōu)化的話,可能你會很快見到這種現(xiàn)象。這種現(xiàn)象的發(fā)生可能是由于操作系統(tǒng)不支持大文件的原因,也可能是數(shù)據(jù)庫不支持大文件。不論如何,架構(gòu)師應(yīng)該在這種現(xiàn)象發(fā)生之前就把一切都準(zhǔn)備好。對數(shù)據(jù)庫中表的拆分是架構(gòu)師應(yīng)該遇到的另外一個(gè)困難。一般來說增加應(yīng)用服務(wù)器比較簡單而增加數(shù)據(jù)庫服務(wù)器則是比較復(fù)雜的問題,如果一個(gè)站點(diǎn)由多個(gè)數(shù)據(jù)庫支持,架構(gòu)師需要考慮如何在保證數(shù)據(jù)一致的情況下,讓多個(gè)數(shù)據(jù)庫分擔(dān)壓力。有些解決方案是將數(shù)據(jù)庫的讀寫分開,使得大多數(shù)的查詢sql不經(jīng)過核心數(shù)據(jù)庫,而只是訪問數(shù)據(jù)庫的副本,但事實(shí)上,這種方式也只能維護(hù)規(guī)模不大的網(wǎng)站。對于大型的網(wǎng)站來說,把業(yè)務(wù)分散到不同的數(shù)據(jù)庫中,只共享必要的數(shù)據(jù),才是合理的提高網(wǎng)站擴(kuò)展性的解決方案。
4.其他知識
作為系統(tǒng)架構(gòu)師,可能還需要對分布式系統(tǒng),負(fù)載均衡,網(wǎng)絡(luò)安全,數(shù)據(jù)監(jiān)控等等各方面都有所了解。不僅僅是了解理論知識,也要對相關(guān)的產(chǎn)品和業(yè)界進(jìn)展有一定的認(rèn)識。比如說做負(fù)載均衡最好的產(chǎn)品是那種。目前最常用的備份策略是什么,有什么缺點(diǎn)。如何使用緩存,如何做好日志分析等等。
剛剛談到的是架構(gòu)師需要掌握的知識,然而,冰凍三尺非一日之寒。這個(gè)過程需要我們慢慢的積累。如果你已經(jīng)進(jìn)入到公司進(jìn)行軟件開發(fā),請時(shí)刻關(guān)注你所開發(fā)軟件的性能與可擴(kuò)展性,而不僅僅局限在功能上,時(shí)刻想著任何一個(gè)簡單的問題:我開發(fā)的模塊如果放在多人并發(fā)的環(huán)境下會怎樣,慢慢的就會有所心得。如果你還是一個(gè)在校學(xué)生,不要想著自己離架構(gòu)師這個(gè)職位還很遙遠(yuǎn)。要知道,成為架構(gòu)師的修煉之路是很長的,甚至可以說是終身的,因此早點(diǎn)進(jìn)入學(xué)習(xí)狀態(tài),不斷修煉自己。在學(xué)校期間學(xué)好離散數(shù)學(xué),數(shù)據(jù)結(jié)構(gòu),操作系統(tǒng),編譯原理,體系結(jié)構(gòu),數(shù)據(jù)庫原理等關(guān)鍵課程,并積極尋找機(jī)會到外面實(shí)習(xí),增長自己的工作經(jīng)驗(yàn)。如果有機(jī)會去到一些技術(shù)主導(dǎo)的公司中工作,就一定不要放棄這種機(jī)會,慢慢就會成長起來。最重要的,你會養(yǎng)成關(guān)注技術(shù),勤于思考的好習(xí)慣。當(dāng)有一天你發(fā)現(xiàn)自己對任何技術(shù)難題都可以一眼看到其本質(zhì),并能夠?qū)⑵浞纸鉃橐粋(gè)個(gè)可輕松解決的模塊,你會由衷的感覺到知識給你帶來的快樂,或許那一天,你已經(jīng)是一個(gè)架構(gòu)師了。
【互聯(lián)網(wǎng)架構(gòu)師必須具備的技能】相關(guān)文章:
項(xiàng)目總工必須具備的技能06-09
物流師必須具備的技能06-10
酒店經(jīng)理必須具備的管理技能11-01
酒店餐飲管理人員必須具備的技能08-27
Web架構(gòu)師的技能要求08-21