?性能分析的價(jià)值超出了服務(wù)負(fù)載所需的計(jì)算資源或滿足峰值需求所需的應(yīng)用實(shí)例數(shù)量的估計(jì)。性能顯然與成功企業(yè)的基本要素掛鉤。它揭示了用戶的總體體驗(yàn),包括確定什么會(huì)拖慢客戶預(yù)期的響應(yīng)時(shí)間,通過設(shè)計(jì)滿足帶寬要求的內(nèi)容交付來提高客戶粘性,選擇最佳設(shè)備,最終幫助企業(yè)發(fā)展業(yè)務(wù)。
應(yīng)用程序的性能決定了軟件能多快完成預(yù)期任務(wù)。這回答有關(guān)應(yīng)用程序的幾個(gè)問題,例如:
峰值負(fù)載下的響應(yīng)時(shí)間
與替代方案相比,它易于使用,受支持的功能和用例
運(yùn)營成本(CPU 使用率、內(nèi)存需求、數(shù)據(jù)吞吐量、帶寬等)
問題
當(dāng)然,這是對業(yè)務(wù)服務(wù)的性能工程價(jià)值的過度簡化。為了理解在完成我剛剛所描述事情背后的挑戰(zhàn),讓我們把它放到一個(gè)真實(shí)的稍微有點(diǎn)復(fù)雜的場景中。
現(xiàn)實(shí)世界的應(yīng)用程序可能托管在云端。應(yīng)用程序可以利用非常大(或概念上是無窮大)的計(jì)算資源。在硬件和軟件方面的需求將通過云來滿足。從事開發(fā)工作的開發(fā)人員將使用云交付功能來實(shí)現(xiàn)更快的編碼和部署。云托管不是免費(fèi)的,但成本開銷與應(yīng)用程序的資源需求成正比。
除了搜索即服務(wù)Search as a Service(SaaS)、平臺(tái)即服務(wù)Platform as a Service(PaaS)、基礎(chǔ)設(shè)施即服務(wù)Infrastructure as a Service(IaaS)以及負(fù)載平衡即服務(wù)Load Balancing as a Service(LBaaS)之外,當(dāng)云端管理托管程序的流量時(shí),開發(fā)人員可能還會(huì)使用這些快速增長的云服務(wù)中的一個(gè)或多個(gè):
安全即服務(wù)Security as a Service?(SECaaS),可滿足軟件和用戶的安全需求
數(shù)據(jù)即服務(wù)Data as a Service?(DaaS),為應(yīng)用提供了用戶需求的數(shù)據(jù)
登錄即服務(wù)Logging as a Service?(LaaS),DaaS 的近親,提供了日志傳遞和使用的分析指標(biāo)
搜索即服務(wù)Search as a Service?(SaaS),用于應(yīng)用程序的分析和大數(shù)據(jù)需求
網(wǎng)絡(luò)即服務(wù)Network as a Service?(NaaS),用于通過公共網(wǎng)絡(luò)發(fā)送和接收數(shù)據(jù)
云服務(wù)也呈指數(shù)級(jí)增長,因?yàn)樗鼈兪沟瞄_發(fā)人員更容易編寫復(fù)雜的應(yīng)用程序。除了軟件復(fù)雜性之外,所有這些分布式組件的相互作用變得越來越多。用戶群變得更加多元化。該軟件的需求列表變得更長。對其他服務(wù)的依賴性變大。由于這些因素,這個(gè)生態(tài)系統(tǒng)的缺陷會(huì)引發(fā)性能問題的多米諾效應(yīng)。
例如,假設(shè)你有一個(gè)精心編寫的應(yīng)用程序,它遵循安全編碼實(shí)踐,旨在滿足不同的負(fù)載要求,并經(jīng)過徹底測試。另外假設(shè)你已經(jīng)將基礎(chǔ)架構(gòu)和分析工作結(jié)合起來,以支持基本的性能要求。在系統(tǒng)的實(shí)現(xiàn)、設(shè)計(jì)和架構(gòu)中建立性能標(biāo)準(zhǔn)需要做些什么?軟件如何跟上不斷變化的市場需求和新興技術(shù)?如何測量關(guān)鍵參數(shù)以調(diào)整系統(tǒng)以獲得最佳性能?如何使系統(tǒng)具有彈性和自我恢復(fù)能力?你如何更快地識(shí)別任何潛在的性能問題,并盡早解決?
進(jìn)入容器
軟件容器以微服務(wù)設(shè)計(jì)或面向服務(wù)的架構(gòu)(SoA)的優(yōu)點(diǎn)為基礎(chǔ),提高了性能,因?yàn)榘〉?、自足的代碼塊的系統(tǒng)更容易編碼,對其它系統(tǒng)組件有更清晰、定義良好的依賴。測試更容易,包括圍繞資源利用和內(nèi)存過度消耗的問題比在宏架構(gòu)中更容易確定。
當(dāng)擴(kuò)容系統(tǒng)以增加負(fù)載能力時(shí),容器應(yīng)用程序的復(fù)制快速而簡單。安全漏洞能更好地隔離。補(bǔ)丁可以獨(dú)立版本化并快速部署。性能監(jiān)控更有針對性,測量更可靠。你還可以重寫和“改版”資源密集型代碼,以滿足不斷變化的性能要求。
容器啟動(dòng)快速,停止也快速。它比虛擬機(jī)(VM)有更高效資源利用和更好的進(jìn)程隔離。容器沒有空閑內(nèi)存和 CPU 閑置。它們允許多個(gè)應(yīng)用程序共享機(jī)器,而不會(huì)丟失數(shù)據(jù)或性能。容器使應(yīng)用程序可移植,因此開發(fā)人員可以構(gòu)建并將應(yīng)用程序發(fā)送到任何支持容器技術(shù)的?Linux?服務(wù)器上,而不必?fù)?dān)心性能損失。容器生存在其內(nèi),并遵守其集群管理器(如 Cloud Foundry 的 Diego、Kubernetes、Apache Mesos 和 Docker Swarm)所規(guī)定的配額(比如包括存儲(chǔ)、計(jì)算和對象計(jì)數(shù)配額)。
容器在性能方面表現(xiàn)出色,而即將到來的 “serverless” 計(jì)算(也稱為功能即服務(wù)Function as a Service(FaaS))的浪潮將擴(kuò)大容器的優(yōu)勢。在 FaaS 時(shí)代,這些臨時(shí)性或短期的容器將帶來超越應(yīng)用程序性能的優(yōu)勢,直接轉(zhuǎn)化為在云中托管的間接成本的節(jié)省。如果容器的工作更快,那么它的壽命就會(huì)更短,而且計(jì)算量負(fù)載純粹是按需的。
?
評(píng)論