DevOps還未徹底發(fā)展成熟。如果用人的一生來比喻,那么DevOps還只是位少年——雖然早已脫離襁褓,但遠沒有長大成人。就在這時,歷史性的挑戰(zhàn)突然出現(xiàn),要求其在COVID-19疫情的沖擊之下,快速發(fā)展為加快軟件開發(fā)工作的全面實施方案。
作為一名“少年”,DevOps在核心要素方面當然無需含糊——協(xié)作為王、自動化至上以及全面實現(xiàn)“持續(xù)”特性,包括持續(xù)集成、部署、測試以及改進。
而持續(xù)改進的一大重要組成部分,就是主動找出當前阻礙獲得成功的錯誤,進而努力避免這些錯誤??v觀眾多全球財富兩千強企業(yè),都能發(fā)現(xiàn)其中不少都在三大DevOps錯誤中折戟沉沙。下面來看如何有效避免。
開發(fā)人員負擔過重
隨著數(shù)字化轉(zhuǎn)型在2021年成為全體CIO的首要工作,企業(yè)自然希望以創(chuàng)紀錄的速度交付足以改變游戲規(guī)則的強大功能,借此迅速擊敗競爭對手。
這當然需要整個團隊的共同努力,包括開發(fā)人員、產(chǎn)品負責人、測試人員、運營以及網(wǎng)站可靠性工程師(SRE)等。但是,每當有某些功能或方案未能及時交付,鍋該由誰來背?幾乎永遠是開發(fā)者。另一個殘酷的現(xiàn)實在于,絕大多數(shù)企業(yè)很難吸引到一流的開發(fā)人員,留住少數(shù)頂尖人才就成為一項長期而艱難的挑戰(zhàn)。
總之,企業(yè)萬萬不可對開發(fā)人員予取予求。只有為開發(fā)者們留下充足的空間,他們才能承擔起測試與安全保護等職責。
當然,質(zhì)量保證與安全工作并不能只靠開發(fā)者的自覺,而應在項目之初就以制度性形式存在。要強調(diào)的是,千萬不要讓這樣的工作流程進一步加大本就十分沉重的開發(fā)者負擔。否則,頂尖開發(fā)人才很可能投入其他企業(yè)組織的懷抱。
用統(tǒng)一要求衡量每一位開發(fā)者
每個組織以及每位團隊成員都可以通過正確的方式得到適當?shù)呐嘤柵c支持,進而為DevOps成功做出貢獻。但是,不同成員做出貢獻的方式也有所區(qū)別,不應統(tǒng)一要求。
任何行動、流程或技術(shù)的早期采用者,往往正是組織內(nèi)最為耀眼的超級巨星、業(yè)務骨干。他們對自己的工作內(nèi)容充滿熱情,關(guān)注領(lǐng)域內(nèi)的各類新興趨勢,而且總有強大的內(nèi)驅(qū)力在工作上做出種種嘗試。無論是不斷修改當前解決方案、還是尋找新的可行方法、再到為廣泛社區(qū)做出貢獻,他們始終參與其中。沒錯,這些都是非常重要的習慣,也必然會帶來令人印象深刻的成果。
但千萬別把這些當成普適性的評判標準。大多數(shù)應用交付人員并不是這么工作的,或者說并不一定具有這種冒險意識以及將新事物帶入生活的原始沖動。他們投入了數(shù)年甚至數(shù)十年不斷完善自己掌握的技巧,希望以最高效、最順暢的“老辦法”持續(xù)處理問題。
此外,不同的團隊往往具有不同的技能、舒適區(qū)、優(yōu)先級,而且很可能需要面對不同的應用棧與合規(guī)性/治理要求。具體來講,初創(chuàng)團隊往往更關(guān)注DevOps方法與工具集,而負責后端的團隊則更多偏向傳統(tǒng)SAP。非要以統(tǒng)一的要求衡量雙方,只會徒增煩惱。
當然,DevOps本身也是一項需要全面規(guī)劃的事務。
如果希望在整個企業(yè)之內(nèi)加速創(chuàng)新,那么每位員工都應該在DevOps當中扮演自己的角色,包括堅持貫徹DevOps提出的核心理念、在工具集與實踐方面提供其他員工友好型選項、在涉及不同系統(tǒng)及項目的各小組中引入可見性與治理層。
未充分了解整體用戶體驗
如今的用戶對于功能往往抱有極高期望,但對問題的容忍度卻極低。Forrester最近發(fā)現(xiàn),單是在客戶體驗層面的改進也足以為企業(yè)帶來巨大的利潤影響。他們估計,客戶體驗系數(shù)每增加1點(0到100),年收入即可實現(xiàn)顯著提升——汽車行業(yè)為11億美元、零售行業(yè)為4.96億美元,電信行業(yè)為3.88億美元。反之,如果客戶體驗有所下降,也必定引發(fā)相應的收入損失。
當然,團隊中的每位成員都希望打造并推出用戶喜愛的軟件。但是,不同的職能角色往往抱持著不同的觀點、個人優(yōu)勢與短板。從規(guī)劃、測試、發(fā)布再到監(jiān)控,我們需要真正全面地了解業(yè)務,并通過每一位團隊成員的參與有力捍衛(wèi)整體用戶體驗。
不少DevOps團隊目前仍在依靠底層技術(shù),例如在單元測試中,來確定候選發(fā)布版本是否可以安全推出。遺憾的是,這樣的測試往往只能發(fā)現(xiàn)編碼錯誤,卻無法保證卓越的產(chǎn)品體驗。要達成體驗改進的目標,需要做到如下三點:
第一,采取基于風險的測試,借此快速判斷是否需要根據(jù)某些測試結(jié)果叫停項目發(fā)布。
第二,對事務進行端到端功能測試,例如從移動端到API、SAP與Salesforce等打包應用,乃至自定義應用程序與大型機等。
第三,通過負載/性能測試保證應用程序能夠及時擴展并應對需求激增。
以上三大誤區(qū)在任何組織內(nèi)都很常見。畢竟DevOps還是少年,有時難免帶來一些麻煩——但只要悉心陪伴它的成長,相信DevOps終將成為企業(yè)發(fā)展道路上的強大助力。