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