什麼是 DevOps?

DevOps 一詞是開發 ( development) 跟營運 (operations) 兩個字的合體,涵蓋各式各樣的工具與獨特的文化內涵,其主要目的在於協助企業簡化軟體或應用程式的交付週期以提升其品質、安全與擴充性。

DevOps 的概念最早是在 2008 年由 Patrick Debois 所提出。對於當時正擔任系統管理員的 Debois 而言,DevOps 反映了他當時必須兼顧應用程式開發團隊與管理基礎架構 (如伺服器、資料庫及網路) 營運團隊產能的狀況。

DevOps 策略成敗的關鍵四要素: 文化、組織、架構、 工具

從事應用程式開發、測試、部署及監控的 IT 團隊,傳統上都各自為政。換句話說,他們的角色和功能都有明確的劃分且相當零散。DevOps 希望能打破各個 IT 團隊之間的藩籬,將其工作簡化成連貫的作業。

圖 1:DevOps 整合了人員、流程與技術。

DevOps 和其他方法有何不同?


DevOps 方法的具體實踐之一就是它在金融服務產業的應用,例如,銀行業務人員與開發人員首先會規畫並設計一個給銀行客戶使用的網站應用程式。接著,開發人員開始著手撰寫應用程式功能所需的程式碼,例如:登入表單與帳戶管理介面。接著,品保工程師會測試應用程式的安全性,然後將應用程式上線給客戶使用。接下來,營運人員會隨時注意是否收到任何意見反應,並不斷增加更多應用程式功能來提升使用者體驗,或者修補漏洞。應用程式接著又回到規劃階段,直到下次更新上線為止。

在傳統各自為政的環境中,開發人員所撰寫的應用程式將提交給系統管理員,由系統管理員來負責測試和部署應用程式,然後再提交給營運團隊。如此會形成一道一道的障礙,因為各團隊只會專注於自己份內的工作。舉開發人員為例,他們可能會忽略資安的需求,因為他們只專注於讓應用程式功能可以運作。假使營運人員想要盡快讓應用程式上線,他們或許也會略過應用程式底層機制與基礎架構的資安或一致性檢查,因為保護這些底層基礎架構是系統管理員的工作。

不同團隊之間的隔閡很容易造成阻力,進而變成應用程式開發流程的瓶頸。DevOps 的目的就是要消除這些瓶頸,在一個不斷循環的最佳化流程下將所有的團隊集結起來,致力提升自動化來加快應用程式交付速度。

圖 2:DevOps 策略成敗的關鍵四要素: 文化、組織、架構、 工具

         

文化

DevOps 意味著從 CXX 高階主管到行銷、資安等每一個專案相關人員都要參與,而非只有開發和營運團隊,DevOps 是一種持續學習與改善的過程。

組織

採用或轉型至 DevOps 意味著組織架構的簡化,將各種不同團隊集結起來,強調團隊合作與共同承擔的價值。

架構

DevOps 意味著實務與工具的密切配合,讓應用程式持續部署所需的流程、資源和基礎架構徹底發揮效益。

工具

DevOps 牽涉到環環相扣的程式開發工具,讓涵蓋各平台的應用程式開發、供應與管理能順利整合並自動化。

企業機構導入 DevOps 的動機為何?


根據 Forrester 的一份報告指出,2017 年已有 50% 的企業機構導入 DevOps。DevOps 不僅是一套工具,更是一套觀念,其內涵包括以下幾個企業在作業流程上希望解決的問題。

  • 靈活性。藉由消除開發流程的瓶頸來縮短上市時程,讓企業更快回應不斷變化的市場需求與競爭環境。DevOps 能將資安與法規遵循團隊也納入開發流程當中,避免應用程式必須重製而導致時間和資源上的浪費。
  • 永續性。防止業務中斷,一方面維持應用程式部署速度,一方面又確保品質。
  • 團隊合作。將不同的工具與團隊整合 (不論原本是在傳統、虛擬或雲端環境),進而強化責任歸屬、降低成本,最終保障應用程式的安全。
  • 自動化。將應用程式背後的流程及其底層的基礎架構標準化,如此能盡量減少錯誤,確保開發流程的每一階段都能維持一致。由於 DevOps 特別強調自動化,因此有助於企業避免因開發流程的障礙而無法趕上上市時程。
  • 適應性。確保工具與實務作業不會出現不相容的情形,降低橫跨資料中心、虛擬及雲端環境的應用程式建構及部署的複雜性。對於需要在不同平台上執行的應用程式,DevOps 能提供其所需要的適應性。
圖 3:將資安融入 DevOps 當中。

如何將資安融入 DevOps 當中?


DevOps 不但要確保軟體交付週期的靈活性、彈性與擴充性,還要確保應用程式執行前及其底層基礎架構的安全,才能防範不斷演變的資安風險與營運中斷的威脅。

對企業來說,導入 DevOps 意味著「人人有責」,在整個流程上的每一個人都必須共同努力來開發出 安全且符合法規的應用程式。除了法規之外,企業還必須考量應用程式可能對其儲存之資料以及應用程式使用者所帶來的風險。針對這點,根據 Gartner 在 2017 年所做的一項調查,59% 的受訪企業表示他們已強化了資安與 DevOps 團隊之間的合作。

有人認為將資安融入應用程式開發流程會拖慢其速度,這其實是一項迷思,以下說明為何資安對 DevOps 很重要:

  • DevOps 能協助開發及營運團隊進一步掌握應用程式的生命週期,提供應用程式在每個開發及部署階段的監控、追蹤與組態設定。
  • DevOps 可讓團隊提早在開發階段就發現資安漏洞與組態設定錯誤,以避免浪費不必要的時間和精力,同時也避免推出含有漏洞的軟體。此外,消除多餘的工作還可進一步加快軟體推出速度,最終並降低成本。
  • DevOps 能促進團隊更快回應資安事件或漏洞問題,提供可採取行動的威脅情報,進而確保企業的商譽及獲利能力。

DevOps 與 DevSecOps 有何不同?


DevSecOps (開發、資安、營運三合一) 可被視為是 DevOps 的一種,只不過是將資安直接拉到檯面上。

根據 Gartner 推算,不論是開放原始碼專案或是商用應用程式,2019 年將有 70% 的 DevSecOps 專案整合了自動化資安防護。的確,靈活性與安全性並非不能兼顧,例如,導入程式碼分析工具與自動化測試,有助於讓企業在應用程式生命週期的每一階段主動發掘並消除資安問題。此外,提前確保應用程式所在的容器安全無虞,也有助於防範資料外洩風險。透過自動化的漏洞評估與威脅評量,開發人員和系統管理員就能迅速回應資安威脅或資料外洩的情況。

更重要的是,資安防護還能減輕應用程式漏洞與資安威脅所帶來的潛在衝擊,讓 DevOps 流程更加順暢。例如,趨勢科技 Hybrid Cloud Security 混合雲防護解決方案就能提供威脅防禦來保護執行中的實體、虛擬及雲端工作負載與容器,同時還能在開發階段掃描容器映像。

圖 4:趨勢科技 Hybrid Cloud Security 混合雲解決方案防護運作情形。
(請看影片)

原文出處:DevOps