适用于无服务器Java开发人员的AWS Lambda:它为您带来了什么?
無服務器計算如何幫助您的生產基礎架構?
在過去的幾年中,無服務器計算架構一直受到關注,因為它專注于應用程序的主要組件之一:服務器。 這種體系結構采用了不同的方法。
在下面的文章中,我們將解釋無服務器的含義,并嘗試了解它是否以及何時可以為您的應用程序提供幫助。 系好安全帶。
云的新衣
無服務器計算的概念談論的是部署代碼,而不是服務器。 一開始聽起來可能有些混亂,因為這意味著您可以將服務器整體丟棄,并在沒有服務器的情況下運行應用程序。 但您可以猜到,事實并非如此。
云提供商無需購買,管理和擴展它們,而是處理對VM的請求的提供商。 因此,您仍然需要服務器,但是這種新模型使您無需承擔責任。 換句話說,處理服務器上的部署或任何類型的已安裝軟件都沒有麻煩。 基本上,您需要的只是托管的云服務和計算機。
輸入AWS Lambda
該模型由Amazon作為AWS Lambda于2014年首次引入。該公司是第一個提供無服務器服務的人,它是Amazon Web Services套件的一部分。
AWS Lambda基于事件驅動的平臺,由注冊,更新等事件觸發。 當事件發生時,它將調用相關函數,依次運行代碼。 所有這些,同時管理和計算運行和僅使用它們所需的資源。
換句話說,基本工作流程保持不變:編寫代碼,將其上傳到服務器以使其運行,并消除對響應時間,操作等方面的擔憂。
AWS Lambda有時被稱為功能即服務(FaaS),因為這些事件觸發了處理請求所需的相關功能,從而使我們能夠輕松運行我們的功能。
與FaaS一起,無服務器體系結構也稱為后端即服務(BaaS),它消除了很大一部分數據庫管理開銷,并為不同的用戶和級別提供了授權。
AWS Lambda總經理Tim Wagner 共享了一個圖表,該圖表說明了組件及其連接:一個Lambda函數作為計算資源(“后端”)和一個直接與其連接的移動應用程序,以及提供API HTTP端點的Amazon API Gateway靜態的Amazon S3托管網站:
無服務器架構圖。 資料來源:亞馬遜
照顧好你的代碼
AWS Lambda的主要目標是允許開發人員以簡單的方式構建較小的,按需和事件響應型應用程序。 它為您工作,并管理“計算團隊”,以平衡內存,CPU,網絡,應用安全補丁,監視運行狀況以及任何其他所需的資源和操作。
外包服務是一種很好的看待方式。 它不僅可以“重新安置IT”,而且甚至可以幫助您降低運營成本,因為您可以消除基礎架構成本,甚至可以減少維護服務器所需的團隊成員數量。
說到成本,您只需要根據使用的功能和代碼執行的時間來支付使用的費用。 重要的是要聲明免費層每月包括100萬個免費請求,每月最多有320萬秒的計算時間。
從請求開始作為對事件或調用的響應開始執行時開始計算。 而且還包括來自控制臺的測試。
據亞馬遜稱,AWS Lambda是許多應用程序場景的平臺。 但是,當然有一個陷阱,該語句僅與AWS Lambda支持的語言有關:Node.js,Java和Python。
從好的方面來說,可以使用您已經知道的工具Maven或Gradle完成使用Java構建AWS Lambda函數的過程,并且構建過程幾乎相同。
給我看代碼
完成基本設置后,調用AWS Lambda函數非常簡單,您可以在此處查看完整說明。
它包括定義代表輸入和輸出JSON的POJO,指定代表我們的微服務的接口,并使用被調用時調用的Lambda函數的名稱對其進行注釋。
下一步將使用LambdaInvokerFactory創建此接口的實現。 這將使我們能夠調用Lambda上運行的服務。 然后,我們可以使用此代理對象簡單地調用我們的服務,例如……計數貓:
CountCatsInput input = new CountCatsInput(); input.setBucketName("pictures-of-cats"); input.setKey("three-cute-cats");int cats = catService.countCats(input).getCount();在你開始之前…
當然,沒有什么是完美的,主要選擇代碼的選項也有一些缺點。 由于它仍然是一項相當新的技術,因此很容易找到用戶不太滿意的問題列表,例如:
控制 –您正在“移交”服務器,希望您的云主機將以最佳方式處理它們。 但是您可能會遇到一些重大問題,您必須坐下來等待它們解決,甚至可能包括停機時間和不滿意的客戶。
鎖定 –說到將所有內容交給云主機,使用AWS Lambda意味著您必須使用AWS。 現在可能不是問題,但是如果您考慮遷移到Google或僅使用自己的服務器,它將成為一個問題。
靈活性 –您將無法登錄到計算實例或自定義操作系統或語言運行時。
安全性 –使用第三者也意味著使用其安全性。 我們并不是說AWS并不安全,而是您將這項責任完全轉移給了可能不太理想的第三方。 。
監視 –使用AWS Lambda,您只能使用內部工具CloudWatch監視和調試系統。 盡管您仍然可以創建自定義警報,但可以查看請求率和錯誤率–這是一個非常基本的工具,它可能無法幫助您了解問題的根本原因。
這只是該體系結構缺點的一小部分(但很重要)。 還必須指出,如果您已經有一個應用程序,并且想要將其遷移到無服務器架構,則可能會發現自己是從頭開始編寫的。 因此,您可能需要考慮一下,或者只是將其積壓到計劃中的下一個新應用程序中。
最后的想法
亞馬遜從AWS Lambda開始了無服務器的發展,如今,微軟,谷歌,IBM等其他公司以及小型公司和初創公司都提供這種模式。
如果必須賭博,我們會說無服務器是未來。 如果您考慮一下,這是云計算發展的下一步,這使我們對云以及除我們自己以外的提供商完全信任。
目前,最好保留當前的云或本地服務器。 它仍然是一項新技術,在我們放棄服務器之前,亞馬遜,谷歌和其他公司需要經歷一些挑戰。 可能是嬰兒的腳步,但不管我們是否喜歡,我們都朝著這個方向前進。
翻譯自: https://www.javacodegeeks.com/2016/08/aws-lambda-serverless-java-developers-whats.html
總結
以上是生活随笔為你收集整理的适用于无服务器Java开发人员的AWS Lambda:它为您带来了什么?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 安卓手机刷机教程(安卓手机刷机教程大全)
- 下一篇: 免费网络研讨会:调试生产中Java的新方