事故不斷的 DevOps !

danny_2018發表於2018-09-12

DevOps方面有什麼樣的坑?好多坑,不過你好歹可以從別人犯的錯誤中汲取教訓。

在DevOps圈子,失敗根本就不受鼓勵。企業組織希望成功。它們希望每次構建、每個專案和每項長期計劃都實現其目標。不過,DevOps方面的失敗卻是不爭的事實。常言道,如果你眼看要失敗,就確保儘快叫停,從中汲取教訓,並利用剛獲得的教訓改進流程和產品。

以這個理念為背景,我們剖析了業內人士提到的幾個常見的DevOps故障,嘗試從每個故障中汲取一些教訓。

第一個坑:不可預見的鎖定

講述者:首席軟體工程師Carlos Sanchez

當你使用配置即程式碼實現部署自動化時,確保已落實了適當的保護措施(即驗證配置)。否則,很容易把自己鎖在外面,迫使你自己手動登入到每臺計算機,以便推送錯誤的變更並部署到所有計算機上後進行修復。

教訓:你將質量融入流程並提前做好自動化時,需要確保儘早並經常驗證所有變更。

這種情況表明了企業需要如何實施正確的流程,不僅僅針對應用程式程式碼變更,還針對管理環境的基礎設施即程式碼變更。實現自動化以追求DevOps時,有必要針對DevOps和生產系統的訪問許可權的登入資訊和秘密管理制定一項策略。

第二個坑:部署不合拍

講述者:工程技術主管Laura Frank Tacho

在持續整合/持續交付(CI/CD)期間並行開展工作可加快自動化測試,並縮短反饋週期。務必確保部署不是作為一個並行步驟來執行。錯誤配置會導致你的程式碼在測試執行的同時進行部署,無論其退出程式碼如何,部署前自動化測試的意義幾乎喪失殆盡。

教訓:這個故事強調了在部署到客戶之前確保已透過某些關卡有多麼重要。你需要構建CD管道,以便並行測試作為生產關卡來加以管理,確保經過適當測試和驗證的變更並沒有自動部署。

另一件事:雖然DevOps堅持認為你應該能夠隨時輕鬆部署,但需要將部署視作一個受管理、謹慎的事件。管道中的所有流程結束時再進行部署,任何變更部署到客戶之前已完成了所有必需的測試、驗證、檢查和審批。

第三個坑:SCM衝突

進述者:解決方案架構師Will Refvem

DevOps方面的最大挑戰之一是原始碼管理(SCM)。在我職業生涯的早期,有權訪問Git程式碼倉庫有點像將一把用彈藥帶的機槍交給喝醉酒的小孩。我在DevOps方面出的最大 糗事就是,我在一個使用Git子模組的專案中試圖掌握Git的基礎知識,有一系列bash指令碼實施了一套基本的CI/CD工作流程,卻直接在我們部署變更的環境中執行。我記不得遇到了多少次合併衝突和分離的HEAD。幸好,我們當時使用的是fork-PR模型,所以我沒有造成嚴重破壞。

教訓:需要一種適當的分支和合並模型,確保你將適當的輸入饋送給DevOps管道,好讓你可以持續整合、測試和最終部署變更。

第四個坑:定義不明確的KPI

講述者:產品營銷人員Juni Mukherjee

我們如何定義關鍵績效指標(KPI)很重要。比如說,一個質量工程團隊將每個迭代開發週期(sprint)執行的測試數量定義為一個成功指標。人會受到激勵的驅使,團隊的天性是增加越來越多的測試,甚至沒有考慮歸檔過時的內容。想一想,我們可以做到測試較少,但影響力較大;更重要的是,測試越少,測試周期時間越短。因此,我們應關注測試的覆蓋範圍和有效性,而不是純粹的數量。

與之相仿,釋出工程團隊將每個迭代開發週期的釋出數量定義為一個成功指標。釋出的數量勢必體現了速度,然而版本釋出只是將程式碼從A點移到B點,並沒有評估給業務增添的價值。因此,將業務KPI(比如獲得的新客戶數量和收入增長百分比等)與釋出速度聯絡起來至關重要,那樣我們就知道自己力求有價值的速度,而不是自殺的速度。

教訓:這是DevOps方面一個很重要卻常常被忽略的教訓。不能僅僅為了表明你在搞DevOps而實施。你需要為計劃制定目標,並確保兩者相一致。一旦我們定義了這些目標,就需要將KPI和成功指標與這些目標保持一致。合理定義這些成功指標和KPI將決定構建管道時哪些方面會優先考慮。

第五個坑:未能消除組織阻礙

講述者:顧問Viktor Farcic

一大障礙是文化,因孤立的部門而導致。我們開始分析整個系統、找出哪些方面要改進時,答案往往是“這不是我們的部門,我們不瞭解,他們不會與我們溝通。”那些孤島正是使用DevOps的主要理由;DevOps試圖消除這些孤島。但是實際上,大多數公司帶來了另一種孤島,這回是DevOps部門。實踐中的DevOps直接有悖於DevOps的想法。

教訓:圍繞產品和功能等主題來組織你的團隊,並讓軟體開發過程中的所有利益相關者進入這些產品或功能團隊。這讓利益相關者更好地參與其中,並防止常常困擾傳統軟體開發的“對立”的部落心態。

DevOps方面的文化完全與流程、實踐、工具和技術一樣重要,但它是最難改變的方面之一。

結論

與任何複雜的流程一樣,DevOps同樣會遇到失敗。一路上會有交接不順、溝通不暢。企業組織還會在實施整體DevOps計劃方栽跟斗。

DevOps方面的這幾個坑表明了DevOps轉型如何難以實現。會有種種問題,但它們是可以解決的。你需要將轉型當作一次學習和改進的迭代過程。如果你偶爾失敗,繼續前進,長遠來看你會成功的。

作者:CloudBees公司的DevOps宣傳官

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31547898/viewspace-2214005/,如需轉載,請註明出處,否則將追究法律責任。

相關文章