趨勢科技先從消費端研發團隊開始擁抱DevOps,圖為該團隊主管趨勢研究開發部經理張懿(圖中),以及兩位研發團隊中的DevOps成員,分別是趨勢研究開發部技術經理江盈宏(圖右)和資深工程師陳彥宏(圖左)。

圖片來源: 

iThome

如同非洲標準銀行先從消費端服務開始導入DevOps一樣,在趨勢科技中,率先擁抱DevOps也是消費者產品的研發團隊。趨勢消費端產品研發部門下,超過半數的開發專案(包括外部產品和內部服務)採用了DevOps流程,累計有十多位DevOps隸屬在不同的研發專案中負責Ops任務。

早期,趨勢消費端防毒軟體多半是每年改版一次,對於軟體交付速度的需求不高,直到2008年前後,趨勢開始大力發展SaaS服務,例如線上掃毒服務TrendSecure,或者是供內部各部門共用的內部線上服務,例如儲存資料同步服務。

雲端服務帶來了更多的使用者,但也讓趨勢科技的開發團隊面臨了新的挑戰。傳統瀑布式的開發流程再快也得花上數個月、甚至是半年才能推出一版更新程式,趕不上隨時都能更新的雲端服務步調。所以,在2010年時,趨勢科技導入敏捷開發流程來加快產品研發的腳步。

可是,趨勢研究開發部經理張懿表示,敏捷開發只是加速了研發團隊內部的改版速度,卻無法進一步延伸到維運層面,從顧客角度來看,產品發布的步調仍舊快不起來,例如很難每個月發布一次新版。

當時,趨勢科技內部不論是哪個研發團隊完成後的程式碼,都統一交給管理資料中心維運的DCS部門(Datacenter Services)負責。為了避免因執行環境異動而影響了各項服務的穩定性,DCS部門早就導入了IT服務管理架構ITIL,來強化各項系統變動的管理。但因ITIL管理程序嚴謹,許多作業需要耗費一段時間才能完成。趨勢科技研究開發部資深工程師陳彥宏舉例,早期Dev和Ops兩團隊的分工嚴明,Dev人員無法直接存取上線環境的系統,遇到對外服務當機,光是要申請進入的許可至少得花30分鐘。

2011年初,趨勢有項雲端儲存相關的新專案需要更快的產品發布速度,趨勢決定趁機調整維運策略,不再將所有專案的維護工作全權交給DCS部門負責,而開始改變流程改交給Dev研發團隊中具有Ops能力的工程師接手這個新專案的維運工作。DCS部門只負責伺服器設備、網路等實體環境的建置,其餘從作業系統、中介軟體到應用系統的部署改由DevOps人員接手。

「導入DevOps前,跨部門溝通的成本過高,」趨勢科技研究開發部技術經理江盈宏表示,DCS團隊得先花時間先了解應用系統種種特性後才能管妥維運,但是遇到了應用程式面的問題,還是得回頭尋求研發部門協助,等於多費了好幾次工,DevOps可以節省彼此溝通的成本。

張懿表示,由Dev負責Ops工作還有另一個好處是能夠統一開發和上線環境,避免在開發環境可用的程式碼,部署到上線環境後出錯。

趨勢科技在不同產品研發團隊中設置各自負責Ops的DevOps人員,這群人再形成跨專案的DevOps社群,分享DevOps工具和維運問題的解決經驗。(圖片來源/趨勢科技)

從CAMS四面向導入DevOps

趨勢科技從4個面向來推動DevOps。陳彥宏表示,包括了文化轉換(Culture)、善用自動化工具(Automation)、重視測量(Measurement)和鼓勵分享(Sharing),可以用CAMS這四個字來簡稱趨勢的作法。

陳彥宏表示,改變既有開發和維運文化先從組織改變下手。趨勢直接在現有Dev研發團隊中設立了Ops角色,再搭配作業流程調整,許多原本要等到程式碼交付給DCS團隊後才會開始考慮的問題,如擴充性或備援等基礎架構設計、基礎架構程式化、持續交付環境設計、監控機制、備份策略、災難復原SOP、高可用性的破壞測試、安全性設計、效能測試等,都改由DevOps人員接手,提前到開發階段就開始考慮後續維護的需求。

對不少研發人員而言,維運人員好像是一位處理大量例行瑣事的黑手,但江盈宏澄清:「只管20臺機器可能只是例行瑣事,但要維運一套2千臺機器的叢集,可是一項需要創新能力的挑戰。」率領這個導入DevOps團隊的張懿也經常要求,DevOps要懂得用更聰明的方法解決維運問題。

江盈宏表示,只要善用自動化工具,即使DevOps人員遠少於DCS部門的維運人力,還是可以管理大規模的設備。

趨勢DevOps自動化作業涵蓋了程式碼組建、測試、部署、監控機制、自動恢復、系統配置、自動擴充、基礎架構調度等。

另外也搭配了三類監控機制,包括了服務狀態即時監控機制、長期性系統維運趨勢的分析矩陣、以及可快速檢視最新系統狀態的儀表版,甚至可提供給高階主管或業務部門人員瀏覽,快速取得服務運作的基礎參考數據。

不過,想要找到熟悉Ops技巧的Dev工程師並不是一件容易的事,江盈宏是第一批順利勝任Ops工作的研發人員。他解釋,因為過去,研發人員只需負責自己使用的機器,而不需要考慮大量機器管理的情況,因此多半不諳維運所需的技巧如配置管理一致性設計、自動化設計能力、大量伺服器部署技巧。

趨勢目前有十多位DevOps分散在不同專案中,平時這群DevOps又形成自己的內部社群,透過電子郵件或是不定期發起讀書會來分享自己處理DevOps問題的經驗或DevOps相關開源工具的使用經驗。目前,趨勢科技可以做到每30分鐘發布一次Alpha版本,包括部署和測試都全面自動化進行,每周再正式發布到上線環境中提供給外部顧客。

服務所有權從Ops轉移到Dev

導入DevOps之後,張懿表示,更重要的意義是,應用服務的所有權從Ops轉移到了Dev。陳彥宏以系統變更為例,過去是一種Request for Change(請求變更)的作法,研發部門得向維運部門提出系統變更的申請,但現在趨勢想要推動的是IWC策略(I want change)。研發人員自己做決定,只是通知維運部門,我們要進行變更了。

經過4年實戰嘗試,趨勢科技也累積了不少DevOps的實務作法,包括如結合了Puppet和git來實現基礎架構程式化(Infrastructure as code)、部署工作全面自動化和模組化、兼顧長期和即時預警的監控機制、效法敏捷開發的雙人協同學習策略等。

江盈宏表示,建立工具包是導入DevOps第一件必須完成的關鍵,透過第一個專案建立了適合自家環境的工具後,以及部署各項環境所需的相關自動化整合機制,後續就可以此為基礎來修改,快速將DevOps流程推廣到其他專案。接下來,我們將用另一篇文章來介紹趨勢科技幾年實戰經驗所累積出來的DevOps工具包。

相關報導請參考:DevOps變革三部曲(一)DevOps:搶先一步的IT競爭力


Advertisement

更多 iThome相關內容