什麼是 DevOps?

DevOps 是「開發和維運」的結合,是實踐方法、工具和文化理念的結合,使組織能夠快速交付應用程式和服務。它能以比傳統軟體開發更快的速度,幫助產品從繪圖板推向市場,因為從設計到開發再到生產支援,營運和開發工程師在整個生命週期內均能緊密合作。事實上,為了讓工作變得更加順暢和快捷,營運人員和開發人員經常串聯使用許多相同的工具。

DevOps 圖

DevOps 涵蓋組織內的文化和人員,旨在改善開發團隊和維運環境之間的協作。這兩個術語的合併代表著必須將兩個先前完全獨立的團隊的工作整合在一起。DevOps 中的「Dev」特指開發人員,也指參與軟體開發的每個人,包括品管、產品團隊等;「Ops」則指系統工程師、系統管理員、維運人員、發佈工程師、資料庫管理員、網路工程師、安全專業人員、以及其他子學科和職位,Ops 通常負責部署開發人員所創造的軟體。在採用 DevOps 之前,這兩個團隊是在非常不同的環境中工作,一個必須等待另一個完成任務後才能行動。而現在藉助 DevOps,這兩個團隊可以更緊密地串聯工作,糾正任何缺陷及改變設計方向時就能更加敏捷。

一般來說,DevOps 代表 IT 文化從各自為政轉變成團隊合作,以系統導向的方法,使用敏捷、精簡的實踐來達成快速服務交付。DevOps 也致力於使用技術,尤其是自動化工具,來充分利用高度可編程且動態的基礎架構。

從語源上看,DevOps 一詞是由 Patrick Debois 在 2009 年創造,他是此系統最強大的支持者之一。此術語將「開發」和「維運」結合在一起,這是理解 DevOps 的基礎。這也是一個廣義的術語,涵蓋用於縮短軟體開發生命週期的流程、文化和思維方式,以及用於定期快速交付各種功能、修復和更新的快速反饋機制。

DevOps 的需求是什麼?

開發人員和系統管理員是企業需要他們協同合作,以確保組織順利運作的兩個重要部門。任何企業都需要快速添加新功能、服務和收入來源的能力,而且所有這些都必須在可靠的基礎架構上執行。開發人員可以隨時發佈新軟體,但通常為了穩定起見,維運部門的部署並不能快速啟動。這就是開發人員和維運人員往往存在分歧的原因。

以下是 DevOps 可以有效解決的情況範例:

一家公司正在開發由人工智慧 (AI) 驅動的清潔機器人,有一個開發團隊致力於撰寫程式碼,還有一個維運團隊專注在機器人及其在現實環境中的基礎架構。

開發人員花了將近一年的時間開發程式碼,使機器人可以識別它的主人、從智慧裝置接收命令,並具有一系列清潔能力。維運團隊也已經創造出將要執行上述所有功能的機器人。

現在當兩個團隊合併他們的工作時,事實證明,這個機器人有幾項缺陷,像是它只能接受一個聲音的指令、無法清潔較高的貨架。還有其他一些功能缺陷。這兩個團隊現在很沮喪,因為幾個月的工作並沒有帶給他們一個可行的產品,儘管在每次測試環境中一切似乎很完美,但顯然上市時間要延後了。

隨著技術進步,在孤島環境中從事維運和軟體開發的缺點變得更加顯著。DevOps 試圖將與開發和維運相關的每個人都集中到一個自動化程度很高的工作流程中,以嘗試解決這個問題。創造此工作流程的目的主要在於確保新軟體能夠滿足基礎架構穩定性的所有必要維運要求。

它遵循一套跨越所有傳統界限和職務角色的通用原則,包括:

  • 確定優先事項和最終結果,以及實現這些目標所需的基本理念。
  • 團隊內部和團隊之間透過協作來解決問題。
  • 將重複的流程自動化,讓更多人力投入更高層次的任務。
  • 利用參數將反饋意見整合到工作中,以衡量投入生產的所有變數。
  • 與所有必要的個人共享資料,跨越技能和專業知識,目標是完成任務。
TIBCO Cloud Integration - 免費試用
TIBCO Cloud Integration - 免費試用
讓 TIBCO Cloud Integration 賦予貴企業更好的整合能力,以更輕鬆迅速的 API 主導整合技術來簡化整合過程。夠簡單,才叫整合。

DevOps 從何而來?

DevOps 的前身包括一系列有助於打造現代化 DevOps 的系統和方法,藉此建立一個更強大、更靈活、更高效的系統。

企業系統管理 (ESM):這些維運專家/系統管理員為 DevOps 帶來他們理想中的最佳實踐方法,包括組態管理、系統監控,以及自動化佈建和工具鏈方法。

敏捷開發:敏捷軟體的運作是以客戶、產品管理、以及開發人員和品質保證之間的密切合作為基礎,目標是減少創造更好產品所花費的時間。從這個角度來看,DevOps 可以看作是敏捷原則的延伸,超越了程式碼範疇。

DevOps 的工具

來源程式碼庫

此儲存庫是開發人員登入和更改程式碼的地方。儲存庫負責管理所登入程式碼的所有迭代,確保開發人員不會覆寫其他人的工作成果。

構建伺服器

這是一個自動化工具,可將程式碼編譯到來源程式碼儲存庫中,再編譯為可執行的程式碼庫。

組態管理

這用於定義伺服器及其環境的組態設定。

虛擬基礎架構

虛擬基礎架構可從銷售基礎架構或平台即服務 (PaaS) 的雲端供應商處獲得,它們具有應用程式介面 (API),可透過編寫程式和使用組態管理工具來建立新的機器。

測試自動化

透過測試自動化,您可以在 build 管道中進行自動化測試,確保當您擁有可部署的 build 時,就能立即實施它。

管道協調

這是一套系統,很像工廠裝配線,將已完成的程式碼連接到其在正式生產環境中的部署,或連接到正式生產前的最後階段。

DevOps 的工作原理

DevOps 的中心系統有多種變化,但是,部分功能在所有 DevOps 文化中都是相同的,包括:

  • 協作:團隊和個人聚在一起工作以彼此協作。
  • 自動化:相當依賴自動化,DevOps 要靠工具鏈來滿足各種自動化需求。
  • 持續整合交付:DevOps 的本質特性之一,因為持續整合和交付源自於敏捷流程,可以更快地開發和交付最終軟體成果。
  • 持續測試:允許建立一個中央決策系統,幫助評估每個已完成最終確認的應用程式的相關業務風險。
  • 持續監控:這可讓團隊在開發過程中不斷評估軟體性能,確保其穩定性,以加速上市時間。

DevOps 的好處

瞭解 DevOps 的工作原理之後,組織就能透過正確實施程序和流程而獲得大量好處。

產品交付

藉助 DevOps,在利用創新技術來回應客戶、輕鬆適應市場變化、提高業務獲利基準等方面,企業可以高速進步,因為維運和開發之間能夠順暢互動,有利於促成這一點。

快速交付

隨著為市場提供可行產品的步伐加快,產品發佈頻率也隨之增加,因此您可以更快對產品/服務進行創新。而您發佈新功能和糾正錯誤的速度越快,在可靠品牌排行榜中上升的速度就越快,進而能為企業創造更大競爭優勢。持續整合和交付就是從構建到部署,使整個系統完全自動化的機制。

可靠度

藉助 DevOps,您可以確保正在實施的更新和基礎架構更改具有良好品質,這種信心使您能夠快速交付。持續整合和交付等關鍵實踐方法則是確保每次功能更改都很順利,而且不會對基礎架構造成危險。透過監控和記錄這些實踐過程,您就可以即時掌握性能表現。

規模

透過自動化技術所提供的一致性,您可以平穩處理複雜且不斷發展中的系統,並有效降低風險,進而能夠大規模操作和處理基礎架構與開發流程。

改善協作

團隊之間可以更好的互動,確保做到更好的職務歸屬並增進責任感。密切合作有助於分攤責任和合併數種工作流程,減少效率不彰的情形,並節省從開發到實施產品所花費的時間。

安全性

由於 DevOps 致力於將合規策略、多種複雜控制、組態管理等技術自動化,因此即使您擴展規模,也能確保安全無虞。

DevOps 的挑戰和解決方案

與任何工作系統一樣,DevOps 的實施也存在許多挑戰。但是這些可能的解決方案有助於企業從 DevOps 正確起步,為任何組織帶來巨大的機會。以下是採用 DevOps 和潛在解決方案可能面臨的挑戰。

將開發和維運結合在一起

這兩個部門有各自的工作文化,試圖將它們合併可能會遇到一些阻礙。要求每組人馬停止他們習慣的工作方式、並學習一套全新方法,可能是一個很大的難題。

解決方法是將注意力集中在共同目標上,當兩個團隊朝向同一個目標努力,就比較容易推動改變,為了實現這些目標,他們會更容易接受新的遊戲規則。開放溝通管道是此舉的成功關鍵,任一方的每個成員都應該知道他們擁有發言權。讓來自開發或維運的團隊成員到對方部門工作,也可以大大促進合作關係。

整合來自不同領域的 DevOps 工具

任何創造過程的關鍵都是開發、測試和部署,這些階段必須能夠循環往復、運行不輟。但是,由於每個部門對這三個步驟採取不同的方法,因此很難讓它們和實際流程保持一致,因而導致所用方法不同、工作重複、生產力低落等問題。但是將它們放在一起又會導致部門不得不放棄本身的一些流程,造成混亂局面。

此問題的解決方法是使用單一自動化系統來進行開發和維運。自動化可減少花在資料輸入、分析、產品研究、行銷等重複性任務上的時間,而整合不同的部門流程則能簡化生產流程並改善溝通。兩個團隊應該可以自行選擇要使用雲端型解決方案或開放原始碼解決方案,來協助他們經歷過渡期。

處理過時的系統

為了保持開發、測試和部署的節奏循環,您需要操作較新的系統。但通常情況並非如此簡單,您還需要處理過時的老舊系統,而這可能會導致一些嚴重的性能問題和穩定性問題。

解決方法是使用基礎架構即服務 (IaaS) 來確保您擁有最新版本的硬體、伺服器和資料儲存空間。此外,使用微服務也可以讓構建應用程式和擴展應用程式變得更容易、更快速。

日益增加的複雜性和安全需求

當今企業正在使用幾種新技術,從人工智慧到機器學習、虛擬實境和擴增實境等等,然而安全仍是其中最重要的課題。

聘請經驗豐富的開發人員來確保您採用更好的安全協議,將有助於善用這些安全協議並跟上最新技術發展,以確保一切能夠順暢運作。您可能難以決定是否要為客戶提供強大的安全選項,不過這些投資看起來雖然很貴,但非常值得。

DevOps 環境中的一致性

一個 DevOps 環境中可能存在多種工作方法,這會減慢生產速度並增加錯誤機率,特別是當您有不同的開發人員在執行不同方面的工作時。

想要解決這個問題,必須建立一個有利於協作的透明系統,而這需要對傳統的軟體開發和部署技術進行一定程度的學習和重新學習。企業應該鼓勵團隊成員進行交流,瞭解每個團隊成員在做什麼。這可以透過一系列溝通工具來實現,包括每日站立/簽到會議。

必須有明確的焦點和途徑可以讓大家共同成就,才能讓 DevOps 成功,而這一切的基礎是團隊合作。

DevOps 的採用須以優化的自動化實踐方法為基礎,透過選擇最合適的技術來實現。但很重要的是,這一切都與組織發展的文化和生態系統中的人員有關,人類和技術都是它的驅動力,致力於推動 DevOps 文化,就是致力於為團隊創造一個高效運作和不斷進步的環境。