如果DevOps是由Dev(開發)跟Ops(維運)組成,哪裡還需要QA工程師?
幸好(?)你到維基百科找DevOps示意圖,QA是被包含在裡面的:
而這篇就來聊聊DevOps的主要目的與潛在問題,Dev與Ops角色在工作上的衝突
還有分享以QA工程師的角度,如何實際幫助團隊協作與DevOps實踐的部分。
網路上隨便一搜,會有關於DevOps文化實踐以及基礎概念等等資訊,但都講得偏空泛
整篇看完之後還是不太清楚要怎麼實際的去實踐DevOps
我認為以軟體作為產品的開發團隊而言,DevOps的主要目的就是一個字:「快」
開發快,整合快,交付快,驗證快,修正快,什麼都快。
如果你的產品能在兩週之內出一個新版,而且品質跟六個月出一次差不多甚至更好
那大家一定都會很推崇這樣的軟體開發的模式
搭配上敏捷思維與各式工具與專案方法的應用,如Kanban, Scrum, Agile等等
也讓DevOps的唯快不破成為軟體開發界的當紅炸子雞。
如果你開始了解DevOps概念,會發現大致上都跟敏捷理念差不多「理想」
舉例來說,容許試錯並快速修正與要求事事完美無缺,
一個是小步快跑,一個卻是一步登天。
雖然都是在為了優良的品質目標努力,但本質上是兩個不同的兩種思維。
轉念來想,既然目標一致,那只是實踐的方法不同,殊途同歸也是可以的。
這可能也是DevOps聽起來雖美好但卻不容易實踐的原因
原因是DevOps是一種思維跟文化,而這種偏價值觀的東西非常看「人」
事情本身容易解決,但改變人價值觀的難度卻高上不少。
這時候更需要團隊的力量,一同確保團隊目標是可以達成的。
DevOps的核心在於文化,也就是讓開發有維運思維,讓維運有開發思維
那這兩個團隊角色與工作目標有什麼差別呢?
Dev(開發團隊):
Ops(維運團隊):
可以簡單看出當你的角色工作目標不同,主要關注的事也會不同。
除了持續溝通,也要為團隊中的不同角色想:
團隊裡會需要有角色在顧產品整體的全局,而這個角色就是QA。
開發團隊忙著功能開發,維運團隊忙著處理環境瑣事
不管是Dev還Ops,工作時間會被開發新功能以及維運越來越多的舊功能給佔滿
這個時候QA工程師在團隊中最有效的做法就是保持「穿針引線」的持續溝通。
舉個例子,像上面提到常見的data migration問題,這類問題通常是一測就知
migration沒跑,config沒欄位,功能就是沒辦法正常運作
除了確保Dev的新功能同時在staging環境可以正常運作以出RC build之外
也要確認stag/prod環境的config需要用Ops的Ansible script去做deploy
當有QA這種顧全局的角色穿梭在開發與維運之間,
讓軟體開發過程除了DevOps追求的快,也有QA拼死守護的產品品質。
下一篇來聊QA實際可以做的DevOps實踐