最新資訊
科技趨勢

雲端整合專家,提供全方位雲端顧問服務

科技趨勢

聽過AWS Lambda嗎?AWS Lambda大解析

聽過AWS Lambda嗎?

AWS Lambda是一種Serverless的服務,那什麼是Serverless服務呢?
簡單來說是一種無伺服器的概念。對開發人員來說,平時光做產品開發就已經焦頭爛額了,如果還需要去處理伺服器的設定或者維運,說不定過一陣子大概就幹不下去了?

基於這個需求,Serverless就此問世!在AWS Lambda上,開發人員可以在Lambda上直接編寫程式碼,稱之為Lambda Function,這種模式下開發人員不需要顧慮底層的設定是否正確。
e.g. 要使用哪一套作業系統, 網路路由, 防火牆…

也不需要擔心服務上線後,會不會因為流量太大造成伺服器無法負荷,更能夠專注在程式碼開發上。

目前AWS Lambda支援了以下幾種語言:

  • Java
  • Go
  • PowerShell
  • Node.js
  • C#
  • Python
  • Ruby

已經有許多的企業使用Lambda獲得了很好的成果,舉例來說:Mercury在使用了Lambda後,原本需要20 分鐘的註冊時間直接縮短到 30秒。而預期的成本執行10000次只需要20美金。

情境介紹

Lambda支援了事件驅動的方式, 以下我們舉幾個使用Lambda的情境:

AWS S3

假設今天使用者會將拍攝好的照片上傳到AWS S3。將Lambda設定為,一但有新object被放到S3就會自動執行程式將照片更新到個人部落格上。

分散網站負載

假設架設網站的伺服器平時處於資源充足的狀態。但在某些特殊事件時會有大量的使用者湧入,造成了伺服器處理速度非常地緩慢。為了改善伺服器效能不足的問題,又不希望平時有伺服器閒置的情況下,就可以考慮將網站中部分的功能函數轉移到Lambda上。以此方式減少原本網站伺服器的負載,lambda又是一個Serverless的服務,只有在被呼叫時才會收費,用多少付多少的機制也解決了伺服器閒置的情況。


案例分享:

影音串流自動轉檔

在今天的支援影音播放的平台中,像是YouTube, Facebook都會讓使用者自行上傳影片。但通常那些上傳影片的檔案格式都是mp4,這些聽起來好像都沒什麼問題?

但其實在平台播放的影片如果是mp4的情況下,使用者在觀賞時,就必須要一次將整部影片下載下來,才能夠在瀏覽或者需要快轉的情況下有比較好的體驗。而目前為了解決這個問題,就出現了HLS(HTTP Live Streaming) 這項技術。而這技術主要由以下兩種檔案組成:

  1. .m3u8
    記錄了播放整部影片需要使用到的 .ts檔清單
  2. .ts
    將整個影片打散成多個檔案(.ts)

藉由將影片打散的方式,使用者就算一次會下載多個ts檔案,也會比一次下載整個mp4要更快更省空間。當需要快轉時,也只需要等到那階段的ts檔案下載完成就可以開始播放,在當使用者的網速沒有達到一定的速度時,HLS也能夠直接調降使用者播放影片的畫質。大大提升了影片播放的整體流暢性。

前面說了這麼多,所以我說那個Lambda呢?

其實就如前面的情境所提到的,我們可以將使用者上傳影片的位置存放在AWS S3上,一但影片上傳完成後,就可以直接觸發我們在Lambda準備好的Code,在這段Code中會去呼叫AWS Elastictranscoder,將上傳的影片進行轉檔,也就是把 .mp4轉換成符合HLS協議的方式。


Summary

藉由Serverless技術的普及,給予了開發人員在IaaS層面一個更便利的選擇,若是網站夠簡單,甚至單純藉由lambda + s3來開啟一個Web Server就足夠了,連域名跟憑證都可以省下來。