提高應用程序性能的7個DevOps實踐
譯文DevOps 主要與開發(fā)人員和運營之間的合作有關,以改善生產(chǎn)中應用程序的交付和可靠性。最常見的最佳實踐旨在用更強大的自動化來取代在開發(fā)和運營團隊之間管理的手動、易出錯的程序。這包括用CI/CD(持續(xù)集成和持續(xù)交付)實現(xiàn)交付管道的自動化,用容器實現(xiàn)標準化配置,并將基礎設施配置為代碼。在運營方面,提高應用程序可靠性的 DevOps 最佳實踐包括提高應用程序的可觀察性,增加監(jiān)控,以及自動化云和基礎設施的操作。

但如何提高應用程序、數(shù)據(jù)庫、數(shù)據(jù)管道和云基礎設施的性能呢?本文將分享7個可以影響性能和用戶體驗DevOps 實踐和方法。
1. 從一開始就在應用程序中構(gòu)建安全實踐
DevOps 團隊最不需要的就是部署具有安全漏洞的新功能。安全中斷或降級會影響用戶體驗并產(chǎn)生重大的業(yè)務問題。一個 DevOps 的最佳實踐是,通過與信息安全部門在需求方面的合作,測試CI/CD管道內(nèi)的代碼漏洞,以及在軟件開發(fā)中實施其他安全實踐,來實現(xiàn)安全轉(zhuǎn)移。
Akamai 的高級開發(fā)人員倡導者 Mike Elissen 說:“應用程序可靠性的一個關鍵組成部分是可用性,采取適當?shù)拇胧﹣碚_保護應用程序免受 Web 應用程序攻擊、DDoS 攻擊等可能意味著保持在線和離線之間的區(qū)別?!?/p>
Elissen 說,向左轉(zhuǎn)移是從 DevOps 轉(zhuǎn)變?yōu)?DevSecOps 的一部分。他繼續(xù)說道,“我們看到在 DevOps 中添加安全性的‘左移’變得越來越明顯,最終創(chuàng)造了更強大的 devsecops 文化,并使更多的開發(fā)人員意識到并對其應用程序的安全性負責。”
2. 標準化架構(gòu)和基礎設施藍圖
Quali 產(chǎn)品管理副總裁 Amir Rozenberg 指出了一個影響團隊績效的問題。他說:“許多 DevOps 團隊發(fā)現(xiàn)自己正在組織有機增長的應用程序基礎架構(gòu)定義的混亂,這些定義是在早期真誠地開發(fā)的,以提高團隊在軟件開發(fā)生命周期中的效率?!?/p>
Rozenberg 詢問 DevOps 團隊是否應該采用自己動手的方法來創(chuàng)建環(huán)境,或者組織是否應該創(chuàng)建標準。他說:“推薦的方法是建立一個中心團隊,以藍圖的形式對環(huán)境進行建模,以使它們可靠、可重用和合規(guī)。然后,他們需要能夠分發(fā)這些基礎架構(gòu)定義,以便業(yè)務成員可以通過快速自助服務使用它們,無論是集成到自動化管道中還是以手動方式。”
3. 在 CI/CD 管道中建立可觀察性和持續(xù)測試
66degrees 的 DevOps 總監(jiān) Matt Sollie 認為 CI/CD 可以做的不僅僅是打包和推送代碼。他說:“并不是所有的 DevOps 原則都像持續(xù)交付或?qū)⒁磺袠?gòu)建為代碼一樣迷人或可見,但它們同樣重要。持續(xù)集成是成熟的 DevOps 態(tài)勢的一個組成部分,它可以極大地提高應用程序的可靠性,但需要目標、愿景和時間才能以有意義的方式構(gòu)建?!?/p>
Sollie 承認,實現(xiàn)可靠性和性能目標不僅需要有遠見,還需要對實踐和優(yōu)化架構(gòu)進行投資。“可觀察性是一項關鍵且昂貴的原則,因為可靠性不是開啟或關閉狀態(tài),需要細致入微的數(shù)據(jù)收集。借助所有云計算服務,為工作選擇正確的工具或服務可以帶來固有的可靠性和性能優(yōu)勢?!?/p>
敏捷開發(fā)團隊應該在他們的管道中實施什么來提高性能?以下是一些建議:
- 在增加部署頻率之前實施持續(xù)測試
- 考慮使用服務虛擬化來測試微服務和第三方 API
- 確保可觀察的 CI/CD 管道以改進故障檢測并隔離管道問題
4. 使用功能標志和金絲雀版本控制部署
部署不必是所有用戶一次性獲得所有更改的絕對轉(zhuǎn)換。代碼中的功能標志有助于配置和控制功能的可用性,而金絲雀發(fā)布策略使 DevOps 團隊能夠緩慢而有條不紊地推出新功能。
LaunchDarkly 的首席技術官兼聯(lián)合創(chuàng)始人 John Kodumal 補充說:“功能管理,特別是功能標志,正在迅速成為改進應用程序的整體可靠性和性能的首選開發(fā)實踐,同時允許開發(fā)人員不斷創(chuàng)新。通過使用功能標志,開發(fā)人員可以在生產(chǎn)前測試功能更新,以便在發(fā)布前解決問題?!?/p>
這些控件提高了可靠性和性能,同時也幫助開發(fā)團隊最大限度地減少了中斷。Kodumal 說:“功能標志提高了性能,同時為開發(fā)團隊提供了必要的控制來更新應用程序而不會中斷或停機。”
5. 建立嚴格的可觀察性和監(jiān)測標準
現(xiàn)在專注于 DevOps 職責的運維方面,團隊應該考慮幾個最佳實踐來提高應用程序性能,包括開發(fā)可觀察性標準和改進監(jiān)控。
Mindee 開發(fā)人員關系總監(jiān) Frédéric Harper 說:“ DevOps 必須實施嚴格的監(jiān)控和可觀察性流程,以確保應用程序的每個部分都正常工作并且服務器進程運行順暢。通過保護這一元素, DevOps 團隊可以收集有價值的信息,以了解用戶如何使用應用程序,可能防止未來出現(xiàn)問題,更容易支持客戶,并根據(jù)真實數(shù)據(jù)改進業(yè)務或架構(gòu)決策。”
6. 使用 AIOps 和自動化擴展監(jiān)控
在 web 2.0 時代,當出現(xiàn)中斷或性能問題時,運維人員只有少數(shù)日志文件和監(jiān)控工具來查看。如今,運行微服務、無服務器應用程序和多云數(shù)據(jù)庫意味著在解決事件和確定問題根本原因時需要參考更多的數(shù)據(jù)和工具。AIops 平臺可以集中監(jiān)控數(shù)據(jù),使用機器學習關聯(lián)警報,并幫助操作人員跨多個平臺自動響應和恢復,這有助于最大限度地減少性能影響。
BigPanda 產(chǎn)品營銷副總裁 Mohan Kompella 對此表示贊同:“AIOps 平臺可以幫助 DevOps 團隊保持工具的自主性和靈活性,同時還為集中式事件響應者提供他們所需的可見性,使其成為應對中斷的第一道防線?!?/p>
7. 定義 SLO 和錯誤預算
DevOps 團隊應該平衡哪些實踐產(chǎn)生最大收益并解決風險。這需要團隊就 DevOps 優(yōu)先級進行衡量、學習和協(xié)作,這在實施實踐和工具后的數(shù)月或數(shù)年內(nèi)可能無法實現(xiàn)收益時并不容易。
一種確定優(yōu)先級的方法是采用站點可靠性工程實踐、定義服務水平目標 (SLO) 和使用錯誤預算。當應用程序或微服務超出其錯誤預算時,它會向 DevOps 團隊發(fā)出信號,以找出原因并專注于解決方案。
Nobl9 的首席運營官 Kit Merker 說:“服務水平目標為工程團隊設定了明確的目標,以便更好地決定如何確定工作的優(yōu)先級。開發(fā)人員和 ITop 不僅可以以技術為中心,還可以轉(zhuǎn)向以服務為中心?!?/p>
DevOps 團隊有很多事情要做, DevOps 最佳實踐幫助團隊在加速開發(fā)和提高可靠性和性能之間取得平衡。成功的關鍵可能在于定義問題陳述、辯論方法、迭代解決方案和衡量影響。
原文標題:??7 devops practices to improve application performance??






















