AVt天堂网 手机版,亚洲va久久久噜噜噜久久4399,天天综合亚洲色在线精品,亚洲一级Av无码毛片久久精品

當(dāng)前位置:首頁(yè) > 科技  > 軟件

什么是性能工程?

來源: 責(zé)編: 時(shí)間:2023-09-20 21:54:52 263觀看
導(dǎo)讀作者 | 張旭海性能工程,是指通過設(shè)計(jì)、構(gòu)建工具鏈和工作流,從而對(duì)系統(tǒng)性能進(jìn)行持續(xù)改善和守護(hù)的一類實(shí)踐方法。本文將從起源開始探尋性能工程出現(xiàn)的必然性,進(jìn)而以軟件研發(fā)流程中處理性能問題和實(shí)施性能優(yōu)化時(shí)所遇到的挑

作者 | 張旭海uiz28資訊網(wǎng)——每日最新資訊28at.com

性能工程,是指通過設(shè)計(jì)、構(gòu)建工具鏈和工作流,從而對(duì)系統(tǒng)性能進(jìn)行持續(xù)改善和守護(hù)的一類實(shí)踐方法。uiz28資訊網(wǎng)——每日最新資訊28at.com

本文將從起源開始探尋性能工程出現(xiàn)的必然性,進(jìn)而以軟件研發(fā)流程中處理性能問題和實(shí)施性能優(yōu)化時(shí)所遇到的挑戰(zhàn)為出發(fā)點(diǎn),來討論性能工程的定義以及企業(yè)實(shí)踐性能工程的目標(biāo)。uiz28資訊網(wǎng)——每日最新資訊28at.com

uiz28資訊網(wǎng)——每日最新資訊28at.com

性能后置時(shí)代落幕

uiz28資訊網(wǎng)——每日最新資訊28at.com

近 30 年的互聯(lián)網(wǎng)大爆炸,讓各類傳統(tǒng)業(yè)務(wù)領(lǐng)域通過數(shù)字化迅速在互聯(lián)網(wǎng)藍(lán)海中占領(lǐng)自己的位置,從而實(shí)現(xiàn)了業(yè)績(jī)高增長(zhǎng)和投資高回報(bào)。uiz28資訊網(wǎng)——每日最新資訊28at.com

大量投資推動(dòng)了計(jì)算機(jī)技術(shù)的極大發(fā)展,也反過來影響了在線業(yè)務(wù)的企業(yè):只要乘著技術(shù)發(fā)展的東風(fēng),就能讓單位服務(wù)成本越來越低,而速度越來越快。uiz28資訊網(wǎng)——每日最新資訊28at.com

無論是通過調(diào)研數(shù)據(jù)還是從業(yè)者自身的感受,我們都會(huì)發(fā)現(xiàn),性能是在整個(gè)研發(fā)流程中被不斷后置的。架構(gòu)設(shè)計(jì)優(yōu)先考慮功能,代碼研發(fā)也是主要關(guān)心業(yè)務(wù),測(cè)試環(huán)節(jié)除了驗(yàn)證業(yè)務(wù)正確性,留給性能測(cè)試的時(shí)間少得可憐,還經(jīng)常遇到人力不足,那就“先上線再說”。uiz28資訊網(wǎng)——每日最新資訊28at.com

然而,這種性能后置,甚至無需考慮性能的時(shí)代可能即將落幕了。原因有三:uiz28資訊網(wǎng)——每日最新資訊28at.com

1. 計(jì)算機(jī)體系結(jié)構(gòu)發(fā)展放緩

uiz28資訊網(wǎng)——每日最新資訊28at.com

uiz28資訊網(wǎng)——每日最新資訊28at.com

圖源:《計(jì)算機(jī)體系結(jié)構(gòu):量化研究方法》uiz28資訊網(wǎng)——每日最新資訊28at.com

上圖展示了處理器性能在近 40 年間的發(fā)展趨勢(shì)。1986 年開始到 2003 年這段時(shí)間,處理器性能每年增加 52%,17 年性能翻了 25 倍。然而由于登納德縮放比例定律的終結(jié),單核性能無法再增長(zhǎng),導(dǎo)致 2003 年開始性能增長(zhǎng)的方向從單核轉(zhuǎn)向了多核,性能增速有所降低,但也依然稱得上高增長(zhǎng)。然而,隨著摩爾定律的逐漸失效,2015 年開始年均性能增速僅剩 3.5%,這種速度與先前相比可謂幾乎停滯了。uiz28資訊網(wǎng)——每日最新資訊28at.com

另外,在單核處理器主流的年代,處理器主要通過指令級(jí)并行來提升性能,這對(duì)軟件開發(fā)來說幾乎無感。而多核時(shí)代到來后,主要通過數(shù)據(jù)級(jí)并行(例如 SIMD)和線程級(jí)并行(多任務(wù))來提升性能,這種優(yōu)化很依賴代碼設(shè)計(jì),因此對(duì)程序員也提出了更高的要求。uiz28資訊網(wǎng)——每日最新資訊28at.com

總之,如果不發(fā)生大的技術(shù)變革,軟件性能再也無法簡(jiǎn)單的通過硬件的更新而大幅增長(zhǎng)了,然而隨著各種新奇功能的出現(xiàn),用戶對(duì)性能提升的需求卻絲毫未減。uiz28資訊網(wǎng)——每日最新資訊28at.com

2. 復(fù)雜系統(tǒng)性能治理愈發(fā)困難

uiz28資訊網(wǎng)——每日最新資訊28at.com

與硬件不同,得益于高度靈活的架構(gòu),軟件一直朝著擴(kuò)大規(guī)模的方向發(fā)展。為了治理不斷膨脹的軟件規(guī)模,軟件架構(gòu)從早年的單體應(yīng)用逐步發(fā)展到 SOA 架構(gòu),再到分布式、微服務(wù)架構(gòu)和云原生技術(shù)等。如今的軟件系統(tǒng)規(guī)模越來越大,越來越復(fù)雜,只有通過不斷的分層和分治才能有效的對(duì)其進(jìn)行控制和演進(jìn)。uiz28資訊網(wǎng)——每日最新資訊28at.com

uiz28資訊網(wǎng)——每日最新資訊28at.com

圖片uiz28資訊網(wǎng)——每日最新資訊28at.com

圖源:Uber 的微服務(wù)架構(gòu)圖uiz28資訊網(wǎng)——每日最新資訊28at.com

然而,正因?yàn)閷?duì)系統(tǒng)架構(gòu)的拆分,導(dǎo)致服務(wù)間的交互早已不再是單個(gè)函數(shù)的調(diào)用,而是跨進(jìn)程調(diào)用甚至遠(yuǎn)程調(diào)用。正如上圖所示的Uber 的微服務(wù)架構(gòu)圖,復(fù)雜的調(diào)用鏈路上任何一個(gè)環(huán)節(jié)都有可能存在性能瓶頸。系統(tǒng)間依賴的復(fù)雜度越高,出現(xiàn)性能阻塞點(diǎn)的概率就越大,如果不加以治理,其結(jié)果就是運(yùn)行低效和難以擴(kuò)展。uiz28資訊網(wǎng)——每日最新資訊28at.com

3. 無法忽視的成本增速

uiz28資訊網(wǎng)——每日最新資訊28at.com

隨著在線業(yè)務(wù)的逐漸飽和,疊加多變的經(jīng)濟(jì)形勢(shì),企業(yè)越來越感受到基礎(chǔ)設(shè)施的巨大成本對(duì)經(jīng)營(yíng)產(chǎn)生的顯著影響。uiz28資訊網(wǎng)——每日最新資訊28at.com

uiz28資訊網(wǎng)——每日最新資訊28at.com

圖源:2023 State of the Cloud Reportuiz28資訊網(wǎng)——每日最新資訊28at.com

據(jù)_2023 State of the Cloud Report_顯示,云成本管理十年來第一次超過了云安全,成為企業(yè)用云的頭號(hào)挑戰(zhàn)。同時(shí),公有云支出平均超出企業(yè)預(yù)算 18%,并且云成本仍在逐年增長(zhǎng)。成本的增長(zhǎng)驅(qū)使人們想盡辦法提升資源的利用率和分配效率,這也引領(lǐng)了近些年虛擬化技術(shù)和容器化技術(shù)的發(fā)展趨勢(shì)。uiz28資訊網(wǎng)——每日最新資訊28at.com

但在 CNCF 發(fā)布的 _FINOPS FOR KUBERNETES_ 中顯示,即便在容器技術(shù)大幅提升資源利用率的情況下,仍有 68% 的企業(yè)表示在遷移至 K8s 后其計(jì)算資源成本反倒增加了。畢竟,遷移 K8s 給系統(tǒng)引入了新的復(fù)雜度,也引入了適配和學(xué)習(xí)的隱性成本。uiz28資訊網(wǎng)——每日最新資訊28at.com

通過對(duì)系統(tǒng)進(jìn)行更深層次的觀測(cè),發(fā)現(xiàn)性能劣化問題和性能阻塞點(diǎn)進(jìn)而優(yōu)化性能,能夠在提供同樣服務(wù)水平的前提下降低硬件開銷,充分利用硬件算力,并改善用戶體驗(yàn),從而在多個(gè)角度降低成本。因此在如今這樣成本敏感的時(shí)代,性能優(yōu)化意義非凡。uiz28資訊網(wǎng)——每日最新資訊28at.com

融入性能并不容易

uiz28資訊網(wǎng)——每日最新資訊28at.com

即便是軟件性能比以往任何時(shí)候都更重要,但想要順利地把性能融入研發(fā)工作流,卻并不是件容易的事。uiz28資訊網(wǎng)——每日最新資訊28at.com

首先,現(xiàn)有的成熟研發(fā)流程中,性能往往被忽視。

uiz28資訊網(wǎng)——每日最新資訊28at.com

正如前文提到的,現(xiàn)有研發(fā)流程一般只會(huì)在測(cè)試階段安排少量性能測(cè)試內(nèi)容,而其他各研發(fā)環(huán)節(jié)都沒有對(duì)性能形成固定的認(rèn)識(shí)。uiz28資訊網(wǎng)——每日最新資訊28at.com

設(shè)計(jì)階段,架構(gòu)師通常會(huì)基于自身的經(jīng)驗(yàn)和知識(shí),進(jìn)行一定程度的性能考量,但大都不會(huì)輸出完整的性能建模方案和驗(yàn)證方法。uiz28資訊網(wǎng)——每日最新資訊28at.com

開發(fā)階段,程序員也是在完成業(yè)務(wù)開發(fā)之余,零散的寫一些性能相關(guān)的代碼,且不太可能提供完整的性能測(cè)試用例。uiz28資訊網(wǎng)——每日最新資訊28at.com

測(cè)試階段,雖然有性能測(cè)試,但是否覆蓋了關(guān)鍵性能路徑?測(cè)試方法是否存在偏頗?也是一筆糊涂賬。抓緊測(cè)完按時(shí)上線永遠(yuǎn)是第一位。uiz28資訊網(wǎng)——每日最新資訊28at.com

uiz28資訊網(wǎng)——每日最新資訊28at.com

uiz28資訊網(wǎng)——每日最新資訊28at.com

上述流程現(xiàn)狀實(shí)際上是把性能問題推到了 Day2。測(cè)試階段發(fā)現(xiàn)性能問題已經(jīng)很遲,而倘若上線后再出性能故障,一定會(huì)大動(dòng)干戈,傷筋動(dòng)骨,甚至要調(diào)整架構(gòu)。習(xí)慣了“性能后置”,想要打破現(xiàn)有流程,引入新的環(huán)節(jié),對(duì)已經(jīng)形成思維定式的研發(fā)團(tuán)隊(duì)實(shí)在是很不容易。uiz28資訊網(wǎng)——每日最新資訊28at.com

其次,性能優(yōu)化非常依賴專家經(jīng)驗(yàn),難以規(guī)模化。

uiz28資訊網(wǎng)——每日最新資訊28at.com

性能問題是復(fù)雜且多樣的,其場(chǎng)景可能介于 Cynifin 框架中 Complicated 和 Complex 之間,需要通過對(duì)問題審慎的分析和對(duì)系統(tǒng)深入的洞察才有可能找到正確的優(yōu)化路徑。uiz28資訊網(wǎng)——每日最新資訊28at.com

uiz28資訊網(wǎng)——每日最新資訊28at.com

uiz28資訊網(wǎng)——每日最新資訊28at.com

uiz28資訊網(wǎng)——每日最新資訊28at.com

性能優(yōu)化的實(shí)施者不僅需要對(duì)被分析系統(tǒng)的整體架構(gòu)和關(guān)鍵業(yè)務(wù)路徑有清晰的認(rèn)識(shí),還要掌握系統(tǒng)層面的基礎(chǔ)知識(shí)和原理,以及各種性能分析工具的使用。此外,為了提升定位問題和尋找優(yōu)化方向的成功率,性能優(yōu)化方法和理論以及大量的實(shí)踐經(jīng)驗(yàn)也不可或缺。uiz28資訊網(wǎng)——每日最新資訊28at.com

以上要求對(duì)一般的研發(fā)人員來說挑戰(zhàn)極大,因此實(shí)際當(dāng)中遇到性能問題往往需要依賴性能專家和領(lǐng)域?qū)<业墓餐Γ鎸?duì)多種多樣的性能問題,專家資源往往“捉襟見肘”,增加時(shí)間成本的同時(shí)也難以規(guī)模化推進(jìn)性能改進(jìn)。uiz28資訊網(wǎng)——每日最新資訊28at.com

再次,孤立工具給研發(fā)人員造成了極高的認(rèn)知負(fù)載。

uiz28資訊網(wǎng)——每日最新資訊28at.com

正因?qū)<屹Y源的稀缺性,性能優(yōu)化通常會(huì)首先由研發(fā)人員嘗試介入。實(shí)施優(yōu)化的前提是數(shù)據(jù)收集和問題分析,即便是如今的可觀測(cè)系統(tǒng)越來越強(qiáng)大,但在進(jìn)行性能分析和系統(tǒng)剖析時(shí)大都還是會(huì)依賴外部采集分析工具。uiz28資訊網(wǎng)——每日最新資訊28at.com

然而,現(xiàn)實(shí)是不同的編程語言、技術(shù)框架、中間件和操作系統(tǒng)都有自己的一套實(shí)用工具,這些工具之間的使用存在差異,關(guān)注點(diǎn)與數(shù)據(jù)格式也不盡相同。對(duì)各種工具的熟悉和使用存在可觀的成本與學(xué)習(xí)負(fù)擔(dān),也導(dǎo)致對(duì)人員能力的特殊需求。uiz28資訊網(wǎng)——每日最新資訊28at.com

uiz28資訊網(wǎng)——每日最新資訊28at.com

uiz28資訊網(wǎng)——每日最新資訊28at.com

圖源:_Linux Performance Observability Toolsuiz28資訊網(wǎng)——每日最新資訊28at.com

有過分析性能問題經(jīng)驗(yàn)的人都知道,選擇并使用數(shù)種工具,在眾多的運(yùn)行結(jié)果中進(jìn)行數(shù)據(jù)關(guān)聯(lián)來尋找問題蹤跡,是性能分析和優(yōu)化工作的日常。由于數(shù)據(jù)缺少關(guān)聯(lián)性,展現(xiàn)形式也不夠直觀,使得這類分析工作存在巨大的認(rèn)知負(fù)載。對(duì)大多數(shù)應(yīng)用開發(fā)者來說,這種高認(rèn)知負(fù)載導(dǎo)致了在性能優(yōu)化工作上的巨大負(fù)擔(dān)。uiz28資訊網(wǎng)——每日最新資訊28at.com

落地工程化方法——性能工程

uiz28資訊網(wǎng)——每日最新資訊28at.com

基于前面提到的在實(shí)施性能優(yōu)化過程中的問題和挑戰(zhàn),我們期望通過設(shè)計(jì)、構(gòu)建工具鏈和研發(fā)工作流,來落地稱為 “性能工程” 的工程化方法,以實(shí)現(xiàn)標(biāo)準(zhǔn)化和規(guī)模化的系統(tǒng)性能持續(xù)改善及守護(hù)。uiz28資訊網(wǎng)——每日最新資訊28at.com

為了明確這種工程化方案的內(nèi)涵以更好的指導(dǎo)工程落地,我們嘗試定義性能工程的目標(biāo):uiz28資訊網(wǎng)——每日最新資訊28at.com

DevPerfOps:構(gòu)建性能工程反饋閉環(huán)

uiz28資訊網(wǎng)——每日最新資訊28at.com

為了改變研發(fā)工作流中忽視性能的現(xiàn)狀,通過在完整 DevOps 流中引入性能工程改造點(diǎn),以實(shí)現(xiàn)嵌入性能工程的研發(fā)工作流反饋閉環(huán)。uiz28資訊網(wǎng)——每日最新資訊28at.com

uiz28資訊網(wǎng)——每日最新資訊28at.com

uiz28資訊網(wǎng)——每日最新資訊28at.com

uiz28資訊網(wǎng)——每日最新資訊28at.com

  • 架構(gòu)設(shè)計(jì)階段,引入性能建模過程,產(chǎn)出對(duì)系統(tǒng)總體性能目標(biāo)的定義和指標(biāo)要求,以及在系統(tǒng)架構(gòu)層面的性能建模,和性能關(guān)注點(diǎn)地圖。
  • 代碼研發(fā)階段,根據(jù)性能設(shè)計(jì)和性能目標(biāo),基于最佳實(shí)踐進(jìn)行開發(fā),并通過用例測(cè)試進(jìn)行動(dòng)態(tài)分析,給出更充實(shí)的優(yōu)化方案和建議。
  • 測(cè)試驗(yàn)證階段,由于性能指標(biāo)和代碼實(shí)現(xiàn)已經(jīng)齊備,可以通過在測(cè)試環(huán)境的持續(xù)監(jiān)控和仿真測(cè)試來對(duì)系統(tǒng)性能進(jìn)行評(píng)估。
  • 運(yùn)營(yíng)維護(hù)階段,通過觀測(cè)手段對(duì)生產(chǎn)系統(tǒng)進(jìn)行分析和剖析,產(chǎn)出性能變化趨勢(shì)和優(yōu)化建議,真實(shí)環(huán)境的場(chǎng)景和數(shù)據(jù)沉淀后形成知識(shí)。
  • 版本迭代階段,基于設(shè)計(jì)目標(biāo)和實(shí)際分析結(jié)果,建立性能基線,用于新版本發(fā)布前的性能看護(hù),以快速識(shí)別劣化點(diǎn)。

上述全流程方法,從設(shè)計(jì)規(guī)劃階段開始關(guān)注性能,到運(yùn)營(yíng)階段完成分析和看護(hù),能形成性能工程的持續(xù)反饋閉環(huán),也能實(shí)現(xiàn)研發(fā)性能左移。uiz28資訊網(wǎng)——每日最新資訊28at.com

固化專家經(jīng)驗(yàn)形成知識(shí)庫(kù),沉淀性能優(yōu)化標(biāo)準(zhǔn)實(shí)踐

uiz28資訊網(wǎng)——每日最新資訊28at.com

通過持續(xù)的指標(biāo)檢測(cè),形成性能指標(biāo)數(shù)據(jù)庫(kù),將積累的性能指標(biāo)在不同系統(tǒng)之間關(guān)聯(lián),能夠從趨勢(shì)上洞悉業(yè)務(wù)變化從而以數(shù)據(jù)驅(qū)動(dòng)架構(gòu)設(shè)計(jì)決策。uiz28資訊網(wǎng)——每日最新資訊28at.com

對(duì)日常性能分析和優(yōu)化的實(shí)踐經(jīng)驗(yàn)進(jìn)行總結(jié)提煉,形成特定場(chǎng)景的性能分析流程、性能劣化反模式,以及性能優(yōu)化思路,固化進(jìn)知識(shí)庫(kù)以供參考。知識(shí)庫(kù)使業(yè)務(wù)研發(fā)人員也能基于標(biāo)準(zhǔn)化流程嘗試解決性能問題,這極大地降低了性能專家的工作量,使其能更專注于少量疑難雜癥的解決。uiz28資訊網(wǎng)——每日最新資訊28at.com

形成一定規(guī)模的知識(shí)庫(kù)后,一方面能夠基于知識(shí)沉淀出方法,進(jìn)而研發(fā)出公共平臺(tái)組件一勞永逸的解決同類問題。另一方面能夠通過機(jī)器學(xué)習(xí)的手段,對(duì)發(fā)現(xiàn)的性能問題給出解決方法建議和步驟,進(jìn)一步降低性能優(yōu)化的難度。uiz28資訊網(wǎng)——每日最新資訊28at.com

自助化性能分析,降低工具學(xué)習(xí)和使用成本

uiz28資訊網(wǎng)——每日最新資訊28at.com

通過構(gòu)建平臺(tái)化的性能工程能力,為研發(fā)人員提供一站式的性能分析工具集和自助式使用體驗(yàn)。在該場(chǎng)景中,研發(fā)團(tuán)隊(duì)扮演需求提出方,平臺(tái)團(tuán)隊(duì)扮演能力提供方。uiz28資訊網(wǎng)——每日最新資訊28at.com

通過建設(shè)可觀測(cè)體系,平臺(tái)可為研發(fā)團(tuán)隊(duì)提供開箱即用的監(jiān)控能力市場(chǎng),常見的如 APM、全鏈路觀測(cè)等,實(shí)現(xiàn)對(duì)系統(tǒng)各類性能指標(biāo)的一鍵監(jiān)控。uiz28資訊網(wǎng)——每日最新資訊28at.com

通過封裝各類性能分析工具集,以幫助研發(fā)團(tuán)隊(duì)通過簡(jiǎn)單的操作就可以對(duì)不同環(huán)境下運(yùn)行的各類異構(gòu)應(yīng)用、中間件、系統(tǒng)甚至硬件進(jìn)行數(shù)據(jù)采集和即時(shí)分析,并生成可視化友好的分析報(bào)告,如火焰圖、調(diào)用圖、內(nèi)存地圖、請(qǐng)求分析圖、線程分析圖等。uiz28資訊網(wǎng)——每日最新資訊28at.com

通過擴(kuò)展持續(xù)交付流水線,允許研發(fā)團(tuán)隊(duì)將各類性能指標(biāo)和測(cè)試用例在流水線上集成和關(guān)聯(lián),以方便形成性能基線,并為性能看護(hù)提供基礎(chǔ)設(shè)施和流程自動(dòng)化的支持,以實(shí)現(xiàn)持續(xù)的性能改善,防止性能劣化。uiz28資訊網(wǎng)——每日最新資訊28at.com

如何開始?

uiz28資訊網(wǎng)——每日最新資訊28at.com

本文先討論了性能問題日趨嚴(yán)峻且不容忽視,之后引出了研發(fā)團(tuán)隊(duì)在處理性能問題時(shí)的現(xiàn)狀問題和挑戰(zhàn),然后對(duì)應(yīng)每一種問題,提出了性能工程的實(shí)現(xiàn)目標(biāo)。uiz28資訊網(wǎng)——每日最新資訊28at.com

那么,如何才能開始建設(shè)性能工程體系?企業(yè)落地性能工程的實(shí)踐有哪些?怎樣評(píng)價(jià)企業(yè)性能工程建設(shè)的水平?uiz28資訊網(wǎng)——每日最新資訊28at.com

請(qǐng)看后續(xù)系列文章。uiz28資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://www.tebozhan.com/showinfo-26-10598-0.html什么是性能工程?

聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。郵件:2376512515@qq.com

上一篇: 單元測(cè)試的重要性:編寫更安全、更可靠的代碼

下一篇: 使用二進(jìn)制字面量在現(xiàn)代C++中的應(yīng)用

標(biāo)簽:
  • 熱門焦點(diǎn)
Top