2011年10月5日 星期三

Amazon Silk 進化論 - Advanced Content Delivery Network (CDN) Service

Amazon Silk 目前僅是一個 Browser 的資料壓縮技術,不算是什麼新的創新,但由目前提供眾多雲端機房服務的 Amazon 推出,意義自然有所不同,當 Amazon Silk 結合 Amazon EC2 ,成為 AWS 的一個獨立服務時,供第三方網站使用時,Amazon Silk 能做的,比想像更多。




一個可能的發展方向是 Advanced Content Delivery Network (CDN) Service,不僅針對靜態資料,也能針對動態網頁做 cache and delivery,進一步增加網站的 Scalability and Performance。

靜態檔案遞送


傳統的 CDN service 是針對靜態資料進行檔案遞送,單純的檔案遞送,不去理會client 是甚麼環境,僅針對靜態資料傳送的區域與速度做最佳化。例如使用者在台灣而網站機房在美東,不使用 CDN,檔案需要從美東經由海纜傳送至台灣,延遲時間長,傳輸速度也可能較慢。當使用 CDN 時 ,若 CDN service provider 在台灣或香港有機房,則網站能預先將存在美東的靜態資料配送至 CDN 位於台灣的機房,當使用者存取該檔案時,便能直接由台灣機房將檔案傳送給使用者,不須由美東機房做檔案遞送,延遲時間能減少許多,傳送速度通常也比較快。

而 Amazon Silk在檔案遞送的特別之處在於 Amazon Silk 能夠針對不同的 client 瀏覽環境做檔案遞送最佳化,不同的 OS, Browser, Hardware,Amazon Silk 都能透過 machine learning 進行最佳化,例如自動調整圖片的解析度與影片的流量,website 只需要提供一個版本的靜態檔案,影片的transcoding and resizing 交給 Amazon Silk,靜態檔案的遞送便能夠加速,也能夠簡化網站設計的難度。

動態檔案快取與遞送


CDN 只能針對靜態資料做加速,那動態資料怎麼辦呢? 一般的做法則是在網站的前端加上 cache server,儲存運算完畢的網頁供使用者存取,降低重複運算的次數,Facebook 等眾多網站都有使用此機制。當有了 Amazon Silk 之後,這些機制便能交給 Amazon Silk 代為處理。

Amazon Silk 可以看成是整個 Amazon EC2-wide 的 cache server,只要網站也是使用 EC2,便能先讓 Amazon Silk 將網頁做 cache,下次有使用者存取相同頁面時,便能直接透過 Amazon Silk 進行檔案遞送,網站管理員不需要再自行設定 cache server,租用 Amazon Silk 即可。

此外,Amazon Silk 的 pre-rendering 機制,結合 machine learning,智慧的對網站頁面進行 pre-rendering and caching,網站消耗的 CPU 便能 offload 到 Amazon Silk,降低網站的成本,也提升網站的 Scalability。

降低流量


最後,Amazon EC2 針對網路頻寬有個特別的規定,那就是在相同 region 的 EC2 servers 的資料戶傳流量,是不收費的,意即網站將靜態資料或動態網頁送往相同 region 的Amazon Silk 時,不用錢! 就算是要收費,也會因為 Amazon Silk 會針對不同使用者的環境做網頁減肥,outbound 流量便能因此降低,網站能省下不少流量費。


初見 Amazon Silk 時,它並沒有引起我太多的注意,只覺得它是個 me too的服務,但當我把它當成是一個獨立的 Amazon Web Service與 Amazon EC2 做結合後,發現 Amazon Silk 比我原先想像的有更重大的意義,或許不久之後,Amazon Silk 便能如我猜想的一樣,發揮它的潛力。靜待 Amazon 出招~