通過適當(dāng)?shù)姆?wù)和設(shè)計,可以提升企業(yè)云應(yīng)用程序的性能。企業(yè)需要考慮一些元素以優(yōu)化其工作負(fù)載。
很多企業(yè)致力于追求最佳的應(yīng)用程序性能,但實(shí)現(xiàn)它并非易事。在基于主機(jī)的內(nèi)部部署IT環(huán)境中,企業(yè)必須提供適當(dāng)調(diào)整的資源以實(shí)現(xiàn)性能目標(biāo)。而采用云計算技術(shù)將使這些考慮因素變得更加復(fù)雜,因為它限制了用戶可以定制基礎(chǔ)設(shè)施和其他可用功能的程度。
雖然并沒有哪一個云計算架構(gòu)可以保證每個應(yīng)用程序的最佳性能,但是一些服務(wù)和實(shí)踐可以提高云計算性能。
1.選擇適當(dāng)?shù)膶?shí)例
如果組織了解其工作負(fù)載的資源需求,并為其配置具有適當(dāng)特征的實(shí)例類型,則會看到深刻的結(jié)果。虛擬機(jī)是云中最常見的實(shí)例類型,盡管容器的應(yīng)用正在快速增長。
其目標(biāo)是使用最佳分配的虛擬CPU(vCPU)、內(nèi)存和專用特征來調(diào)整實(shí)例的大小。如果實(shí)例太大,額外的資源對云計算工作負(fù)載性能并沒有好處,最終會浪費(fèi)資金。如果實(shí)例太小,則會影響負(fù)載性能,如果工作負(fù)載完全運(yùn)行的話很難應(yīng)對。
云計算提供商提供無數(shù)的實(shí)例類型,每種類型都具有vCPU、內(nèi)存、存儲和網(wǎng)絡(luò)的獨(dú)特組合。可以針對特定任務(wù)定制這些虛擬機(jī)。例如,國內(nèi)服務(wù)器,AWS公司的EC2 A1實(shí)例適合橫向擴(kuò)展和ARM工作負(fù)載。另一方面,M4實(shí)例平衡了不同應(yīng)用程序的資源,并有一些針對計算密集型工作負(fù)載、內(nèi)存密集型應(yīng)用程序、人工智能等進(jìn)行了優(yōu)化的云計算實(shí)例。這些使得組織必須選擇正確的選項。
2.實(shí)施自動擴(kuò)展服務(wù)
傳統(tǒng)上,企業(yè)將IT資源擴(kuò)展作為一項臨時工作。由于IT資源有限且在企業(yè)的所有權(quán)范圍內(nèi),因此幾乎不需要快速、動態(tài)或自主地進(jìn)行擴(kuò)展。
但是,公共云計算是動態(tài)發(fā)展的。公共云提供了按需添加或刪除實(shí)例和相關(guān)資源的潛力。 AWS、谷歌云和Microsoft Azure均提供負(fù)載平衡和自動擴(kuò)展功能。
組織必須實(shí)施適當(dāng)?shù)囊?guī)則集,以決定何時以及如何擴(kuò)展,以便提高云計算性能。在許多情況下,監(jiān)控服務(wù)跟蹤負(fù)載特性,例如平均vCPU利用率。當(dāng)工作負(fù)載超過定義的利用率閾值時,監(jiān)視警報會觸發(fā)自動擴(kuò)展服務(wù),該服務(wù)遵循預(yù)定義的計劃來添加資源,并設(shè)置負(fù)載平衡首選項。當(dāng)負(fù)載降至某個閾值以下時,自動擴(kuò)展服務(wù)可以反轉(zhuǎn)該過程并撤回不需要的資源。
云計算優(yōu)化的重要性
如果實(shí)施得當(dāng),自動擴(kuò)展可以無縫地維護(hù)用戶的工作負(fù)載性能(例如響應(yīng)能力),同時還可以管理云計算成本。
3.實(shí)施緩存服務(wù)
應(yīng)用程序需要數(shù)據(jù),但訪問存儲會降低響應(yīng)速度,尤其是當(dāng)資源遠(yuǎn)程或擁有多租戶訪問權(quán)限時。緩存是放置在盡可能快的存儲中的頻繁訪問數(shù)據(jù)的副本,位于盡可能靠近應(yīng)用程序的位置。與使用常規(guī)存儲等待數(shù)據(jù)相比,應(yīng)用程序可以使用緩存信息更快地執(zhí)行涉及數(shù)據(jù)的任務(wù)。云中可用的緩存服務(wù)包括Azure Cache for Redis、Amazon ElastiCache和Google App Engine Memcache。
由于緩存本身是數(shù)據(jù)副本,因此如果原始數(shù)據(jù)發(fā)生更改,則可能會導(dǎo)致問題。應(yīng)用程序開發(fā)人員需要規(guī)劃如何更新緩存內(nèi)容,以確保主體數(shù)據(jù)存儲和緩存之間的連續(xù)性。云計算提供商提供了豐富的文檔和參考架構(gòu),以幫助完成設(shè)計過程。
4.采用微服務(wù)架構(gòu)
單片應(yīng)用程序?qū)⒅饕匦院凸δ芊庋b在單個可執(zhí)行結(jié)構(gòu)中。這是一種久經(jīng)考驗的軟件開發(fā)方法,但是整體可能會對云中的可擴(kuò)展性和性能帶來挑戰(zhàn)。當(dāng)傳統(tǒng)的單片應(yīng)用程序達(dá)到其性能極限時,必須部署整個應(yīng)用程序的全新實(shí)例。
微服務(wù)將應(yīng)用程序分解為一系列相互關(guān)聯(lián)的程序,這些程序單獨(dú)部署、操作和擴(kuò)展。這些獨(dú)立服務(wù)通過API協(xié)同工作,以提供應(yīng)用程序的特性和功能。因此,當(dāng)一項服務(wù)對其性能限制征稅時,只有該服務(wù)必須向外擴(kuò)展。它可以成為管理現(xiàn)代應(yīng)用程序的一種更快、資源效率更高的方法。
微服務(wù)組件可以部署到小型虛擬機(jī)上,但通常依賴于協(xié)調(diào)的容器平臺,如Azure Service Fabric。
5.采用事件驅(qū)動的架構(gòu)
無服務(wù)器計算已經(jīng)獲得了開發(fā)人員的極大關(guān)注,事件驅(qū)動的架構(gòu)可以在無服務(wù)器的云計算服務(wù)上運(yùn)行,例如AWS Lambda,Azure Functions和Google Cloud Functions。
雖然服務(wù)器對于在后端操作事件驅(qū)動的功能至關(guān)重要,但其目的是避免傳統(tǒng)虛擬機(jī)或容器實(shí)例的部署和長期操作。而與此相反,企業(yè)開發(fā)人員將某些軟件行為或功能的代碼加載到云平臺中,在云平臺中,只有在某些現(xiàn)實(shí)世界或程序化事件觸發(fā)時才會部署和運(yùn)行。功能完成后,它將被卸載,不再消耗云計算資源。由云計算提供商加載、操作和卸載該功能,而不是用戶。