
作者:蛋疼的axb
眼看著又一年結(jié)束,想想今年過的還真是快,上個畫面還是去年年末各種處理故障的場景,一眨眼一年就過去了。既然過了一年,還是得留下些思考和展望,否則就有些太無趣了。
還是套用那個老的不能再老的梗吧,the good,the bad and the ugly。
The Good
今年職位從高級碼農(nóng)變成了看上去很忽悠人的”技術(shù)專家“,雖然按專家的頭銜來說應(yīng)該做一些更深入的研究工作,不過受限于身體狀態(tài)一直不好,一認真的思考問題就會頭昏腦漲,只好做了很多給團隊打雜的工作,所以好的部分大多數(shù)不是我個人的貢獻,而是團隊的功勞。
今年最主要的成果,應(yīng)該是跟團隊一起在很多事情上兌現(xiàn)了之前一直念叨的“應(yīng)該”。
應(yīng)該從現(xiàn)在開始做重構(gòu),而不是“到時候”
從去年接手團隊之后就一直在跟歷史代碼做斗爭,在做了很久看似出工不出活的“代碼review”、“重構(gòu)”、“增加測試”、“刪代碼”之后終于有了回報:我們的代碼質(zhì)量可以讓我們在其中正常工作,不再需要為了一個看似簡單的功能而大動干戈的在“屎一樣的一大坨代碼”里糾結(jié)半天了。
我們試過很多辦法提升代碼質(zhì)量,包括強制code review、專門抽出時間重構(gòu)、周會上的代碼評審等等。每一種都或多或少的有一些效果,但最有效果的做法是引入自動化的代碼風格檢查工具,可以發(fā)現(xiàn)大部分代碼細節(jié)問題,并且很容易量化,對于“質(zhì)量”這種沒有實感的東西,量化是能夠讓你持續(xù)投入很重要的一個方面。
而最終的收益不僅是開發(fā)效率的提升,更重要的是,一個不斷進化的團隊中的一員在看到爛代碼時,感受到的是“如何解決這些問題”的挑戰(zhàn),而不是”這些代碼再也不會好了“的無力感。
應(yīng)該通過提升開發(fā)效率完成工作,而不是靠加班
有代碼不斷優(yōu)化的基礎(chǔ),我們也很自然的把服務(wù)過渡到了微服務(wù)架構(gòu)。微服務(wù)架構(gòu)讓我們能夠更敏捷的工作,不再需要忍受單體架構(gòu)帶來的“一個巨大的黑盒”帶來的不便,我們可以對性能做更細致的分析,對問題做更精確的定位,對技術(shù)選型也有更多自由。在此基礎(chǔ)上建立起了持續(xù)部署系統(tǒng)終于把上線變成了一件日常工作,“等我5分鐘,我review代碼的時候發(fā)現(xiàn)個bug,上個線就去吃飯”。
我跟很多人談起這個“5分鐘上線”的時候,他們都覺著我是個不負責任的人,并且一遍又一遍的問我:“上線上出問題怎么辦?”
問我這個問題的人一定是沒有考慮過“復(fù)雜度”本身就是一個巨大的問題源,當代碼足夠簡單、依賴足夠清晰時,很多問題就自然的消失了。實際上,我們現(xiàn)在的上線次數(shù)從每周兩次提高到了每天十幾次之后,上線產(chǎn)生的問題已經(jīng)幾乎不存在了。
應(yīng)該通過報警發(fā)現(xiàn)問題,而不是用戶投訴
我去年用幾天寫了一個報警系統(tǒng),團隊又在此基礎(chǔ)之上建立起了一套特別靠譜的報警服務(wù),不再依靠“檢查系統(tǒng)內(nèi)部有沒有問題”,而是站在用戶的視角,依靠探測程序檢查“用戶在使用時是不是有問題”。
站在用戶維度報警的好處是,只要有報警,那么就一定有問題。于是我們終于從每天轟炸式的報警短信中脫出身來,不再需要“按報警頻率估計服務(wù)有沒有問題”這種無用的工作,也不需要面對boss“怎么用戶都投訴了你們還不知道”的尷尬問題。只要有報警,那么就需要處理;反過來,只要沒報警,那么絕大部分用戶使用也不會有問題,我可以放心的玩《守望先鋒》而不用擔心boss會突然來電話。
最終,有驚無險的,我們做到了服務(wù)全年無故障(雖然還有幾天才過完今年,希望這不是一個flag……)。
應(yīng)該通過技術(shù)解決性能問題,而不是堆機器
微博的訪問量極大,做個方案動輒要支持百萬并發(fā)、千億數(shù)據(jù),但奇葩的是公司又很窮總是買不起新服務(wù)器(-_-),性能優(yōu)化就變成了極其重要的工作。
我們今年做了不少應(yīng)用的性能調(diào)優(yōu),把每個服務(wù)的性能指標都提升了幾倍(還有幾倍是留給明年的KPI的-_-)。性能調(diào)優(yōu)是一件有挑戰(zhàn)又有成就感的事情,而且比較有意思的地方是,無論程序員的水平是好是壞,總是有調(diào)優(yōu)的空間。水平弱一些的同學可以調(diào)優(yōu)業(yè)務(wù)代碼和基本參數(shù);好一些的優(yōu)化架構(gòu)和第三方組件;牛逼的可以深入jvm和內(nèi)核原理。調(diào)優(yōu)經(jīng)驗多了,總會有種“無論怎么優(yōu)化也到不了頭”的感覺。