眼看著又一年結(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ēng)格檢查工具斗幼,可以發(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分鐘上線”的時候垦页,他們都覺著我是個不負責(zé)任的人,并且一遍又一遍的問我:“上線上出問題怎么辦干奢?”
問我這個問題的人一定是沒有考慮過“復(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)的空間。水平弱一些的同學(xué)可以調(diào)優(yōu)業(yè)務(wù)代碼和基本參數(shù)啼县;好一些的優(yōu)化架構(gòu)和第三方組件材原;牛逼的可以深入jvm和內(nèi)核原理。調(diào)優(yōu)經(jīng)驗多了季眷,總會有種“無論怎么優(yōu)化也到不了頭”的感覺余蟹。
另外,我們今年基于云服務(wù)子刮、容器技術(shù)威酒、調(diào)度系統(tǒng)、混合云編排系統(tǒng)挺峡、容量評估系統(tǒng)和自身的微服務(wù)架構(gòu)體系葵孤,實現(xiàn)了公司成本部門老是念叨的的“按需擴縮容”功能,我們的直播互動系統(tǒng)也成為了微博內(nèi)部首個按流量自動擴縮容的服務(wù)橱赠,達到了“5分鐘完成無人值守自動擴縮容”的狀態(tài)尤仍。在這個系統(tǒng)的幫助下,支撐微博直播互動服務(wù)的常備機器只有幾臺而已病线,參加技術(shù)大會看到有人談直播架構(gòu)時吓著,總是莫名的有一種優(yōu)越感……
應(yīng)該做更多有挑戰(zhàn)的事情,而不是一直重復(fù)自己的工作
今年我們承擔了更多微博的業(yè)務(wù)送挑,我們?nèi)缃駪?yīng)該算是微博里少有的“后端服務(wù)一條龍”團隊绑莺,一整年來我們都在整合和優(yōu)化各種服務(wù)的架構(gòu)和鏈路。從消息箱底層業(yè)務(wù)惕耕,到tcp連接服務(wù)纺裁,到收件箱后端服務(wù),到直播互動服務(wù),到微博視頻服務(wù)欺缘,到文件存儲服務(wù)等等栋豫,這一年做了不少對原服務(wù)進行重寫和進行新架構(gòu)設(shè)計的工作。
技術(shù)棧的多樣化帶來的是難以管理和重復(fù)性的工作谚殊,但是只要對不同的業(yè)務(wù)稍作抽象丧鸯,那么就可以復(fù)用很多現(xiàn)有的基礎(chǔ)設(shè)施,抽象和復(fù)用的實踐多了嫩絮,就可以稱之為體系丛肢。今年我們對不同服務(wù)的各方面,比如架構(gòu)剿干、開發(fā)框架蜂怎、運維、監(jiān)控置尔、報警等等方面做了抽象杠步,建立起了一套體系,使我們不再受技術(shù)棧過于發(fā)散的困擾榜轿。
換句話說幽歼,團隊一方面享受著大公司的技術(shù)積累,一方面又有各種新業(yè)務(wù)場景帶來的技術(shù)挑戰(zhàn)谬盐,這是挺難得的狀態(tài)试躏。
The Bad
就跟之前說的一樣,今年本來想做一些更純粹的研究工作设褐,比如對操作系統(tǒng)內(nèi)存模型完整的剖析,或者對性能分析能力的進一步提高泣刹,又或者再去qcon之類的技術(shù)大會露個臉助析,但是受限于身體狀態(tài),只好作罷椅您。
前兩年工作加班的比較猛外冀,經(jīng)常一搞就到凌晨5,6點掀泳。這一年也做了些調(diào)整雪隧,沒再整到過后半夜,下了班就一溜小跑回家玩守……啊不是员舵,回家休息脑沿。對團隊小伙伴們的要求也是盡量提升效率,少加班马僻。合理的作息和鍛煉對于程序員很重要庄拇,”身體是革命的本錢“這句話誠不欺我。
今年還有個遺憾就是沒能實現(xiàn)“三十歲前用自己寫的語言寫一個操作系統(tǒng)”的愿望。也忘了這是什么時候定下的“小目標”了措近,在如今溶弟,寫個語言其實并不困難,編譯器已經(jīng)是很完善的技術(shù)了瞭郑;寫個操作系統(tǒng)也有一大堆從入門到xx系列辜御。但難就難在真的去做,說到做到和覺著自己能做到還是兩件事情屈张,希望有機會還是自己動手做一做擒权。
另一方面,對團隊來說袜茧,還有很多想做但因為新業(yè)務(wù)太多而沒有時間做的事情菜拓。比如弱網(wǎng)環(huán)境下的文件上傳性能優(yōu)化,微博私有通訊協(xié)議的優(yōu)化笛厦,我們團隊維護著的開源motan rpc框架對于微服務(wù)監(jiān)控和調(diào)度能力的優(yōu)化纳鼎,還有最近微博越來越火的視頻服務(wù)的后端轉(zhuǎn)碼服務(wù)、存儲服務(wù)的性能優(yōu)化裳凸,等等等等贱鄙。這些只能期望來年搞定了。
The Ugly
程序員這個行業(yè)里的人大多數(shù)人不喜歡交際姨谷,我也一樣逗宁。而實際工作中總有很多需要溝通的工作,而對于這部分工作實在是我的痛點梦湘。
而痛苦的來源主要來自于溝通時不在一個頻段上瞎颗,
比如我問”為什么沒搞定“,而對方的回答是:“我不會啊”捌议。
又或者我說“這么做的話會更合理”哼拔,而對方一直在強調(diào):“我這么做能實現(xiàn)啊”。
再或者我說“這里的需求明顯不合理”瓣颅,而對方只有一句:“老板是這么要求的”倦逐。
無論如何,跟人溝通是一件痛苦的事情宫补,尤其是跟與自己三觀不合的人溝通更是如此檬姥。今年也沒少經(jīng)歷過拍桌子大吼的場面。雖然不想承認粉怕,但是很多人并不是真的想把事情做好健民;有一些人的“好”跟你的“好”不是一個衡量體系;有些人雖然意愿很強贫贝,但他是笨蛋荞雏;當然,還有又懶又笨三觀還跟你不一致的……
如何跟人打交道是我今年反思最多的問題之一,作為一個與世無爭(凤优?)的程序員悦陋,我希望盡量少跟人起沖突,默默的多寫些代碼筑辨,但又不想自己因為要避免沖突俺驶,變成跟他們一樣又笨又懶的人,嘗試了幾次之后發(fā)現(xiàn)日劇里那些“靠熱情就感染了身邊的人”之類的橋段是騙人的(要么就是因為我沒長一張男主角的臉)棍辕,與其苦苦掙扎著期望別人某天突然改變暮现,不如找些志同道合的人在身邊。值得欣慰的是楚昭,今年招到的小伙伴都是能夠認可我的三觀栖袋,有意愿和能力把事情做的更好的人医窿。
PS:如果你想成為一名優(yōu)秀的架構(gòu)師吮龄,
或者在工作中遇到瓶頸纲辽,想跳槽欣范,碰到難題等等一系列問題,可以加我的架構(gòu)師群:554355695
這里有專業(yè)的團隊為你排憂解難净蚤,有最新的學(xué)習(xí)資源為你共享蒙揣。