ArchSummit全球架構(gòu)師峰會是InfoQ中國團隊推出的面向高端技術(shù)管理者、架構(gòu)師的技術(shù)大會,參會者中超過50%擁有8年以上的工作經(jīng)驗。
那先來說說什么是架構(gòu)師?是不是混了8年就能成為架構(gòu)師?
曾經(jīng)有人從一些社群成員的會話記錄來分析,得到這樣的結(jié)果:0-1年的程序員什么都不知道,他們正在熟悉職場和他們要實現(xiàn)的功能;1-2年的程序員可以獨立實現(xiàn)產(chǎn)品某些功能;2-3年的程序員可以獨立完成一個模塊;3-5年的程序員可以帶人完成一個項目;5-10年的程序員關(guān)心管理、資源協(xié)調(diào)、成本控制、項目管控、平衡利益。
舉一個架構(gòu)師JD為例,如下:
1.精通分布式系統(tǒng)的設(shè)計及應(yīng)用;精通多線程及高性能的設(shè)計與編碼;熟悉unix/linux操作系統(tǒng)的使用和某種腳本語言編程(如Shell編程等)和大型數(shù)據(jù)庫;
2.3年以上大型互聯(lián)網(wǎng)電子商務(wù)系統(tǒng)或者其他大型企業(yè)應(yīng)用系統(tǒng)開發(fā)相關(guān)經(jīng)驗精通Java EE技術(shù)和框架(包括Java語言基礎(chǔ)/多線程/Spring/Remoting/iBatis/Cache/Messaging/Workflow等);
3.熟悉DB2、My SOL、Oracle等主流數(shù)據(jù)庫系統(tǒng)的設(shè)計原理、相關(guān)技術(shù)及工具;
4.精通面向?qū)ο蠓治鲈O(shè)計方法,邏輯能力佳,具有豐富的OOA、OOD、OOP以及UML建模經(jīng)驗,熟悉軟件工程、編程規(guī)范、有過程控制意識;
5.對技術(shù)發(fā)展趨勢有非常高的敏感性和預(yù)測能力,并能制定技術(shù)創(chuàng)新方向,專注于技術(shù),精益求精;
6.符合如下條件者優(yōu)先:具有交易系統(tǒng)或風(fēng)控系統(tǒng)開發(fā)經(jīng)驗
然后我們以這個JD為例,猜測一下要成長為架構(gòu)師,路徑是什么?
首先你要是一個高級java工程師,熟練使用各種框架,并知道它們實現(xiàn)的原理,了解他們的使用場景和性能問題。不弄清楚這些原理,就寫不出高效的代碼,還會認(rèn)為自己做的很對;總之一句話越基礎(chǔ)的東西越重要,很多人認(rèn)為自己會用它們寫代碼了,其實僅僅是知道如何調(diào)用api而已,離會用還差的遠(yuǎn)。
熟練使用各種數(shù)據(jù)結(jié)構(gòu)和算法,數(shù)組、哈希、鏈表、排序樹...,一句話要么是時間換空間要么是空間換時間,這里展開可以說一大堆,需要有一定的應(yīng)用經(jīng)驗,用于解決各種性能或業(yè)務(wù)上的問題;有時間再補充。 熟練使用linux操作系統(tǒng),熟悉tcp協(xié)議,創(chuàng)建連接三次握手和斷開連接四次握手的整個過程,不了解的話,無法對高并發(fā)網(wǎng)絡(luò)應(yīng)用做優(yōu)化; 熟悉http協(xié)議,尤其是http頭;session和cookie的生命周期以及它們之間的關(guān)聯(lián)。不然這個《手機淘寶Hybrid APP框架的架構(gòu)演進》的演講該完全不知所以然了吧?
系統(tǒng)集群、負(fù)載均衡、反向代理、動靜分離,網(wǎng)站靜態(tài)化。分布式存儲系統(tǒng)nfs,fastdfs,tfs,Hadoop了解他們的優(yōu)缺點,適用場景 。 于是要開始向百度、騰訊的架構(gòu)師探討關(guān)于《大規(guī)模集群上的多業(yè)務(wù)線環(huán)境部署》 、《萬級邏輯服務(wù)器的高效技術(shù)運營》。
分布式緩存技術(shù)memcached,redis,提高系統(tǒng)性能必備,一句話,把硬盤上的內(nèi)容放到內(nèi)存里來提速,順便提個算法一致性hash 。 工具nginx必備技能超級好用,高性能,基本不會掛掉的服務(wù)器,功能多多,解決各種問題。再往高提升就可以關(guān)心百度《如何實現(xiàn)超大規(guī)模分布式安全系統(tǒng)》。
數(shù)據(jù)庫的設(shè)計能力,mysql必備,最基礎(chǔ)的數(shù)據(jù)庫工具,對它基本的參數(shù)優(yōu)化,慢查詢?nèi)罩痉治觯鲝膹?fù)制的配置,至少要成為半個mysql dba。其他nosql數(shù)據(jù)庫如mongodb,還有隊列中間件。 這些是常用的技術(shù),還有很多東西要了解都要靠自學(xué),比如,《大數(shù)據(jù)里的Scala》,《深度解析云數(shù)據(jù)庫 TiDB》《SQL-on-Hadoop方案在FreeWheel的實踐》。
最后,必須要提的是技術(shù)是為業(yè)務(wù)服務(wù)的,技術(shù)提升還可以推進業(yè)務(wù)的發(fā)展。架構(gòu)師還要針對業(yè)務(wù)特點、系統(tǒng)的性能要求提出能解決問題成本最低的設(shè)計方案才合格,你聽酒仙網(wǎng)的架構(gòu)師談?wù)劥怪彪娚?,海南易建科技的架?gòu)師談?wù)剛鹘y(tǒng)金融領(lǐng)域的解決方案就能知道他們對業(yè)務(wù)的理解有多深刻(見:《大數(shù)據(jù)驅(qū)動下的航空電商應(yīng)用實踐》《垂直電商服務(wù)化之路》)。Uber的袁泳從在Netflix構(gòu)建云平臺的時候就在研究分布式跟蹤系統(tǒng),現(xiàn)在加入Uber構(gòu)建實時物流平臺為司機分配任務(wù),他對物流平臺的業(yè)務(wù)實現(xiàn)應(yīng)該有很深的研究吧(Uber的流處理系統(tǒng)及實踐)。就如果一個幾百名用戶的系統(tǒng),訪問量不大,數(shù)據(jù)量小,就上集群、上分布式存儲、上高端服務(wù)器,為了架構(gòu)而架構(gòu),或者一開始把系統(tǒng)架在node上,這都是最不切實際的。架構(gòu)師的作用就是第一滿足業(yè)務(wù)需求,第二控制硬件網(wǎng)絡(luò)成本和技術(shù)維護成本。關(guān)于成本控制可看研發(fā)體系構(gòu)建這類文章,如《如何通過高效能來克服高成本》,《快速發(fā)展轉(zhuǎn)型期的研發(fā)體系構(gòu)建》。
你看本軟文最開頭的架構(gòu)師JD第5點就提到了架構(gòu)師要預(yù)見技術(shù)發(fā)展趨勢,架構(gòu)師還要根據(jù)業(yè)務(wù)發(fā)展階段,提前預(yù)見發(fā)展到下一個階段系統(tǒng)架構(gòu)的解決方案,Docker熱吧,要不要了解下《容器時代的云計算》?并且設(shè)計當(dāng)前架構(gòu)時將架構(gòu)的升級擴展考慮進去,做到易于升級;否則等系統(tǒng)瓶頸來了,出問題了再去出方案,或現(xiàn)有架構(gòu)無法擴展直接扔掉重做,或擴展麻煩問題一大堆,這會對企業(yè)造成損失。
剛?cè)肼殘龅某绦騿T,如果要縮短這樣的程序員職業(yè)發(fā)展時間,還要好好喝下這些雞湯,比如《為什么別人一年能有你三年工作經(jīng)驗》、《比你厲害的人都在奔跑,你活著還有什么意義》這些。必要的成長時間還是需要的,要花時間coding,要花時間了解并參與業(yè)務(wù)領(lǐng)域的發(fā)展,踏踏實實,勿在浮沙筑高臺。用時間用經(jīng)驗用見識見危于無形,見禍于未萌,建高樓于平地,這也許就是對架構(gòu)師的一部分要求。
最后的最后,老師說要好好加reference的孩子才是好公民!
本文關(guān)于Java架構(gòu)師的成長例子引用來自知乎用戶@哈哈的回答。
鏈接:http://www.zhihu.com/question/29031276/answer/54631312
最后的最后的最后,ArchSummit秉承“實踐第一、案例為主”的原則,展示新技術(shù)在行業(yè)應(yīng)用中的最新實踐,技術(shù)在企業(yè)轉(zhuǎn)型中的加速作用,幫助企業(yè)技術(shù)管理者、CTO、架構(gòu)師做好技術(shù)選型、技術(shù)團隊組建與管理,并確立技術(shù)對于產(chǎn)品和業(yè)務(wù)的關(guān)鍵作用。歡迎關(guān)注12月18-19日在北京國際會議中心舉辦的ArchSummit架構(gòu)師峰會。