新浪網/系統架構師饒琛琳:那一年,我畢業了
我叫王大錘,當然不是。。。我叫饒琛琳,目前是新浪網系統架構師,專注于實時數據處理和監控領域。下個月,我要迎來自己親手招的第一個應屆生入職,所以,借51CTO的平臺,給應屆生們分享一下我畢業以來的一些小故事。
新浪網技術保障部系統架構師 饒琛琳
作者簡介: 新浪網技術保障部系統架構師。之前曾任職于人人網、世紀互聯云快線。 Perl 程序員,《網站運維技術與實踐》作者。目前專注在 Elasticsearch數據分析處理周邊。
那是2008年,我20歲,從北京交通大學通信工程畢業,進入世紀互聯CDN事業部工作。CDN是互聯網中比較偏門又獨特的一個行業。就在這一 年,北京舉辦了奧運會。而這也是CDN行業在國內大發展的引子。多家原先只會賣機柜帶寬的IDC廠商,在爭奪奧運直播的單子中,轉型成了CDN服務商。比 如今年在創業板驚爆無數人眼球的網宿科技。
不過,等我開始工作時,奧運已經結束了,這種大事件并沒有我什么功勞。但是奧運流量帶來的海量服務器,卻結結實實擺在剛開始工作的我面前。這是我的第一項運維工作任務:給幾千臺服務器改root密碼。
那還是一個互聯網運維的啟蒙年代,軟件編譯和配置修改是最主要的工作內容。能用shell已經是一個優勢。但是面臨這個任務,用expect寫的 shell腳本基本上每10臺就1次失敗,復雜的日志記錄又加大了retry難度。于是就這樣趕鴨子上架,當晚開始看《Perl實例精解》學習一門“正 規”的編程語言,第二天用Perl腳本完成了這個任務。
看起來這似乎是一個很happy的故事,但是轉折來了:領導告訴我,這事其實不該這么干!Linux一切皆文件,修改出來一臺的新shadow文件,傳輸到其他機器上就可以了。
當然,如果是現在這個DevOps技術大爆發的時代,還可以再轉折一次,年初我翻譯出版的《Puppet Cookbook》上有一個完整的如何通過Puppet自動管理用戶和加密密碼的配置示例。不過對于那時候的我,這是工作中學到的第一個知識:面對問題, 多花點時間找更貼近本質的辦法。
之后的工作“平淡無奇”,作為服務商,每天都有新客戶接入,按照工單要求,寫完squid配置,分發重啟,在我花一個周末用shell做好自動分 發配置的CGI頁面后,這基本就不算個事兒了。不過卻時不時碰到客戶工單上,除了一個www域名,什么信息都沒有,因為對方也沒有專職運維,只知道CDN 據說省錢又效果好,完全不懂需要干嘛。這時候,就要我們從客戶的www主頁開始,選幾個可能重要的鏈接點下去,然后挨個網頁通過httpwatch, firebug 查加載的元素,對照它們的Header內容,把可以做緩存的子域名、文件路徑和后綴名等信息收集起來。甚至碰到過一個客戶,主頁完全由一堆iframe拼 接,而iframe里加載的是一個只有跳轉地址的HTML,跳轉過去才是實際新聞,所有內容經過三層邏輯才展現出來……
當時只是覺得這種做法是對客戶負責,對工作認真。等到我之后到了中華網,人人網,乃至現今在新浪網,作為一個網站運維,才發現之前這種習慣的好 處:排障和調優中,都會優先從用戶訪問的角度入手。做一個網站運維,system admin也好,devops也好,都只是技能,site reliability才是目標。甚至為了讓用戶更爽,你應該拿出可信的數據來,去主動串聯起業務開發部門共同進行網站優化。數據的來源,無非監控,測 試。所以,這兩項技能是sre的立身之本,去年我出版一本《網站運維技術與實踐》,前一半的篇幅,都在講各種監控,測試,數據處理技術。曾經有人問我說: 剛畢業開始干運維,每天都在部署上線。看了你的書,但還是不知道從哪里做起?我回答:書的章節安排就是順序。在沒有完善的監控系統之前,你干啥都是錯的, 永遠是背鍋俠。
前面這些,也可以說是對運維崗位的一些感想,給馬上要進入崗位的學弟們一點小啟發。對于個人提升方面,有的是比我成功得多的例子,我在這里就引用一些現成的話,轉告給諸位,不敢說是終南捷徑,只能說是我個人踐行多年有所收獲的坦途:
1. 程序員的三種美德:
懶惰、急躁、傲慢。這段話出自Perl語言之父Larry Wall。其實說直白一點,就是:寫代碼,寫好代碼,寫有好文檔的好代碼。任何一件可能干第二次的事情,都值得寫代碼,否則,你不會有時間干后面幾條說的事情。
2. 好記性不如爛筆頭
記筆記,或者進一步,寫技術博客。推薦大家都嘗試并堅持寫技術博客。我從沒見過哪個堅持住寫技術博客的人沒獲得提升的。因為敢公開,本身就是一種壓力和挑戰。
3. 畫思維導圖
筆記或者博客是一個一個片段。要把自己的習慣和能力轉成方法論,就需要一次次完整的邏輯推理。畫思維導圖就是一個輔助方式。我從世紀互聯離職的那天,畫下來的CDN技術腦圖至今還在擴充,因為技術總是關聯的。
4. 擁抱開源,從GitHub開始
GitHub是目前最大的開源代碼協作平臺,這里不是說要大家都去上面新建個repo然后開始造輪子,而是應該找幾個自己手頭在用的開源軟件,去 它們的GitHub repo上,多多反饋issue,提交pull request。Puppet作者原先是CFengine開發人員,Elasticsearch作者至今還是Lucene的committer。可以說: 在你沒有把一個流行的開源軟件深入了解到能把優缺點都列明白的時候,不要輕易造輪子。甚至推而廣之,不要輕易換輪子。
5. 多聽多看
我畢業入行的時候,最流行一句話“運維是靠經驗吃飯的,會越老越吃香的”,明顯針對“程序員三十歲就完蛋”的觀點。現在再看,十年前學的系統管理 知識,都更新換代好幾輪了。可能一份招聘要求,除開第一條“熟悉Linux”,后面各個名詞都是近三四年才出現的。所以,在上一條對個別領域要研究的深的 前提下,同樣不要忘了,對行業內其他領域的知識,多聽多看,很可能你的下一個工作內容,興趣點,就在那里。
</div>