什么是架構(gòu),什么是架構(gòu)師?這似乎是聊架構(gòu)話題時永恒的問題。
從內(nèi)心講我真的不想回答架構(gòu)具體需要做什么,架構(gòu)師應(yīng)該具體負責(zé)什么。因為從實際情況看,在不同的系統(tǒng)層級,不同的需求下架構(gòu)師的職責(zé)也會不同;從不同的技術(shù)角度看,架構(gòu)師又是個變色龍——一時是技術(shù)的大拿,一時是技術(shù)的規(guī)劃者,一時是技術(shù)團隊的指揮者。
那么,該如何回答“什么是架構(gòu),什么是架構(gòu)師”這個問題呢?這或許需要先搞清楚另外一個問題——一名程序員是如何走上架構(gòu)師之路的?我從許多朋友那里了解到了很多實際案例,程序員走上架構(gòu)師之路,總結(jié)起來最多的原因是因為他早前代碼寫的好。
那么,代碼寫的好就是架構(gòu)嗎?顯然不是。代碼寫的好只是表象,做所有事情都需要規(guī)劃,尤其是一個復(fù)雜的軟件系統(tǒng),這更需要規(guī)劃,否則可能連一行代碼都寫不出。復(fù)雜的軟件系統(tǒng)一定會需要做很多抽象設(shè)計、對象規(guī)劃、接口規(guī)劃等準備動作。也就是“上一輩程序員”口中所說的:詳細設(shè)計。做架構(gòu)主要的事情也依舊如此,需要對整個系統(tǒng)進行系統(tǒng)的規(guī)劃:模塊、通訊、邊界、擴展、技術(shù)下沉等工作。這樣的規(guī)劃完成之后項目方能正常跑起來。
當(dāng)然,架構(gòu)也不僅僅是規(guī)劃,還要做的另一件大事就是技術(shù)識別。識別出系統(tǒng)中技術(shù)的難易區(qū)域,并分解復(fù)雜技術(shù),使之成為一個個技術(shù)的黑盒子,在此之上再進行新的技術(shù)規(guī)劃,使整個系統(tǒng)從技術(shù)角度來看是分層次的,從難到易,從大到小,但各層之間又是互相的黑盒。這也常說的讓系統(tǒng)模塊間達到“雞犬相聞老死不相往來“的狀態(tài)。
系統(tǒng)技術(shù)的識別完成之后還要對另一種技術(shù)進行識別,即人的技術(shù)。什么樣的工程師適合寫哪一層的代碼,那一層的技術(shù)對程序員技術(shù)的深入程度要求到哪個點上。在做完這些事情整個架構(gòu)表面上看是平穩(wěn)進行了。
但實際上,架構(gòu)的問題一定會再次前來打擾:首先是測試工程師來詢問“對于整體系統(tǒng)架構(gòu)而言這個應(yīng)用該如何更好的被測試?”“我們需要用什么樣的技術(shù)來更好地保證軟件的質(zhì)量?”然后是運維工程師來詢問“該系統(tǒng)將跑在什么樣的環(huán)境之上?”“我們應(yīng)該提供什么樣的服務(wù)器?”“服務(wù)器上我們會做哪些配置和安裝哪些基礎(chǔ)軟件?”“我們需要提供一個什么樣的網(wǎng)絡(luò)環(huán)境?”“有什么樣特殊的網(wǎng)絡(luò)配置?”“我們需要做哪些安全策略?”……此時,架構(gòu)師不時會像是一個掉入冰洞的獵人無比無助,頭頂成群的蒼蠅飛著,這些問題,有的懂點,有的不專業(yè),還有的聽說過沒干過,有些僅限知道原理。其實這些辣手的事情是考驗架構(gòu)師的一種能力:技術(shù)的寬度。
一個架構(gòu)師需要足夠的技術(shù)的寬度。從軟件到硬件,從開發(fā)到測試,從運維到安全等都需要面面俱到的了解。當(dāng)然你可能不是這單方面領(lǐng)域里面最深入的人,但是你需要知道它們是怎么做的(不僅僅是皮毛,要深入原理),并且要知道它們組合起來是個什么樣的東西。技術(shù)面也足夠?qū)捔酥?,是不是就會成為完美架?gòu)師呢?
答案是不會,因為還有新的問題要過來。這次的問題諸如“系統(tǒng)在未來的運行過程中運維需要做什么?”“系統(tǒng)在未來的功能迭代中如何更方便的擴展?”“系統(tǒng)應(yīng)該怎么修改?”“系統(tǒng)應(yīng)該被怎么樣升級?”這時的你是不時很困惑?是不是感覺這個架構(gòu)的世界好長啊,怎么像保姆一樣什么都要管。但仔細想想這是應(yīng)該的,因為一個系統(tǒng)初次開發(fā)并交付只是它生命周期中的一小部分而已。后面的維護、改造、升級才占了整個軟件生命周期的絕大部分時間。你是它的架構(gòu)設(shè)計者,是它靈魂之所在,你當(dāng)然應(yīng)該設(shè)計好它的未來。這也是架構(gòu)師做好的最后一件事情:系統(tǒng)未來的設(shè)計。
仔細想想,上文提到的這些案例全是架構(gòu)的糗事,但糗事其實是架構(gòu)師成長路上的必經(jīng)之路。因為一個沒有經(jīng)歷失敗的架構(gòu)師一定不是個好的架構(gòu)師。只有經(jīng)歷各種苦難,越過各種坑和各種痛苦之后才能成為一個優(yōu)秀的架構(gòu)師。架構(gòu)師也是一個很獨特職業(yè),不像現(xiàn)代教育里已經(jīng)很成熟的人文和物理教育體系,勤奮的人大都能經(jīng)過系統(tǒng)的閱讀和教育能走向成功。架構(gòu)更像一種藝術(shù)、一門哲學(xué),架構(gòu)師們也仿佛經(jīng)過多年積累后忽然間就像打通了任督二脈。
如若轉(zhuǎn)載,請注明出處:開源字節(jié) https://sourcebyte.cn/article/238.html
版權(quán)聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻,該文觀點僅代表作者本人。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如發(fā)現(xiàn)本站有涉嫌抄襲侵權(quán)/違法違規(guī)的內(nèi)容, 請發(fā)送郵件至 舉報,一經(jīng)查實,本站將立刻刪除。