DevOps 經驗談

其實我想寫這個,是因為某天我看到了這個文章,這篇是國外某個很有名的科技部落格 techcrunch 所寫的, 我近年來工作的範圍已慢慢從 team lead 轉向了 DevOps, 看了這個文章特別有感想.

假如各位讀者不了解這是做什麼的,我稍微解釋一下,Dev 是 development, Ops 是 Operations, Development 我想大家都很清楚,基本上就是寫寫code,Operations 我想了半天,最好的解釋應該是搞流程的,譬如說假如有一群人想要做一件事,裡面有好幾個步驟,怎樣把這一些人很有效率的完成這幾個步驟,這就是搞流程的主要的工作,DevOps 就是一個職業要把這兩件事合而為一,寫寫搞流程的 code, 也就是我們常說的 automation (自動化).

DevOps 的重要性近幾年來,慢慢的變得重要起來,尤其是現在大家很流行用 agile 來做事,agile 追求的是什麼?在很短的時間把所謂的高質量的少量成品放上去,在每兩個禮拜的sprint中,得交出點東西,但是萬一某天出了environment issue,你的工作就停擺了三天,那你的 10 天的工作日,就剩下了七天,還要扣掉給QA的時間,demo的時間,規劃的時間,東西做不完,又要流回 backlog list(這個在我們公司是家常便飯的事情) ,再加上近來流行 TDD,所謂的 test driven development, 簡單的說,就是要先寫 failed test 再寫 code,讓 failed test 變成 pass test.老實說,這是一個很好的概念,一開始會slow 整個 team 的進度,但是後來會讓整個 project的 code 質量變高,QA 的效率也會加快很多,但是問題來了,test 越寫越多,跑這些 tests 總是需要時間,就像目前我們 team 有一個主要的對外網站,光是 tests 就有六千多個,一台電腦全部跑完要四個小時,我們對 developer的要求又是,當自己的 code 要進入主 branch時,你的 code  一定要跑過這六千個 tests,但是,你總不能要求 developer  每天都等個四個小時,才能把自己的 code 放進去,這時候就是需要很多台很快的 server 能同時把六千個 tests 分散,讓 tests 很快速的跑完, 每台 server 怎麼設,怎樣才能最有效的,這就是 devOps 進入的地方.

介紹了半天,我都沒說到那篇文章,那篇文章簡單的說,就是 devOps 其實是一個將死的職業,作者基於的理由有二,第一現在很多都是走雲端,管理維護的需求基本不存在,唯一的差別就是使用各種 tools,作者覺得身為一個 developer,自己學一下就好了,說老實話,我覺得他說得蠻有道理的,因為我就是從 developer開始的,一開始沒有 server,就在自己電腦上建虛擬機器,沒有任何工具,就是自己寫,慢慢得越來越多人用,漸漸變成一個基準,每個人都得跟隨這個流程,server移到了雲端,說實話,也沒什麼要維護的,工具也很成熟,感覺上應該工作就變得很輕鬆了,就像文章所說,沒有這個職業也是可以存活的...真的嗎?

但是事實上,我還是很忙,原因很簡單,所謂的最佳化,是永遠做不完的,你永遠都有方法提高效率,即使有時候只有一點點,就像我之前所說的六千個tests,我有天做了小改變,減少了十分鐘的時間,聽起來是很小的變化,但是每個developer每天少十分鐘等待的時間,一個25人的團隊,就多了四小時,一天四小時,一年就是960小時,這樣感覺就很多了吧(我都是這樣騙我的老闆的)

喜歡這篇文章嗎? 分享出去給作者一點鼓勵吧!