devops 介紹

DevOps 是什麼?

從字面上來看,DevOps 為英文 Development (開發) 和 Operation (運營) 的縮寫組合。Development 指的是軟體開發,Operation 主要指的是技術運營&維護,可以視為軟體開發、技術運維及品質保障 (Quality Assurance, QA) 的交集。大家最常聽到的可能是 DevOps 工程師,其主要的工作內容在於透過提升軟體開發部門、IT 運營維護部門及品質保障 (QA) 部門 (規模較大的公司有獨立的 QA 部門;其餘較常見為附屬於 R&D 部門下的技術 QA) 間溝通、合作的效率,來同時達到軟體開發效率的提升及品質的保障。實際上,DevOps 並不局限為 DevOps 工程師的職責,而是一種企業 (任何有提供軟體產品、服務的公司) 應養成的文化。

devops 是什麼
DevOps 是什麼?

致力於落實 DevOps 的企業統常會著重於以下 5 大觀念、流程及方法,以提升軟體於開發、測試、交付、部署、維護等流程的效率及安全性:

.敏捷式軟體開發 (Agile Software Development)

一種強調業務、設計、開發團隊緊密協作的新型軟體開發方法,透過有效溝通、頻繁交付新的軟體版本、編寫能良好因應需求變化的程式碼等方法,組織出靈活的跨功能團隊。相對傳統的瀑布式軟體開發 (Waterfall Software Development) 則是如同瀑布一般由上而下,從產品需求設計到維護更新的開發程序,由於各階段劃分嚴謹、固定,因此版本發布耗時長且較難於過程中做修改,開發風險較高;相較之下,敏捷式開發進程更加迅速,同時於調整、修改方面上也更加靈活。

.自動化

自動化是 DevOps 觀念中十分重要的一環,其中最主要的兩個重點為『開發流程自動化』及『基礎設施自動化』。
開發流程自動化
開發流程自動化是為了加快軟體交付的速度,涵蓋範圍包括伺服器管理流程的部署、監控、測試等;此外,自動化部署可以減少手動作業的出錯可能,提升軟體安全性。
基礎設施自動化
最常見的實務為基礎設施即程式碼,透過程式碼來建置及管理基礎設施,工程師們能夠以似對待應用程式程式碼的方式來對待基礎設施,使部署及更新等流程更加有效率,同時提高安全性。

.持續整合/持續交付 (CI/CD)

由於大部分公司於一項軟體產品開發時會由多位軟體工程師共同協作開發,因此需要將各開發人員新的程式碼變更持續整合 (CI, Continuous Integration) 至中央資料庫;持續交付 (CD, Continuous Delivery) 則建立在持續整合上,在經過自動建置、自動測試後 (呈上一項『開發流程自動化』),通過標準化測試程序的程式碼便可以準備隨時被部署至生產環境。持續且快速的交付可以提升軟體更新、修正的速度。

.微型服務 (Microservice)

是一種軟體開發架構的設計方式,透過拆解複雜的大型系統,建立多個小型且獨立的專案,並透過良好定義的 API 進行通訊。通常微型服務的建立是基於服務功能,以應用程式為例,每項被規範為單一功能/用途的服務都可以獨立運作、部暑,且由靈活的小型團隊獨立擁有、開發,如此一來開發的時程縮短,且過程更加靈活。

.監控與分析

確切落實 DevOps 的團隊會透過設立可追蹤、有意義的警示指標,持續監控、紀錄及分析使用者對於軟體產品的反應和回饋,以了解各變更對使用者體驗的影響,並進行改進。而隨著基礎設施及應用程式的更新日趨頻繁,如何有效地設定警示指標和執行即時的分析,以建立更主動的監控系統,為提升軟體交付可靠性及問題回應效率的方法之一。
當然,最基礎的核心還是團隊組織間的溝通協作模式,透過建立資訊透明、合作緊密的企業文化,讓開發、運營及客戶端的團隊建立起共同的目標及有效的溝通協作方式,並搭配自動化、監控等實務,以達到軟體服務釋出/更新之效率及品質的提升。

延伸閱讀:DevOps 工程師找工作 大全 - 薪資情報、熱門職缺、面試技巧
devops
DevOps 提供企業的 3 項重點優勢

DevOps 於現今為什麼重要?

以下統整 DevOps 提供企業十分重要的 3 點優勢:

1.消除開發及運營之間的隔閡

由於開發團隊主要致力於提升交付新功能、新特性的效率,而技術運營團隊則著重於軟體的效能、可靠性,兩者的目標相異,造成新功能交付給使用者的效率下降。DevOps 重視開發、運營、測試團隊間的透明度及緊密合作,透過持續整合/持續交付、基礎設施即程式碼、監控和紀錄等實務,來消除開發及運營之間的隔閡,提升軟體交付速度。

2.透過頻繁地部署以降低風險

當一個企業長期拒絕小規模的軟體修改,在經過一段時間的累積後,需要變更的規模擴大,這時的變更就會產生較大的風險;在 DevOps 的觀念下,透過頻繁且小型地發布變更,讓軟體以平滑漸進的速率成長,來降低每一次部署的風險,提升安全性;而採取自動化的部署機制也可以降低人為出錯的風險。

3.快速交付以提升市場競爭力

在持續整合/持續交付 (CI/CD) 及開發流程自動化的執行下,軟體的開發、更新及修正的效率提升,發行週期縮短,除了可以更有效、靈活地回應客戶的需求,同時提升企業競爭力。

延伸閱讀:想轉職成為工程師,你可以試試這些學習管道——課程資源彙整

DevOps 適用於何種公司/企業?

有些網路上的文章指出只有「需要頻繁部署」的公司或「擁有獨立開發及運營部門」的大企業需要 DevOps,事實上如前面所提及的,DevOps 並不是單指一種角色,而是一種文化,只要是擁有軟體產品或服務的組織都需要重視,即使是只有兩位開發人員的新創團隊,也有 DevOps 的觀念在其中,如執行持續整合/持續交付 (CI/CD) 、將開發流程自動化等實務來提升軟體交付效率,降低變更風險;而現今於許多公司中,DevOps 的內容多由後端工程師負責兼任執行。更廣義地來說,DevOps 中的 Operation 可以視為所有和客戶端相關的營運部門團隊,因此客服團隊該如何有效地將客戶/使用者對軟體的建議、滿意度傳遞給開發團隊,並促使開發團隊進行相應的變更,也含蓋在 DevOps 的觀念中。

devops 工程師
對於 DevOps 的迷思及錯誤觀念

對於 DevOps 的迷思及錯誤觀念

由於 DevOps 為相對新興的觀念文化,在不少媒體、廠商的推波助瀾下,不少企業爭鋒成為 DevOps 的先驅者,在未完全理解 DevOps 精神下,開始出現部分企業對於 DevOps 觀念理解的偏差。以下統整 5 項企業對 DevOps 最常見的迷失及錯誤觀念:

1.DevOps 是一項技術

由於有越來越多企業開出 DevOps 工程師、DevOps 團隊主管等職缺,部分人可能會誤會 DevOps 為如同程式語言一般的技術。如前面所提及的,DevOps 是一種方法,一種企業各團隊間 (尤其著重於技術端團隊) 可以養成的文化,並非一個人便可以獨立完成的。因此,僱用一位 DevOps 工程師並不代表該公司正在落實 DevOps 的實務,必須實際進行文化及制度上的轉變。

2.DevOps 只針對軟體開發 & IT 技術人員

沒錯,最初 DevOps 是透過軟體開發人員及 IT 技術人員所提議且執行的。然而,發展至今,銷售、行銷、技術支援等部門也都可以參與在 DevOps 所提倡的文化中,包含自動化、分享及監測的落實。而企業越全面地接納 DevOps 文化,呈現出的成效及進展也會越顯著。

3.DevOps 就是自動化

開發流程及基礎設施等的自動化確實是 DevOps 中十分重要的實務,然而,自動化的初衷在於效率的提升,並非一昧的將所有的流程轉為自動化。當然,自動化是提升效率的方法『之一』,不過也別忘了團隊間最基本的溝通、合作有時比各式的自動化工具更直接、有效。

4.DevOps 就是採用工具

DevOps 並非是企業可以一蹴而成的,文化制度及流程設施需要時間來養成及建立,因此僅僅透過採用管理、監測、自動化等工具包並不等於 DevOps 的落實。市面上確實有提供不少好用的 DevOps 工具,協助企業從軟體服務開發到上線的自動化,但若沒有從最基層開始建立起 DevOps 觀念,並落實團隊間良好的溝通、合作模式,再好的工具也是枉然。

5.DevOps 一定要在雲端 (Cloud)

現今有許多雲端平台推出 DevOps 解決方案,包括知名的 AWS (Amazon Web Service)、Microsoft Azure 和 Google Cloud Platform,都提供各式相關的工具和服務;加上雲端及 Docker 容器的使用十分盛行,產生出一種實行 DevOps 就必須要在雲端上的錯覺。事實上即使是使用傳統的虛擬機器 (VM) 或甚至是實體機器都可以實行,只需要注意所使用系統的特性即可。

延伸閱讀:後端工程師找工作 大全 - 薪資情報、熱門職缺、面試技巧