摘要:本文就以一個企業內部培訓網站為例,拆解云上成本優化方案需要注意的點,拋磚引玉,幫助大家參考業務架構,合理節省費用,
本文分享自華為云社區《云上成本優化方案——以一個企業內部培訓網站為例》,作者:云存盤開發者支持團隊,
越來越多的企業選擇將服務搭建在云上,業務初期訪問量、資料量都較小,成本問題還不顯著,隨著業務規模的不斷擴張,云上的資源消耗也在不斷增多,云資源成本開始成為一個不得不考慮的問題,本文就從一個企業內部培訓網站為例,拆解云上成本優化方案需要注意的點,拋磚引玉,幫助大家參考業務架構,合理節省費用,
1. 業務背景介紹
某集團客戶 A,內部業務系統中包含一個內部在線教育網站,原部署在線下 IDC 機房,為集團內部各地分公司部提供內部培訓服務,網站除了提供點播服務外,還要在后臺為講師上傳的原始視頻添加水印,轉換為指定清晰度,截取首幀作為視頻封面,并隔固定時間截取一張截圖方便學生跳轉,現集團業務整體搬遷上華為云,需要考慮搬遷上云后成本問題,
2. 基礎方案與成本優化點識別
在方案搬遷初期,客戶考慮對系統做微量改動后上云,即系統整體架構不變,僅將存盤介質替換為物件存盤 OBS,為保證視頻轉碼性能,采購一臺 8U32G 服務器,在此方案中涉及的成本優化點全部集中在基礎資源 IaaS 中,即計算、存盤、網路,我們逐專案進行優化,
2.1 計算成本
對計算來說,最理想的降成本方案就是極致的彈性,不使用時不計費,使用時也僅出使用了的計算資源,而不是直接整臺 8U32G 的服務器,然后大多時間資源利用率僅有 10% 以下,所以第一處改動就是通過使用華為云 MPC 服務替換其自建的轉碼服務,相較于自己采購服務器,且大多數時間處于閑置狀態,MPC 服務按視頻轉換時間收費,H.264 標準轉碼包 5000 分鐘僅 88元,成本極低,添加水印和截取指定幀的動作同樣可以較由 MPC 完成,同時將所有網頁靜態資源均存盤至 OBS 中,降低服務器壓力,在不調整其他組件的前提下,可直接將服務器降級為 4U8G 規格,節省費用,可配合資料工坊 DWR 的作業流進行使用,在上傳視頻時自動觸發作業流,進一步降低上手難度,詳情參考 視頻轉碼作業流最佳實踐
當然,現在還不是最極致的彈性,如果想要進一步優化計算成本,應考慮通過使用 CCI 容器或改造為 serverless 應用,進一步壓縮,限于篇幅暫不展開討論,
2.2 存盤成本
計算資源可以彈性伸縮,不用時候關機,但是存盤資源則不可能不用時刪掉,所以就要考慮合理規劃存盤型別,根據資料對性能的要求合理劃分到不同型別的存盤介質中,如塊存盤、物件存盤、物件存盤的歸檔存盤等,
在當前業務中,轉碼過后的視頻需要經常播放,但轉碼前的原視頻、培訓會議現場錄制的視頻則不需要經常查看,又不能直接洗掉,此時可以考慮使用物件存盤的歸檔存盤與深度歸檔存盤功能,配置生命周期規則,指定部分目錄下的視頻超過一定時間自動轉歸檔,再超過一定時間后自動轉深度歸檔,
除此之外,即使是轉換后的視頻也不是所有都經常播放的,可以將上架時間長、播放次數少的視頻也轉換為歸檔存盤,并配置歸檔直讀功能,進一步降低存盤成本,
除了視頻外,該網站還存盤了很多圖片,往往同一張圖片還要存盤多份,如封面視頻就需要有低、中、高清晰度分別的有無水印版本,共六個版本,此時可以考慮使用 OBS 自帶的圖片轉碼服務,僅需存盤一張原圖,在加載時通過添加引數自動轉換清晰度或添加水印,
2.3 網路成本
網路成本是視頻網站成本中不容忽視的一個大類,而且與可以事先規劃的計算與存盤成本不同,很多服務都會產生公網出流量費,每次請求會產生的公網出流量也有不同,無法做到精準的定量預估,不過我們可以針對以下幾個問題進行分析,設計最佳的網路成本優化方案:
- 資料該從哪個出口出?
- 每月分別會有多少出流量?
- 資料能否進行壓縮?
- 資料能否分片/分級?
- 資料能否在客戶端進行快取?
2.3.1 資料出口選擇
在本案例中,共有三個位置會產生公網出流量,分別為 ECS、OBS、CDN,其按需計費流量費分別為 0.8元/G、0.5元/G 與 0.2元/G,所以,我們要盡可能的增加從 CDN 流出的流量,減少從 ECS 流出的流量,可以通過改造業務系統,將靜態檔案托管至 OBS,并通過 CDN 加速進行分發來達到此目的,可參照 CDN加速訪問 OBS一文配置 OBS + CDN 聯動,
2.3.2 通過預估流量合理購買套餐包
相較于直接按需計費,提前購買套餐包可以節省更多成本,以 OBS 為例,如若每月流出 100GB,按需計費時一年的流量費為 600 元,而提前購買包年流量包則僅需 411.59 元,節省了 27%,CDN 如果合理購買閑時流量則可以節省更多,具體可前往 OBS 官方活動頁 與 CDN 官方活動頁查看并選購套餐包,
2.3.3 資料能否進行壓縮
現在主流的瀏覽器都已具備自動決議 gzip 壓縮后的 html、js、css 檔案,可以在靜態資源轉儲至 OBS 時也可以利用該特性,簡單來說就是將 OBS 中的靜態檔案進行 gzip 壓縮,并配置 http 頭域來告知瀏覽器自動決議,更詳細教程可參見將 Vue.js 專案部署至靜態網站托管,并開啟 Gzip 壓縮 一文,在節省網路傳輸流量成本同時也降低了存盤成本,
除了文本外,圖片也可進行壓縮,圖片壓縮有幾種思路,一是通過轉換格式為 heic、avif、webp 等壓縮效率更高的格式來進行無損壓縮;二是使用一些比較知名的工具,如 tinyjpg等進行一些肉眼不可見的有損壓縮;三則是在傳輸程序中,針對對圖片清晰度要求不高的場景——如縮略圖,使用 OBS 自帶的圖片轉碼能力,回傳解析度更低的圖片,
2.3.4 資料能否分片/分級
對視頻資料來說,很難在不降低肉眼觀感的前提下進行壓縮,但可考慮對視頻資料進行分片,前端播放時僅加載當前播放位置前后片段,而不再每次都將全量資料都快取至本地,MPC 的轉碼服務已提供了視頻轉 hls 格式的能力,將視頻切分為多個片段,用戶播放視頻時,可隨意拖動視頻進度,會讀取相應進度的分片檔案進行加載,除此之外,MPC 還可以將一個視頻轉換為多種清晰度,可根據用戶需要選擇不同清晰度進行播放,既降低了網路流量費,也提升了用戶體驗,
3. 最終方案
綜合上述分析,最終方案架構如下:
- 使用 DWR + MPC 服務進行視頻轉碼和截幀,用戶上傳源視頻后自動轉換為不同清晰度的 m3u8 格式視頻,降低計算成本,
- 配置 OBS 生命周期,定時將訪問頻次低的資料(如原始視頻檔案等)逐級轉換為歸檔存盤與深度歸檔存盤,降低存盤成本,
- 配置 OBS + CDN 加速,并提前購買 CDN 流量包,降低網路成本,
為簡化費用對比,我們假設用戶共 100T 資料,其中 20T 資料為歷史歸檔資料,基本不需要訪問,20T 資料為低頻資料,不經常訪問,假設全部用戶每月共播放 10 萬分鐘,平均每分鐘標清視頻約 20M,這 1 萬分鐘的播放中 20% 時間可以播放低清視頻(480P移動端),80% 時間播放高清視頻(1080P),同長度高清視頻大小為標清,也就是說總流出流量約為3.5T,

最終費用為原本的 67%,節省了 1/3 的成本,當然,為了方便理解,本文做了很多假設性的簡化,實際專案可能會有偏差,但總體來說成本優化時可以從這幾個方面進行考慮總是或多或少有點識訓的,在此拋磚引玉,大家可以根據自己專案實際情況針對性的再次優化,
點擊關注,第一時間了解華為云新鮮技術~
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/550148.html
標籤:其他
上一篇:使用CodeArts發布OBS,函式作業流重繪CDN快取
下一篇:NNLM初認識以及相關代碼
