做架构也得讲武德
這里是Z哥的個人公眾號
每周五11:45 按時送達(dá)
當(dāng)然了,也會時不時加個餐~
我的第「169」篇原創(chuàng)敬上
大家好,我是Z哥。今天分享一篇對「架構(gòu)」這件事的隨想。
我想,做「架構(gòu)」是每個熱愛技術(shù)的技術(shù)人在不斷追求想進(jìn)入的領(lǐng)域。但是很多人可能工作了很多年也沒能真正參與到做架構(gòu)這件事上。
所以,很多人對做架構(gòu)這件事的感知停留在網(wǎng)上很多大牛分享的文章里。
但是,如果你只是看網(wǎng)上的文章其實對架構(gòu)的理解會非常容易跑偏的,主要原因有兩點。
第一點,世界是在不斷發(fā)展和迭代的。技術(shù)也是人類文明的一部分,所以自然也會隨著時間的推移不斷進(jìn)化。
而很多講架構(gòu)的文章喜歡和新技術(shù)掛上鉤,一個沒用到新技術(shù)的“架構(gòu)”,會讓很多人覺得有點out,缺乏吸引力。
但是新技術(shù)的推出,要么是用來解決過去無法解決的問題,要么是可以提高當(dāng)前解決問題的效率。正如當(dāng)前的你在20年前做程序員,基于當(dāng)時的編程環(huán)境,開發(fā)效率肯定不如現(xiàn)在,這是毋庸置疑的。
也正因為如此,每一項新技術(shù)的出現(xiàn),背后必然對應(yīng)著一個典型的問題場景。能最大化發(fā)揮這項新技術(shù)價值的地方也應(yīng)該是這個場景。
如果我們僅僅停留在這項新技術(shù)本身去考慮它有什么用,那么就很容易就會陷入到“拿著錘子找釘子”的情況里。特別是出于對「架構(gòu)」的崇拜,“我怎么才能用上這個技術(shù)”會成為腦海中第一重要的目標(biāo)。
第二點,不管是創(chuàng)造新技術(shù)的人還是分享新技術(shù)使用經(jīng)驗的人,對他們來說肯定得對外展示新技術(shù)好的一面。如果寫不好的一面,這不是拆自己臺么,或者擔(dān)心表現(xiàn)出自己不會用、丟臉么。
如果你有心的話,當(dāng)你在網(wǎng)上搜某個技術(shù)的相關(guān)資料的時候其實很容易觀察到這個現(xiàn)象,講優(yōu)點的文章比講缺點、講遇到什么坑的文章多得多。
這會造成的影響就是過度拉高“旁觀者”對新技術(shù)的預(yù)期,認(rèn)為它是很牛逼的,能解決很多問題。
那么正確對待「架構(gòu)」的態(tài)度應(yīng)該是什么呢?
我根據(jù)我自己做架構(gòu)5年踩坑的經(jīng)驗總結(jié)了以下3點。希望能幫助你少踩甚至是避開我踩過的坑。
/01 ?回到現(xiàn)實的問題中/
任何技術(shù)應(yīng)該都只是解決問題的可選項之一,并沒有所謂的唯一選擇。只有你回到的現(xiàn)實中,從實際的問題出發(fā)去考慮,你才能規(guī)避掉你對某項技術(shù)所帶的偏見。(當(dāng)然,提前是你還得對每項技術(shù)有基本的了解)
比如,之前我團(tuán)隊里有個小伙伴覺得Saga模式非常酷,他認(rèn)為用它來實現(xiàn)數(shù)據(jù)的寫操作又快又準(zhǔn),還能大大降低資源競爭問題,是所有項目應(yīng)該考慮的第一選擇。于是,他在一個新項目中用上了。
但是,最終系統(tǒng)上線后,頁面操作的響應(yīng)的確挺快,但是由于數(shù)據(jù)的滯后產(chǎn)生了一系列問題,讓系統(tǒng)使用者苦不堪言。
/02? 大多數(shù)時候,「減」都比「加」好/
我問你兩個詞語,你知道「簡單」和「容易」的區(qū)別嗎?
在我看來它們有很大的區(qū)別,我的理解是,「簡單」是形容事物的,「容易」是描述做一件事的過程。所以,我們做架構(gòu)這件事,要追求的是「簡單」而不是「容易」。雖然很多時候「容易」會讓你用的時候覺得很「簡單」,但那不是真的簡單,最多算得上是局部的“簡單”。(這段話有點繞,細(xì)品一下應(yīng)該還是很容易理解的)
所以,想要架構(gòu)變得「簡單」,自然是做減法比做加法好。但是現(xiàn)實中,往往相反,更多人樂忠于增加什么新技術(shù),引入什么新技術(shù)。畢竟做加法有可能不用考慮“歷史問題”,而要做減法不得不考慮“歷史問題”,很明顯前者更「容易」。
/03? 時刻保持風(fēng)險意識/
大多數(shù)情況下,后續(xù)暴露出風(fēng)險的地方大多數(shù)是一些非功能性的點。比如,數(shù)據(jù)經(jīng)常出錯,訪問量一大數(shù)據(jù)同步就延遲的厲害,甚至宕機。
這些點說起來簡單,但是需要考慮的細(xì)節(jié)非常多。類似于「木桶原理」,只要你的整體架構(gòu)中有一塊短板拖了后腿,大大小小的問題就會接踵而來。
更加麻煩的是,這些問題還不容易解決,甚至需要做大量的推倒重新設(shè)計才能解決。
雖然說,不管怎么樣依舊無法100%規(guī)避風(fēng)險,但是時刻帶著風(fēng)險意識問自己:“這里這樣設(shè)計可能會有什么問題?”必然會大大降低風(fēng)險系數(shù)。
另外,對待已經(jīng)察覺到的潛在風(fēng)險絕對不能草率,認(rèn)為未來不一定會發(fā)生,先將就著。規(guī)模越大的系統(tǒng),越符合墨菲定律所提到規(guī)律——“凡是可能出錯的事有很大幾率會出錯”,而且時間會大大提前。
暫時就想到這么多,這個話題其實很大,后續(xù)有新的思考再分享給大家一起討論。
好了,總結(jié)一下。
這篇呢,Z哥和你分享了我對架構(gòu)這件事的隨想。
首先,對待一個陌生的技術(shù),預(yù)期不能過于樂觀。因為以下兩點會潛移默化地讓你產(chǎn)生偏見。
對自己不了解的技術(shù)的崇拜感。
你能查到的對外分享講優(yōu)點的遠(yuǎn)大于講缺點和坑的。
對待架構(gòu)這件事我給出的3個建議是:
回到現(xiàn)實的問題中。
大多數(shù)時候,「減」都比「加」好。
時刻保持風(fēng)險意識。
希望對你有所啟發(fā)。
架構(gòu)是“平衡”的藝術(shù),祝你早日找到你的“平衡感”。
推薦閱讀:
聊聊單元測試
心想技術(shù)驅(qū)動業(yè)務(wù),卻在背道而馳
原創(chuàng)不易,如果你覺得這篇文章還不錯,就「在看」或者「分享」一下吧。鼓勵我的創(chuàng)作 :)
如果你有關(guān)于軟件架構(gòu)、分布式系統(tǒng)、產(chǎn)品、運營的困惑
可以試試點擊「閱讀原文」
總結(jié)
- 上一篇: .Net orm 开源项目 FreeSq
- 下一篇: api-hook,更轻量的接口测试工具