什么是架構(gòu)掌实,什么是架構(gòu)師?
——這似乎是聊架構(gòu)話題時(shí)永恒的問題邦马。
從內(nèi)心講我真的不想回答架構(gòu)具體需要做什么贱鼻,架構(gòu)師應(yīng)該具體負(fù)責(zé)什么。因?yàn)閺膶?shí)際情況看滋将,在不同的系統(tǒng)層級(jí)邻悬,不同的需求下架構(gòu)師的職責(zé)也會(huì)不同;從不同的技術(shù)角度看随闽,架構(gòu)師又是個(gè)變色龍——一時(shí)是技術(shù)的大拿父丰,一時(shí)是技術(shù)的規(guī)劃者,一時(shí)是技術(shù)團(tuán)隊(duì)的指揮者。
那么蛾扇,該如何回答“什么是架構(gòu)攘烛,什么是架構(gòu)師”這個(gè)問題呢?這或許需要先搞清楚另外一個(gè)問題——一名程序員是如何走上架構(gòu)師之路的镀首?我從許多朋友那里了解到了很多實(shí)際案例坟漱,程序員走上架構(gòu)師之路,總結(jié)起來(lái)最多的原因是因?yàn)樗缜按a寫的好更哄。
那么芋齿,代碼寫的好就是架構(gòu)嗎?顯然不是成翩。代碼寫的好只是表象觅捆,做所有事情都需要規(guī)劃,尤其是一個(gè)復(fù)雜的軟件系統(tǒng)麻敌,這更需要規(guī)劃惠拭,否則可能連一行代碼都寫不出。復(fù)雜的軟件系統(tǒng)一定會(huì)需要做很多抽象設(shè)計(jì)庸论、對(duì)象規(guī)劃、接口規(guī)劃等準(zhǔn)備動(dòng)作棒呛。也就是“上一輩程序員”口中所說的:詳細(xì)設(shè)計(jì)聂示。做架構(gòu)主要的事情也依舊如此,需要對(duì)整個(gè)系統(tǒng)進(jìn)行系統(tǒng)的規(guī)劃:模塊簇秒、通訊鱼喉、邊界、擴(kuò)展趋观、技術(shù)下沉等工作扛禽。這樣的規(guī)劃完成之后項(xiàng)目方能正常跑起來(lái)。
當(dāng)然皱坛,架構(gòu)也不僅僅是規(guī)劃编曼,還要做的另一件大事就是技術(shù)識(shí)別。識(shí)別出系統(tǒng)中技術(shù)的難易區(qū)域剩辟,并分解復(fù)雜技術(shù)掐场,使之成為一個(gè)個(gè)技術(shù)的黑盒子,在此之上再進(jìn)行新的技術(shù)規(guī)劃贩猎,使整個(gè)系統(tǒng)從技術(shù)角度來(lái)看是分層次的熊户,從難到易,從大到小吭服,但各層之間又是互相的黑盒嚷堡。這也常說的讓系統(tǒng)模塊間達(dá)到“雞犬相聞老死不相往來(lái)“的狀態(tài)。
系統(tǒng)技術(shù)的識(shí)別完成之后還要對(duì)另一種技術(shù)進(jìn)行識(shí)別艇棕,即人的技術(shù)蝌戒。什么樣的工程師適合寫哪一層的代碼串塑,那一層的技術(shù)對(duì)程序員技術(shù)的深入程度要求到哪個(gè)點(diǎn)上。在做完這些事情整個(gè)架構(gòu)表面上看是平穩(wěn)進(jìn)行了瓶颠。
但實(shí)際上拟赊,架構(gòu)的問題一定會(huì)再次前來(lái)打擾:首先是測(cè)試工程師來(lái)詢問“對(duì)于整體系統(tǒng)架構(gòu)而言這個(gè)應(yīng)用該如何更好的被測(cè)試?”“我們需要用什么樣的技術(shù)來(lái)更好地保證軟件的質(zhì)量粹淋?”然后是運(yùn)維工程師來(lái)詢問“該系統(tǒng)將跑在什么樣的環(huán)境之上吸祟?”“我們應(yīng)該提供什么樣的服務(wù)器?”“服務(wù)器上我們會(huì)做哪些配置和安裝哪些基礎(chǔ)軟件桃移?”“我們需要提供一個(gè)什么樣的網(wǎng)絡(luò)環(huán)境屋匕?”“有什么樣特殊的網(wǎng)絡(luò)配置?”“我們需要做哪些安全策略借杰?”……此時(shí)过吻,架構(gòu)師不時(shí)會(huì)像是一個(gè)掉入冰洞的獵人無(wú)比無(wú)助,頭頂成群的蒼蠅飛著蔗衡,這些問題纤虽,有的懂點(diǎn),有的不專業(yè)绞惦,還有的聽說過沒干過逼纸,有些僅限知道原理。其實(shí)這些辣手的事情是考驗(yàn)架構(gòu)師的一種能力:技術(shù)的寬度济蝉。
一個(gè)架構(gòu)師需要足夠的技術(shù)的寬度杰刽。從軟件到硬件,從開發(fā)到測(cè)試王滤,從運(yùn)維到安全等都需要面面俱到的了解贺嫂。當(dāng)然你可能不是這單方面領(lǐng)域里面最深入的人,但是你需要知道它們是怎么做的(不僅僅是皮毛雁乡,要深入原理)第喳,并且要知道它們組合起來(lái)是個(gè)什么樣的東西。
技術(shù)面也足夠?qū)捔酥篚馍裕遣皇蔷蜁?huì)成為完美架構(gòu)師呢墩弯?答案是不會(huì),因?yàn)檫€有新的問題要過來(lái)寞射。這次的問題諸如“系統(tǒng)在未來(lái)的運(yùn)行過程中運(yùn)維需要做什么渔工?”“系統(tǒng)在未來(lái)的功能迭代中如何更方便的擴(kuò)展?”“系統(tǒng)應(yīng)該怎么修改桥温?”“系統(tǒng)應(yīng)該被怎么樣升級(jí)引矩?”這時(shí)的你是不時(shí)很困惑?是不是感覺這個(gè)架構(gòu)的世界好長(zhǎng)啊,怎么像保姆一樣什么都要管旺韭。但仔細(xì)想想這是應(yīng)該的氛谜,因?yàn)橐粋€(gè)系統(tǒng)初次開發(fā)并交付只是它生命周期中的一小部分而已。后面的維護(hù)区端、改造值漫、升級(jí)才占了整個(gè)軟件生命周期的絕大部分時(shí)間。你是它的架構(gòu)設(shè)計(jì)者织盼,是它靈魂之所在杨何,你當(dāng)然應(yīng)該設(shè)計(jì)好它的未來(lái)。這也是架構(gòu)師做好的最后一件事情:系統(tǒng)未來(lái)的設(shè)計(jì)沥邻。大家可以點(diǎn)擊加入群:656039503 ?JAVA大神學(xué)習(xí)交流 更多java架構(gòu)學(xué)習(xí)資料會(huì)分享與大神一起學(xué)架構(gòu)
里面有Java高級(jí)大牛直播講解知識(shí)點(diǎn) 走的就是高端路線
仔細(xì)想想危虱,上文提到的這些案例全是架構(gòu)的糗事,但糗事其實(shí)是架構(gòu)師成長(zhǎng)路上的必經(jīng)之路唐全。因?yàn)橐粋€(gè)沒有經(jīng)歷失敗的架構(gòu)師一定不是個(gè)好的架構(gòu)師埃跷。只有經(jīng)歷各種苦難,越過各種坑和各種痛苦之后才能成為一個(gè)優(yōu)秀的架構(gòu)師邮利。架構(gòu)師也是一個(gè)很獨(dú)特職業(yè)弥雹,不像現(xiàn)代教育里已經(jīng)很成熟的人文和物理教育體系,勤奮的人大都能經(jīng)過系統(tǒng)的閱讀和教育能走向成功延届。架構(gòu)更像一種藝術(shù)缅糟、一門哲學(xué),架構(gòu)師們也仿佛經(jīng)過多年積累后忽然間就像打通了任督二脈祷愉。那么走向架構(gòu)師的路是不是無(wú)跡可尋呢?——這個(gè)問題留個(gè)大家來(lái)思考