簡述: 當WebApplication(以下簡稱WebApp)大量取代傳統(tǒng)桌面應用程式,資訊服務類型的軟體公司,需要解決的「重復與浪費」問題,就不只有軟體架構本身;相信大家都清楚軟體架構本身,需要模組化、元件化,讓寫好的功能(程式碼)可以盡可能
當WebApplication(以下簡稱WebApp)大量需要解決的軟件公司取代了傳統(tǒng)的桌面應用程序和信息服務類型「重復與浪費」問題不僅僅是軟體架構本身;相信大家都知道軟體架構本身需要模塊化和元件化,這樣寫的功能(程式碼)才能盡可能的重復使用,最好有很多Plugins或Modules,必要時可使用或擴展。
資訊服務公司通常不會只有一或少數(shù)幾項軟體專案,而是會建立非常多系統(tǒng)。因此,重復造成的浪費問題就更加嚴重。
一般來說,編譯程式或原始代碼本身不會有體積問題。例如,包裝成.dll或.jar之后,可以在不同的項目中引用。有了良好的自動化建設機制,我們通常不需要將外部共外部模塊(或組件)放在項目的版本控制系統(tǒng)中。只有在測試或最終發(fā)布時,我們才需要暫時添加這些文件。
但是WebApp不僅包含程式,還包含許多比較「資源」例如:
jQuerycore jQueryUI ...一大票jQueryPlugins
ExtJS 一大票Widgets...
ICONlibrary ...一大票圖庫
自行開發(fā)和維護JavaScript、CSS、ICON共用libraries等
如果沒有好的解決方案,這些資源不僅會被重復發(fā)布到許多網(wǎng)站伺服器上,還會浪費存儲空間和頻率,甚至會被添加到項目版本的控制系統(tǒng)中repository。
舉例來說,ExtJS4的原始碼ext-4.0.7-gpl壓縮體積高達166MB,在某些情況下,我們可能不僅需要保留必要和壓縮最佳檔案,還需要完整的檔案。除非使用的Framework有良好的Plugins機制,可以引用ExtJS但實際上不會被添加到項目數(shù)據(jù)夾中(只在建設中)test或production階段才會加入暫存的區(qū)域);否則,一般來說都是直接在WebApp一份完整的副本也保存在數(shù)據(jù)夾中。
相信大部分專案都是直接將這些資源添加到專案中的。repository,版本控制系統(tǒng)一起發(fā)布;這是最簡單的方法,但也是最浪費資源的方法。這樣做會帶來一些問題:
不屬于專案的東西要納入專案版本控制。占用空間(雖然硬盤現(xiàn)在很便宜,但這個問題不大),維護起來很麻煩。
專案的repository變得非常肥大,真正屬于項目的部分可能不到30個MB,但整體超過100MB。舊版本SVN隨著檔案越復雜,執(zhí)行速度可能會越慢。
無論是新成員還是災難后需要重新取出(checkout)完整的檔案,浪費伺服資源和廣泛的網(wǎng)絡,最重要的寶貴時間將被浪費。
假設一家信息服務公司有20個系統(tǒng),資源浪費20倍。
對于導入持續(xù)整合機制的項目,會造成更多的浪費。
像是GitHub有檔案容量限制等專項托管服務,占用空間是需要考慮的問題。
即使在開發(fā)階段,也可以解決資源重復造成的浪費問題,比如不需要將外部資源納入版本控制;但是,當最終打包發(fā)布時,仍然需要添加這些文件(文件可以通過最佳化減少,體積更?。W詈?,仍然存在浪費問題。
對于信息服務公司,建立私人CDN不僅能得到很多好處,而且在云服務價格低的時代,很難找到不這樣做的理由。
CDN(內容傳輸網(wǎng)絡,contentdeliverynetwork)概念是指通過網(wǎng)絡網(wǎng)絡連接的計算機網(wǎng)絡系統(tǒng),為用戶提供高效、可擴展、低成本的網(wǎng)絡。
簡單地說,我們可以建立遠端檔案服務伺服器WebApp該項目經常需要的靜態(tài)資源被放置在這些伺服器中,以保持這些伺服器的高可用性和擴展性,并提供足夠的負載;這樣,所有共享WebApp這些服務器可以布局資源。
建立CDN有很多優(yōu)點,包括開發(fā)人員可以快速使用(不需要每次重新下載和建立)library),減少遠端部署所需的時間,使不同項目共享資源,減少正式伺服器的訪問和頻率消耗,幫助需要高負荷WebApp減輕負擔...
事實上,Google建立自己的CDN,提供包含jQuery、jQueryUI、Prototype等待網(wǎng)站常用的資源,也把這個CDN對所有開發(fā)者免費開放。
但是,免費的CDN通常不會有你需要的一切;所以ExtJS來說,Google只提供核心部分ExtCore,而Sencha雖然也有為ExtJSGPL架設CDN,但實測后發(fā)現(xiàn)經常有找不到檔案的情況。
對于信息服務公司,由他人提供CDN這不是一個好辦法,因為哪一天該CDN結束運作,或者已經不提供某個版本的資源,就會造成一些系統(tǒng)因此受連累而掛點。所以,建置私有CDN這是一個更好的計劃。
一般來說,租專線設置伺服器來做CDN不劃算算。僅僅實現(xiàn)數(shù)據(jù)和網(wǎng)絡的備用和高可用性(防止斷電、斷網(wǎng)、自然災害、人為災害等問題)的成本太高。
使用虛擬主機(VirtualHost或VPN)這是一種相對便宜的方法,但一般虛擬主機都有容量、頻寬流量限制,無論是否使用,都需要支付基本的月租金。
因此,本文介紹的方案是使用的AmazonS3(SimpleStorageService)及CloudFront。
AmazonS3的主要優(yōu)點,包括采礦「使用量付費」,計費內容包括存儲空間、訪問次數(shù)和傳輸量。所以一開始只需要放5000MB檔案,只需支付有用的存儲空間和傳輸量,注冊S即使將來可能會增長到幾點,服務也不需要設定容量TB旗艦級方案一開始不需要租用容量,每月傳輸量也不會有限制。
使用S3建立CDN步驟很簡單:
建立S3Bucket(存儲空間)并將名稱設置為CDN網(wǎng)址(如:cdn.yourname.com)
修改DNS設置,通過網(wǎng)站CNAME指向Bucket的EndPoint網(wǎng)址
設定Bucket的WebSite為Enabled
將要放到CDN的檔案如ExtJS等,上傳至Bucket,并設為Public
對于Mac及Linux對于用戶,可以使用s3cmd這個軟件可以用來管理檔案commandline輕松上傳或同步本地文件到指定文件S3位址。
除了在建立CDN時可以用s3cmd,如果客戶因為預算或速度考慮,需要將整個項目搬遷到企業(yè)內部網(wǎng)絡可以直接訪問的服務器,也可以使用s3cmd做一份mirror,保持使用的資源保持一致的訪問配置。
如果開發(fā)的WebApp它需要提供給公眾,甚至來自世界各地的用戶S搭配方便CloudFront建立全球化CDN。
CloudFront無法存儲文件,用于存儲文件「傳遞」S3或其他來源的檔案,通過分散在世界各地的數(shù)據(jù)中心(S3的Bucket),減少網(wǎng)絡傳輸路徑的延遲。簡單地說,CloudFront可以讓S3.檔案下載速度更快,傳輸成本也比S便宜(包括傳輸費用) 存取次數(shù))。
<騰佑科技(mubashirfilms.com)成立于2009年,總部位于河南鄭州,是一家集互聯(lián)網(wǎng)基礎設施及軟硬件于一體化的高新技術企業(yè),具有IDC/ISP/ICP/云牌照、雙軟等資質,并擁有多個國家版權局認證。公司自成立以來,一直致力于發(fā)展互聯(lián)網(wǎng)IDC數(shù)據(jù)中心DataCenter、云計算Cloud、大數(shù)據(jù)BigDate、人工智能AI、內容加速CDN、互聯(lián)網(wǎng)安全、軟件定制開發(fā)等產品服務及行業(yè)客戶技術一體化智能解決方案;2018年成為百度智能云AI河南服務中心。
售前咨詢熱線:400-996-8756
備案提交:0371-89913068
售后客服:0371-89913000
搜索詞
熱門產品推薦