功能表

什麼是 DevOps 開發維運?

側放的灰色放大鏡
主題

DevOps 開發維運是一項不斷發展的理念與架構,旨在鼓勵更快、更出色的應用程式開發,以及更快地將新的或修訂後的軟體功能或產品發佈給客戶。

DevOps 開發維運的實務做法可促進應用程式開發團隊 (Dev) 與其 IT 營運團隊 (Ops) 的合作夥伴之間更順暢、持續的溝通、協同作業、整合、可見度及通透性。

「Dev」與「Ops」之間的這種密切關係貫穿了 DevOps 開發維運生命週期的每個階段:從初始軟體規劃到程式碼、建構、測試和發佈階段,再到部署、作業與持續監控。這種關係推動了進一步改善、開發、測試及部署的持續客戶回饋循環。這些努力的結果之一可能是更快速地持續發佈必要的功能變更或新增項目。

有些人將 DevOps 開發維運目標分為四類:文化、自動化、測量與共享 (CAMS),而 DevOps 開發維運工具可以在這些領域提供協助。這些工具可讓開發與營運工作流程更為精簡且更具協同合作性,將先前涉及整合、開發、測試、部署或監控的耗時、手動或靜態工作自動化。

為什麼 DevOps 開發維運如此重要

除了努力打破開發與 IT 營運團隊之間的溝通與協同作業障礙外,DevOps 開發維運的一個核心價值是客戶滿意度和更快實現價值。DevOps 開發維運也旨在推動企業創新和持續的流程改善。

DevOps 開發維運的實務做法鼓勵將商業價值更快、更妥善且更安全地交付給組織的終端客戶。這項價值的形式可能是更頻繁的產品發佈、功能或更新。其中可能涉及客戶能取得產品發佈或新功能的速度,而且全部都必須達到適當程度的品質和安全性。或者,其中可能著重於識別問題或錯誤,然後解決並重新發佈的速度。

底層基礎架構也會支援 DevOps 開發維運,使其具有順暢的效能、可用度及軟體可靠性,因為它是先經過開發和測試,然後才發佈到正式作業環境中的。

DevOps 開發維運的方法

組織可以使用一些常見的 DevOps 開發維運方法來加速及改善開發與產品發佈作業。它們採用軟體開發方法和實務做法的形式。其中最熱門的是 Scrum、Kanban 和 Agile:

  • ScrumScrum 定義了團隊成員應如何合作以加快開發與 QA 專案。Scrum 實務做法包括關鍵工作流程和特定詞彙(衝刺、時間框、每日 Scrum [會議]),以及指定的角色(Scrum Master,產品負責人)。
  • KanbanKanban 源自於 Toyota 工廠的效率提升。Kanban 規定必須在看板上追蹤進行中軟體專案工作 (WIP) 的狀態。
  • Agile早期 Agile 的軟體開發方法仍持續嚴重影響著 DevOps 開發維運的實務做法和工具。許多 DevOps 開發維運方法(包括 Scrum 和 Kanban)都納入了靈活程式設計的元素,例如這些靈活的實務做法可能是與更快回應瞬息萬變的需求和要求、將要求記錄為使用者案例、執行每日例行工作,以及納入持續的客戶意見回饋相關。Agile 的實務做法也規定了較短的 軟體開發生命週期,而非冗長的傳統「瀑布式」開發方法。

DevOps 開發維運工具鏈

DevOps 開發維運實務做法的追隨者通常會在其 DevOps 開發維運「工具鏈」中使用某些易於使用的 DevOps 開發維運工具。這些工具的目標是進一步簡化、縮短及自動化軟體交付工作流程(或「管道」)的各個階段。許多這類工具也能促進開發與營運團隊之間的自動化、協同作業及整合等 DevOps 開發維運核心原則。以下說明在各個 DevOps 開發維運生命週期階段使用的工具範例。

  • 規劃此階段有助於定義商業價值與需求。範例工具包括 Jira 或 Git,可協助追蹤已知問題並執行專案管理。
  • 程式碼此階段涉及軟體設計及軟體程式碼的建立。範例工具包括 GitHub、GitLab、BitBucket 或 Stash。
  • 建置在此階段,您將管理軟體建置與版本,並使用自動化工具來協助編譯及封裝程式碼,以供將來發佈到正式作業環境。您使用的原始碼程式碼儲存庫或套件儲存庫也會「封裝」產品發佈所需的基礎架構。範例工具包括 Docker、Ansible、Puppet、Chef、Gradle、Maven 或 JFrog Artifactory。
  • 測試此階段包括持續測試(手動或自動),以確保最佳的程式碼品質。範例工具包括 JUnit、Codeception、Selenium、Vagrant、TestNG 或 BlazeMeter。
  • 部署此階段可以包含有助於管理、協調、排程和自動將產品發佈至正式作業環境的工具。範例工具包括 Puppet、Chef、Ansible、Jenkins、Kubernetes、OpenShift、OpenStack、Docker 或 Jira。
  • 操作此階段可在正式作業期間管理軟體。範例工具包括 Ansible、Puppet、PowerShell、Chef、Salt 或 Otter。
  • 監督:此階段包括識別及收集有關正式作業中特定軟體版本問題的資訊。範例工具包括 New Relic、Datadog、Grafana、Wireshark、Splunk、Nagios 或 Slack。

DevOps 開發維運實務做法

DevOps 開發維運實務做法反映了持續改善與自動化的理念。許多實務做法著重於一或多個開發週期階段。這些實務做法包括:

  • 持續開發這項實務做法涵蓋了 DevOps 開發維運生命週期的規劃與編碼階段。其中可能涉及版本控制機制。
  • 持續測試這項實務做法可以在正在編寫或更新應用程式的程式碼時納入預先排定的持續自動化程式碼測試。這類測試可以加快將程式碼交付至正式作業的速度。
  • 持續整合 (CI)這項實務做法可以將組態管理 (CM) 工具和其他測試與開發工具結合,以追蹤正在開發的程式碼有多少已準備就緒可供正式作業使用。其中涉及在測試與開發之間快速提供意見反應,以便迅速識別並解決程式碼問題。
  • 持續交付這項實務做法可以在測試後,自動將程式碼變更傳送至正式作業前或接移環境。然後,員工可以決定是否要將這類程式碼變更推廣至正式作業環境。
  • 持續部署 (CD)與持續交付類似,這項實務做法可以自動將新程式碼或變更後的程式碼發佈至正式作業環境。執行持續部署的公司每天可以發佈數次程式碼或功能變更。使用 Docker 和 Kubernetes 等Container技術有助於在不同的部署平台和環境中維持程式碼的一致性,進而實現持續部署。
  • 持續監控這項實務做法包括持續監控運作中的程式碼以及支援該程式碼的底層基礎架構。回報錯誤或問題的回饋循環隨後又會回到開發階段。
  • 基礎架構即程式碼這項實務做法可在各種 DevOps 開發維運階段中使用,以自動化軟體版本所需的基礎架構資源配置。開發人員可從其現有的開發工具中新增基礎架構「程式碼」。例如,開發人員可以視需求從 Docker、Kubernetes 或 OpenShift 建立儲存 Volume。這項實務做法也可讓營運團隊監控環境組態、追蹤變更,並簡化組態的復原作業。

DevOps 開發維運的優勢

DevOps 開發維運的支持者說明了一些業務和技術上的優勢,其中許多都可以讓客戶更滿意。DevOps 開發維運的部分優勢包括:

  • 更快、更好地交付產品
  • 更快地解決問題並降低複雜度
  • 更高的擴充性與可用度
  • 更穩定的作業環境
  • 更佳的資源使用率
  • 更優異的自動化功能
  • 更清楚地掌握系統成果
  • 更高程度的創新

DevOps 開發維運的歷史

許多用於簡化軟體開發與部署的 DevOps 開發維運方法,在靈活的軟體開發與精簡程式設計方面都具有早期基礎。但是 DevOps 開發維運最初是從幾個基層運動演變而來,以協調開發人員及其營運團隊的活動。

在 21 世紀初,我們發現必須維持 Google 和 Flickr 等熱門網站的可用度,以因應大量的點閱。這種需求導致了必須用到軟體可靠性工程師 (SRE),讓營運人員與開發人員密切合作,以確保在將程式碼發佈到正式作業環境後,這些網站仍能繼續運作。

2009 年,Flickr 工程師 John Allspaw 和 Paul Hammond 在一次會議上提出了他們自己的類似 DevOps 開發維運的方法。他們的演講題目是「每天部署 10 次以上:Flickr 內部的開發與營運合作」(10+ Deploys per Day: Dev and Ops Cooperation at Flickr)。同年,Patrick Debois 在比利時舉辦了第一個「DevOps 開發維運日」(DevOps Day)。隨著全球各地舉辦越來越多的 DevOps 開發維運日,我們也加入了 #DevOps 雜湊標記,並獲得更多動力。

在接下來的幾年裡,業界人士開發並提出了業界和開放原始碼工具與架構,以進一步實現 DevOps 開發維運的目標。

NetApp 與 DevOps

NetApp 利用 DevOps 開發維運協助推動更好的業務成果:營運團隊以更少的工程技術提供自動化的基礎架構,而開發人員則能在可靠且可預測的環境中建立,並減少摩擦。借助 NetApp® 技術,您就能安心地提供組織所需的服務與功能,以在內部部署與雲端環境中發揮最大的開發人員生產力。

NetApp 讓開發人員、測試、QA 和營運團隊都可以輕鬆地使用基礎架構資源(例如持續儲存 Volume)做為程式碼,而且全部可以從 DevOps 開發維運管道中的熟悉工具進行。範例包括 NetApp 儲存 API 和 IAC 與 Puppet、Ansible、Docker、Kubernetes 和 OpenShift 等工具的整合。

但是 NetApp 不只能讓開發人員輕鬆地使用儲存設備做為程式碼。NetApp 技術也能讓營運部門充滿信心地為開發與測試人員配置和提供資源。然後,開發人員和測試人員便可以透過自行配置快速且省時的儲存功能(例如 Snapshot 快照技術或 Clone 複製),來加快編碼和測試週期。有了這些功能,只需幾秒鐘或幾分鐘的時間就能將即時正式作業資料或程式碼集的複本配置成程式碼,以加速開發與 QA 工作流程。

NetApp 對社群的承諾延伸至 thePub。這個開發人員社群鼓勵協同作業、分享秘訣和技巧,並針對最新的 DevOps 開發維運實務做法和傳輸協定辯論想法。

繼續閱讀 DevOps 開發維運的相關資訊