如何才能成為一個好的java架構師?

一、架構的定義

所謂一千個架構師中有一千種“最好的架構”模式。

“架構”是我們這行業(yè)種一個很常見的詞,表明其必然也是經(jīng)歷了很長的歲月打磨所形成的一個詞。架構的這個詞出現(xiàn)的意義是什么?為了解決什么問題?只有把這2個問題想明白了,才能設計出一個良好的項目架構。

我認為 架構類似于畫房屋設計圖,在剛開始我們蓋一層樓的小房子的時候,拍拍腦門想一下,腦子里有個大概的樣子就開始動工了,想怎么蓋就怎么蓋,大部分情況下也都不會出現(xiàn)。但是當你要蓋一個大樓,這時候拍拍腦門的方式雖然有可能還能管用,但是由于沒有經(jīng)過深思熟慮的多方考量,建造出來的必然是問題重重。另外建造大樓和蓋個一層樓的小屋所需的團隊規(guī)模肯定是不同的,每個人心中的標準不同,如果沒有一個統(tǒng)一的規(guī)范,最后的結果可想而知。所以架構就是定規(guī)則做限制,是在權衡各方得與失之后的一個“最合理決策”,由它來指導團隊中的每個人思想層面上的一致,使得最終的產(chǎn)品達到像由一個人做出來的一樣。另外還有控制復雜度、提高團隊協(xié)作力、降低成本等等作用。

在軟件開發(fā)中,架構的意義不單單是為了讓團隊達成一致,因為我們工作的本質(zhì)是為了做出更好的支撐業(yè)務發(fā)展需要的軟件產(chǎn)品,所以架構也是基于業(yè)務的架構。我認為一個好的架構能夠提前預見業(yè)務發(fā)展1~2年為宜。這樣可以付出較為合理的代價換來真正達到技術引領業(yè)務成長的效果。我相信大部分在中小型公司呆過的人應該都經(jīng)歷過被業(yè)務推著走的時代,每天焦頭爛額的這里卡了,這里掛了,這里報錯等等問題。當我們遇到這些問題的時候是時候花成本來考量當前的架構是否存在問題?

二、如何開始設計一個架構

做架構的最重要的一點就是上面說的貼合業(yè)務,任何不基于業(yè)務做異想天開的架構都是耍流氓~

架構不是像平常寫代碼一樣,對就是對,錯就是錯,它并無對錯之分,是一個取舍的過程。當我們從0開始做架構的時候,的確是比較困難。雖然萬事開頭難,但是一個好的開始相當于成功了一半,會給我們接下去的工作打下結實的基礎。

下面來闡述一下筆者個人是如何從頭開始做一個架構的,供大家參考學習:

1.架構是一個整體--> 部分的過程,先得明確整個公司/組織對外提供的服務是什么?這是最上層的戰(zhàn)略架構,這個基本是一旦確定就很難甚至無法更改了。

2.給每個部分(比如SOA的某個服務)劃分解決方案。比如根據(jù)公司的組織架構或者產(chǎn)品等。

3.找到每個解決方案的核心功能和支撐功能。并形成一個業(yè)務總覽圖

4.分久必合,合久必分,結合當前的實際資源情況做出最終的決策,這是整個過程中最耗時的點,它決定著架構的復雜度和開發(fā)成本。方式上包括但不限于抽出可重用的功能、功能的組合、拆分粒度更細的功能提高可重用性等等。這一切的決策都要以“恰到好處”為宜。千萬不要盲目的跟從微服務之風!千萬不要盲目的跟從微服務之風!千萬不要盲目的跟從微服務之風!重要的事情說3遍。服務粒度越細,調(diào)用鏈路越復雜,帶來的開發(fā)成本是否適合團隊,是作為一個架構師需要著重考量的點。

5.確立每個功能塊之間的協(xié)作方式,包括但不限于通訊方式,通訊協(xié)議,依賴關系等。

6.最后要把這些形成最終的架構總覽圖,這樣能夠幫助站在一個更高的角度去考慮架構的演變問題。如果是針對現(xiàn)存項目重新做架構,那么需要把現(xiàn)有項目架構梳理出來,作為我們上面思考過程中的一部分參考信息。

三、一個好架構的特點

首先從心態(tài)上必須要有工匠精神,因為軟件架構和造房子還是有不同的,它不是一開始就一步到位的,好的設計肯定需要經(jīng)過反復的修改,從簡單到復雜的循環(huán)驗證,不斷的打磨。

方向上我認為分以下幾個點:

1.文檔化:不管是整體還是部分的整個生命周期內(nèi)都必須做好文檔化,變動的來源包括但不限于BUG,需求。

2.高可用:要盡可能的提高軟件的可用性,我想每個操作人都不愿意看到自己的工作無法正常進行。黑盒白盒測試、單元測試、自動化測試、故障注入測試、提高測試覆蓋率等方式來一步一步推進。

3.安全:組織的運作過程中產(chǎn)生的數(shù)據(jù)都是具有商業(yè)價值的,保證數(shù)據(jù)的安全也是刻不容緩的一部分。以免出現(xiàn)XX門之類丑聞。加密、https等為普遍手段

4.可擴展:軟件的設計秉承著低耦合的理念去做,注意在合理的地方抽象。方便功能更改、新增和運用技術的迭代,并且支持在適時對架構做出重構。

5.快速迭代:擁抱變化,占領戰(zhàn)略先機。

6.高度自治:為了更好支撐第4點和第5點的,每個功能能夠高度自治帶來的好處是可以快速迭代,并且不管是功能迭代還是技術迭代所對整個系統(tǒng)的影響降到最小。

7.高復用:為了避免重復勞動,為了降低成本,我們希望能夠重用之前的代碼、之前的設計。這點對于架構環(huán)境的依賴是最大的。

8.可驗證:一個好的框架需要考慮到各種特殊情況,并且是可以進行專項驗證的。

四、做架構中的誤區(qū)

做任何事的時候需要不斷的跳出原來的思維角度重新審視,這樣才能避免陷入泥潭。列出幾個我能想到的誤區(qū):

誤區(qū)1——架構專門由架構師來做,業(yè)務開發(fā)人員無需關注:架構的再好,最終還是需要代碼來落地,并且組織越大這個落地的難度越大。不單單是系統(tǒng)架構,每個解決方案每個項目也由自己的架構,如分層、設計模式等。如果每一塊磚瓦不夠堅固,那么整個系統(tǒng)還是會由崩塌的風險。所謂“千里之堤,潰于蟻穴”。

誤區(qū)2——架構師確定了架構藍圖之后任務就結束了:架構不是“空中樓閣”,最終還是要落地的,但是架構師完全不去深入到第一線怎么知道“地”在哪?怎么才能落的穩(wěn)穩(wěn)當當。

誤區(qū)3——不做出完美的架構設計不開工:世上沒有最好架構,只有最合適的架構。我們需要的不是一下子造出一輛汽車,而是從單輪車 --> 自行車 --> 摩托車,最后再到汽車。想象一下2年后才能造出的產(chǎn)品,當初市場還存在嗎?

五、結語

架構之路任重而道遠。程序設計和架構設計是互通的,每個人都可以從設計好一個程序往設計好一個系統(tǒng)架構前進。如果現(xiàn)在還無從下手的,我推薦大家可以從領域驅(qū)動設計這個概念入手,這是由業(yè)務為導向的設計方式,可以對培養(yǎng)設計出落地的架構有很大的幫助。大家可以加群:656039503 一起交流,群里也會定時分享一些java架構的知識,希望可以給大家一些思路和啟發(fā)。最后引用“俞軍”一句名言,我們作為架構師要有“懷疑精神:自我迭代”的心。

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,117評論 6 537
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,860評論 3 423
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 177,128評論 0 381
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,291評論 1 315
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,025評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,421評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,477評論 3 444
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,642評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,177評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 40,970評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,157評論 1 371
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,717評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 44,410評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,821評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,053評論 1 289
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,896評論 3 395
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,157評論 2 375

推薦閱讀更多精彩內(nèi)容