DevOps 是企業(yè)轉(zhuǎn)型的關(guān)鍵。但要明確的是,DevOps 是一個過程,而不是目標。從這個意義上說,實踐 DevOps 需要不斷優(yōu)化,不斷去學習、嘗試更好的方法。持續(xù)改進 DevOps 實踐是推進企業(yè)轉(zhuǎn)型的重要途徑。
就算是一些很知名的企業(yè),在將 DevOps 應用于其轉(zhuǎn)型戰(zhàn)略時,也會犯錯誤并面臨可怕的后果。不過,幸運的是,他們從失敗中吸取了寶貴的教訓。
【資料圖】
SlideShare:限制對生產(chǎn)環(huán)境的訪問
SlideShare 是全球最大的內(nèi)容分享社區(qū),很早就推出了 DevOps 模型以加快開發(fā)流程。
時間回到 2012 年,當時它還是一家員工不到 20 人的小型初創(chuàng)公司,開發(fā)團隊分散在舊金山和新德里,基礎設施相當復雜。
有一次,一位開發(fā)人員試圖使用一種新工具分析 MySQL 數(shù)據(jù)庫。當他開始更改數(shù)據(jù)庫中列的順序時,他不知道的是,這也改變了生產(chǎn)環(huán)境中的數(shù)據(jù)庫,最終導致 Slideshare.net 癱瘓,拒絕了試圖訪問它的六萬多個用戶。而且事故發(fā)生時,負責人并沒有意識到是該工具正在執(zhí)行操作,最后通過集體的努力,花了 15 分鐘才找出問題的根源。
時任運營工程師的 Sylvain Kalache 評論說,雖然 DevOps 與授權(quán)團隊中的每個人都相關(guān),但對生產(chǎn)環(huán)境的訪問應該僅限于少數(shù)能夠處理它的人。這就是為團隊和個人配置高級的、基于角色的訪問 (RBAC) 的重要性。AWS IAM 之類的工具對于確保每個人都可以訪問執(zhí)行他們的日常任務至關(guān)重要,但不能完全訪問可能會損害用戶體驗。在這種情況下,為了不會影響用戶,開發(fā)人員可以訪問暫存環(huán)境來嘗試該操作。
Knight Capital:自動化的黑暗面
Knight Capital 因為 DevOps 失敗付出了慘痛的代價。它是一家全球性金融服務公司,曾憑借其高頻交易算法,成為美國最大的股票交易商,在紐約證券交易所市場份額為 17.3%,
Knight Capital 使用了一個名為 SMARS 的內(nèi)部應用程序來處理股票市場的買單。這個應用程序已經(jīng)運行了很多年,它的代碼庫中有很多過時的部分。其中一個部分是名為 Power Peg 的功能,該功能處于非活動狀態(tài),但未從代碼庫中刪除。
2012 年,在為應用程序編寫新代碼時,新代碼無意中調(diào)用了 Knight Capital 忽略的 Power Peg 功能。結(jié)果,Knight Capital 的應用程序在短短幾分鐘內(nèi)就完成了價值數(shù)十億美元的采購訂單。這導致該公司支付了 4.6 億美元的罰款,并在一夜之間破產(chǎn)。
教訓:自動化非常強大,但如果使用不當,可能會導致重大事故。而且,隨著時間的推移,流程需要更新,需要在應用程序中引入新功能,以免更改發(fā)生沖突。
Workflowy:不要輕易分拆數(shù)據(jù)庫
Workflowy 是一個簡單而優(yōu)雅的生產(chǎn)力工具,并且一直在穩(wěn)步增長。為應對用戶增長,開發(fā)者需要對架構(gòu)進行優(yōu)化。由于數(shù)據(jù)庫變得龐大,于是他們決定,將一個大型數(shù)據(jù)庫分解為多個較小的數(shù)據(jù)庫。
在這個過程中,他們發(fā)現(xiàn),分解成多個小數(shù)據(jù)庫會減慢查詢速度并阻止用戶訪問數(shù)據(jù)。一些用戶無法從他們的移動設備同步數(shù)據(jù),而其他用戶則無法登錄 Web 應用程序。
經(jīng)過一番故障排除后,團隊發(fā)現(xiàn)其使用的 Web 服務器 (Apache) 存在一個從未遇到過的錯誤,在修復了該錯誤并試圖讓所有人重新登錄后,該網(wǎng)站又再次關(guān)閉了。
最后發(fā)現(xiàn),他們分解數(shù)據(jù)庫的過程是根本原因,并通過避免對數(shù)據(jù)庫的某種 “慢查詢” 的方式,保持了網(wǎng)站正常運行。此外,他們還升級了基礎設施以加快查詢速度。
教訓:分解數(shù)據(jù)庫可能會導致性能問題,甚至中斷,但是隔離關(guān)鍵問題并首先解決它們,這樣就可以更快地恢復服務。
IRS:遷移到云端
美國國稅局 (IRS) 并不以其技術(shù)實力而聞名。畢竟,它的工作是收稅,而不是推動技術(shù)創(chuàng)新。
這也許就是處理納稅申報表的 IRS 應用程序在 2016 年失敗的原因。一個處理數(shù)百萬美國人納稅申報的計算機服務器上的電壓調(diào)節(jié)器于 2 月 3 日開始出現(xiàn)故障。當一名技術(shù)人員努力解決這個問題時,備用電壓調(diào)節(jié)器也出現(xiàn)了故障。
事實上,40 年來,美國國稅局一直在嘗試更新其主要計算機系統(tǒng),但都失敗了。之后,還陸續(xù)爆出 “擁有 60 年歷史的 IT 系統(tǒng)因新硬件而在納稅日崩潰”、“計算機故障導致數(shù)千名納稅人收到錯誤信息” 等新聞。
教訓:在管理基礎架構(gòu)時,很多事情都可能出錯。解決方案是將基礎架構(gòu)遷移到云端。今天,云是運行應用程序最可靠的方式。將設置和維護物理硬件的工作交給云供應商,這樣就可以專注于最重要的事情 —— 運行和改進應用程序。
Instapaper:了解您的云供應商
Instapaper 是一款離線閱讀應用。最初,它以 Softlayer 作為其云供應商,但被 betaworks 公司收購后,轉(zhuǎn)移到了 AWS。但是團隊并不熟悉 AWS。
2017 年 2 月,Instapaper 出現(xiàn)了長時間的服務中斷。開發(fā)團隊注意到, AWS RDS 上的一個 MySQL 數(shù)據(jù)庫空間不足,深入挖掘之后發(fā)現(xiàn), 原來 2014 年 4 月之前創(chuàng)建的所有 RDS 數(shù)據(jù)庫的大小均限制為 2TB,而他們存儲用戶書簽的數(shù)據(jù)庫已經(jīng)達到了這個 2TB 的限制。
在與 AWS 團隊進行多次討論并獲得 Pinterest 開發(fā)人員的一些幫助后,Instapaper 使用 Aurora 對現(xiàn)有數(shù)據(jù)進行索引,并在具有更大大小限制的新實例中創(chuàng)建新數(shù)據(jù)庫。最終,服務恢復了。
教訓:需要了解使用的云供應商的限制。如果您使用多個云供應商,或者您從一個提供商遷移到另一個提供商,則尤其如此。
寫在最后:
無論是數(shù)據(jù)庫、硬件基礎設施、遺留代碼還是云供應商限制,在實踐 DevOps 時,可能會蹦出無數(shù)種你想不到的問題。不過,我們可以從失敗案例中習得一些經(jīng)驗教訓,盡量避免出現(xiàn)這些問題。比如,IRS 如果能更早地將基礎架構(gòu)遷移到云端,就不需要每年花費數(shù)千萬美元來解決各種本不應該出現(xiàn)的問題。如果 Knight Capital 能正確地使用自動化工具,也不會至于破產(chǎn)。
事實上,在項目設計階段就要考慮到,使用什么樣的工具或者說平臺能夠更好地實現(xiàn)產(chǎn)品功能。如果說有什么平臺能夠屏蔽基礎設施的多樣性,配置高級的訪問權(quán)限,能夠自動化聯(lián)動測試、智能預警,那非 SoFlu 軟件機器人莫屬了。
SoFlu 軟件機器人是飛算推出的全自動化軟件工程平臺,采用了通用的技術(shù)功能模塊,支持循環(huán)、條件判斷、函數(shù)調(diào)用等組件,用戶只要根據(jù)業(yè)務邏輯,通過拖拽方式進行參數(shù)配置,就能完成編程。而且,平臺統(tǒng)一了代碼規(guī)范,不依賴人工編碼、審碼,因此可以從源頭上保證代碼高質(zhì)量??偠灾?,SoFlu 軟件機器人通過可視化編程的方式滿足低門檻開發(fā)需求,輸入流程圖即可實現(xiàn)自動開發(fā)。
SoFlu 軟件機器人業(yè)務開發(fā)界面
SoFlu 軟件機器人能解決的不只是開發(fā)問題。事實上,在軟件項目開發(fā)過程中,風險幾乎無處不在。項目進度是否正常、軟件質(zhì)量是否嚴格把控、技術(shù)是否成熟、系統(tǒng)架構(gòu)是否符合性能指標等問題,都會威脅到軟件的最終交付結(jié)果。有效地識別、控制和管理風險,對項目的成功起著至關(guān)重要的作用。
而通過 SoFlu 軟件機器人,一人就能完成軟件開發(fā)、測試、運維一整套流程,不僅提高了開發(fā)和測試效率,保證了代碼質(zhì)量,還使軟件工程全流程擺脫對人力的依賴,解決了人才不足的問題。用 SoFlu 軟件機器人進行開發(fā),可以真正實現(xiàn) “一人一項目,十人抵百人”。
現(xiàn)在可申請免費試用 SoFlu 軟件機器人 30 天,申請鏈接:http://feisuanyz.mikecrm.com/9dW4GeZ
標簽: 應用程序 生產(chǎn)環(huán)境 基礎設施