[serverless]Serverless Architecture

..
聲明:
本博客歡迎轉發,但務必完整保留本段聲明!
博客地址:http://blog.csdn.net/halcyonbaby
新浪微博:@尋覓神蹟
微信:halcyoncola
原文地址: https://linuxacademy.com/blog/amazon-web-services-2/serverless-architecture/

本文繫個人翻譯(意譯爲主),錯漏之處請見諒。


Serverless Architecture

現在最火熱的技術話題莫過於Docker和Container,除此之外恐怕是serverless architecture。”serverless architecture“故名思義沒有服務器。但是這怎麼可能呢?
代碼當然還是運行在服務器上,只是不需要用戶來管理。
這多少和使用雲存儲有些類似,我們上傳數據到雲端,然後從雲端讀取數據。當然這背後技術並非這麼簡單。serverless也是這樣,而且相當酷。

serverless如何工作?我將以aws lambda爲例進行解釋。aws lambda允許用戶專注於業務功能的實現,而無需考慮服務器的事情。比如你寫一個function(向DynamoDB插入數據),並且配置了合適的權限(該function可以寫DynamoDB),剩下要做的就是設置function什麼時候執行。function何時纔會被運行起來?事件,當事件發生時,會自動觸發function的運行。事件可以是用戶登陸/用戶上傳/更新計數器等。這些事件可以來自於你的應用,比如mobile或者web應用,甚至於aws自己的服務。這些服務包括S3/DynamoDB/kinesis/SNS/SES/cognito/cloudwatch logs&events/cloudformation/scheduled events。只要你配置了lambda和相應 的服務,就可以讓他們一起自動工作。這簡直棒極了。

讓我們看個例子:
假設有一個註冊過程,用戶上傳頭像圖片和用戶信息。這裏有幾個事情:把用戶信息存儲在數據中,便於後續查找;創建圖片的縮略圖。原因嘛,現在的手機圖片動輒數MB,以至於太大需要優化。

如何優化呢?當然,可以在本地服務器上配置,使用腳本進行處理。老實說,這也許會工作的挺好。但是當你有更大的業務流量,這種做法的問題也會凸顯出來;而對低流量的小型網站勉強可以對付。但是,我們想下,我們需要做那些事?安裝配置服務器,部署腳本,安裝正確的包(圖片處理庫),存儲多個不同版本的縮略圖,在數據庫中存儲縮略圖的關聯信息,最後你需要讓上傳圖片的事件觸發你的function。還有,對圖片的操作需要是異步的,除非你想讓用戶等很久。

如果我告訴你,你只需要花幾分鐘使用AWS lambda寫兩個函數並進行配置就可以搞定上邊的這個事情你會怎麼想?這當然是可能的,你可以有一個function縮放圖片,另一個function存儲用戶信息到Dynamo DB。如何調用這些函數呢?我們可以在用戶從本地往S3上上傳圖片時觸發。一旦圖片被上傳,S3會自動觸發function並將事件數據傳送給function。Lambda function獲取數據,縮放圖片,然後將優化過的圖片存放在S3上。這一切在用戶還在填寫用戶名,郵箱,密碼時就已經開始執行。

當用戶點擊“完成註冊”,你的代碼會通過AWS API gateway調用DynamoDB function,這個function收到數據並存儲到DynamoDB中。當然,你可以在你的function中在插入前進行其他操作。

即使你有成百上千個用戶同時操作,你也不需要擔心服務器會變慢或者crash。這些負載被交給AWS來處理。

還有一個重要的地方上是,如何確保你的應用和lambda解偶?構建應用時最困難的地方在於確保後端時可插拔的。後端應該像樂高積木一般可插拔到應用,並且沒有困難。在我們的例子中,你的應用只和S3和AWS API gateway打交道。這使得你很容易進行測試你的應用,並且也容易從lambda遷移。這便於重用,比如你最開始是web應用,後來打算創建web應用,你可以將他們很容易的應用到你的系統。他們其實沒什麼區別。

剩下最後一個問題“什麼時候應該使用lambda?“,有些場景模型與本例子相似,有些場景需要混合使用。你可以使用事件驅動的代碼做某些事情,從而免除服務器管理的工作,從而讓你的工程師更加專注於關鍵任務而不是重複發明輪子。

理解如何使用lambda,可以爲工程師節省很多時間和精力。工程師們不必在操心服務器的維護和日常管理,應用不但不需要被更多的照看,同時可以跑的更快,擴展性更強。

如果你覺得很有趣,爲什麼不看下Lambda Deep Dive Course.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章