DevOps 矛盾大對決

從一個故事開始

人物:
芒果公司資訊部營運組 小白
芒果公司資訊部開發組 大目

小白:「大目,訂便當系統是你開發的吧,人事部的大頭剛剛打電話問,為什麼訂便當系統不能用,出現503 Service UnAvailable,有幾個工讀生等著領便當,可以幫忙看一下嗎?」

大目:「啊你麼幫幫忙,我又沒有正式環境的權限,你們昨晚是不是改了什麼設定?」

小白:「我們昨天晚上只有做資料庫備份」

大目:「啊是不是網路的問題,我剛剛FB好像也登不進去」

~五分鐘後~

小白:「我剛剛請網管人員查過了,網路現在正常」

大目:「還是上次你們部署的時候漏了什麼東西?」

小白:「上次部署已經是一週前的事了,何況你們也測過沒問題。可以看一下Log嗎?」

大目:「啊你麼幫幫忙,我又沒有權限可以看Log,你幫忙看一下」

小白:「好的,請問Log放哪?」

開發人員B:「我開發時都放自己本機的D槽,我哪知道正式環境的Log放哪,那是Linux耶」

~五分鐘後~

小白:「Log找到了,裡面有一堆Error,寫了Null Pointer Exception之類的訊息」

大目:「NullPointerException,啊我想那應該是微軟的問題」

小白:「是嗎,我猜應該是你程式的問題吧,可以檢查一下程式碼有沒有異常嗎?」

大目:「我手上的程式碼改到一半,和正式環境的不一樣,你可以把正式環境的index.html copy給我嗎?」

~五分鐘後~

小白:「index.html寄給你了」

~五分鍾後~

大目:「我在我電腦上測試都正常耶」

小白:「那怎麼辦?」

大目:「我們再觀察看看有沒有其他人遇到同樣的問題好了」

~一周後~
問題找到了,原來是大目程式的Bug。

大目:「上周的問題已經修好了,現在可以幫我把index.html放到正式環境嗎?」

小白:「好」

大家對上面的場景應該不陌生,工作中也許曾經聽過類似對話。而聰明的你應該察覺到這裡面的對話似乎怪怪的。

困惑之牆

一個系統從開發、上線到正式營運,一般會需要兩種角色的相互合作:開發團隊、維運團隊(有些公司稱為IT),這兩種角色在不同的公司中有不同的編制,也許是同部門下的不同團隊,或者是兩個不同的部門。

wall of confusion
圖片來源:Dev2Ops.org

維運人員和開發人員在專業背景、技能、以及工作執掌都大不相同。

維運人員必須確保正式環境的運作正常,他們信奉乖乖大神,希望正式環境沒事就不要去動它,否則極可能被魔神仔破壞,為了怕系統有狀況,有些人必須24x7待命,深怕半夜接到電話。他們做事保守,要求所有變更作業依程序辦理,他們當中很多人是SOP魔人。

開發人員負責系統變更及錯誤的修改,他們處於專案組織的低下階級,得經常接受專案經理和使用者不人道的需求,總是不能拒絕,常常因此熬夜加班,因為他們被告知的工作期限總是ASAP。

這兩群人在辦公室或許坐的很近,但除非是程式部署或系統有問題,否則沒事不會往來,所以不熟悉彼此的工作內容,就像中間隔著一道困惑之牆。也因為工作習性差異太大,一方看重系統SLA,另一方急著要解決Bug;一方懼怕變更,另一方急著要變更,所以爆發衝突在所難免,不時上演矛盾大對決。

相關文章

如何將電腦畫面經由 Chromecast 投放到電視螢幕上

Chrome 的檔案續傳功能

Mac與Android裝置傳輸檔案的方法

使用 Vysor 在電腦上控制 Android 裝置