我們擅長商業(yè)策略與用戶體驗的完美結合。
歡迎瀏覽我們的案例。
根據(jù) AWS 解決方案架構師 Cassandra Bonner 在悉尼舉行的 APIdays 澳大利亞會議上的演講,Amazon Web Services 看到了適合采用無服務器架構的五種主要產(chǎn)品和設計模式。Bonner 總結當前無服務器技術的成熟度,顧問 Ken Fromm 最近在 A Cloud Guru 的 Medium 博客上寫道,無服務器架構允許開發(fā)人員專注于管理他們的應用程序和系統(tǒng)需要做的事情,而不是他們后端計算資源的物理算力、限制條件和復雜的基礎設施設置。這使得產(chǎn)品功能或業(yè)務模塊成為在無服務器環(huán)境中規(guī)模化拓展的基本單元,而不是更底層的計算資源。這意味著,軟件的計算任務往往是異步的、無狀態(tài)的和短暫的,或者正如 Fromm 所說:「任務處理本質(zhì)上變成了容器處理,容器在逐個任務的基礎上按需配置和刪除。」在 APIdays,Bonner 表示 AWS 團隊認為無服務器包含四個主要原則:簡單但可用的最小元素(即小的、可用的基礎組件)。
隨使用量而彈性縮放(服務器代表用戶自動縮放)。
用多少付費多少(客戶只需為使用服務的時間付費)。
內(nèi)置可用性和容錯(即 NoOps)。
在 APIdays 活動的早些時候,澳大利亞 Amazon Web Services 解決方案架構高級經(jīng)理 Peter Stanski 曾表示,AWS 在澳大利亞和新西蘭市場(與世界大部分地區(qū)一樣)的傳統(tǒng)采用路徑在于中型企業(yè)。在過去的一兩年里,雖然初創(chuàng)公司通常從一開始就對無服務器服務「照單全收」,但擁有遺留系統(tǒng)的成熟企業(yè)通常會從開發(fā)和概念驗證測試來構建新應用程序,加入分析監(jiān)控功能,然后開始遷移一些他們的遺留系統(tǒng)上云,最終專注于將任務關鍵型應用程序遷移到 AWS。
AWS 的 Peter Stanski 在澳大利亞 APIdays 上發(fā)表演講。Stanski 說,今年,各種規(guī)模的企業(yè)從一開始就傾向于「全力投入」云計算。他們將著手遷移現(xiàn)有遺留技術棧,同時直接在云服務上構建新的應用程序。
Bonner 描述了采用無服務器架構的類似趨勢:雖然新應用程序可能正在利用無服務器架構開發(fā)和托管,但在大多數(shù)情況下,企業(yè)正在采用混合模式托管軟件,在無服務器環(huán)境中構建新功能,然后融入并逐步脫離現(xiàn)有的企業(yè)軟件托管環(huán)境。「這就是我們看到很多客戶開始的方式,」Bonner 指出一個常見的例子:一家企業(yè)可能有一個管理圖像數(shù)據(jù)的現(xiàn)有工作流程,現(xiàn)在正在添加一個在無服務器中運行的圖像識別功能環(huán)境,然后將分類結果通過構建數(shù)據(jù)管道傳回到現(xiàn)有的(遺留)企業(yè)軟件工作流中,該工作流可能就托管于用戶的云環(huán)境中。Bonner 在無服務器架構下,為不同行業(yè)和用例定義了五種結合無服務器架構的產(chǎn)品設計模式:事件驅動的數(shù)據(jù)處理。
網(wǎng)絡應用程序。
移動和物聯(lián)網(wǎng)應用程序。
應用生態(tài)系統(tǒng)。
事件工作流。
用例 #1:事件驅動的數(shù)據(jù)處理
(事件驅動用例架構圖)
無服務器環(huán)境最常見的應用之一是在事件發(fā)生后觸發(fā)某個數(shù)據(jù)操作。Bonner 給出了將圖像對象添加到 Amazon S3 存儲桶的示例。這可能會觸發(fā) lambda 函數(shù),例如,運行壓縮任務,以便將圖像以標準尺寸格式重新歸檔到 S3 中。這種風格的用例也非常適合傳統(tǒng)云和無服務器云混合使用的趨勢。在這種趨勢中,無服務器被用來在更廣泛的托管環(huán)境中執(zhí)行特定功能。
用例 #2:無服務器 Web 應用程序
(Web 應用程序用例的架構圖)
在無服務器 Web 應用程序中,可能會組合運行進程來確定用戶的上下文和用戶個性化信息,以提供滿足用戶請求的內(nèi)容和功能。例如,在此用例中,靜態(tài)內(nèi)容可能存儲在 S3 中,以便在瀏覽器中打開應用程序時顯示。同時,通過應用程序的 API 網(wǎng)關啟動處理以運行確定應用程序用戶上下文的 Lambda 函數(shù)。然后使用通過 lambda 函數(shù)生成并作為動態(tài)數(shù)據(jù)存儲在 DynamoDB 中的更多動態(tài)內(nèi)容來增強靜態(tài)內(nèi)容。
用例 #3:移動和物聯(lián)網(wǎng)應用
(移動應用用例的架構圖)
與 Web 應用程序用例類似,構建在無服務器環(huán)境中的移動和物聯(lián)網(wǎng)應用程序正在尋求根據(jù)用戶的上下文決定向用戶提供哪些內(nèi)容。無服務器身份驗證用于確保用戶(無論是人還是機器)獲得適當授權以訪問信息或函數(shù)。然后 Lambda 執(zhí)行函數(shù)并與 DynamoDB 中的數(shù)據(jù)交互以滿足用戶的需求。
用例 #4:無服務器應用生態(tài)系統(tǒng)
(應用生態(tài)系統(tǒng)用例的架構圖)
在應用程序生態(tài)系統(tǒng)中,應用程序或工作流是在無服務器環(huán)境中創(chuàng)建的,并結合了 AWS 功能和產(chǎn)品以及第三方服務商 API。Bonner 舉了一個例子,有人告訴 Amazon Echo,他們正在做演示,然后語音數(shù)據(jù)觸發(fā) lambda 函數(shù),通過 Slack API 將該消息傳遞給遠程團隊。然后在無服務器環(huán)境中輪詢確定團隊何時做出響應并向 Echo 發(fā)送反饋信息。
用例 #5:事件工作流
(事件工作流用例的架構圖)
最近發(fā)布的 AWS Step Functions 現(xiàn)在為無服務器工作流程的可能性增加了更復雜的功能。可以在 Step Functions 中創(chuàng)建決策樹,然后與 Lambda 和 AWS 產(chǎn)品對齊以執(zhí)行工作流分支操作(盡管 Amazon Web Services 在澳大利亞突出顯示 Step Functions 令人困惑,因為它在澳大利亞尚不可用)。例如,使用發(fā)布/訂閱消息傳遞模型,可以通過狀態(tài)機可視化并擁有所有函數(shù)和分布式組件。用戶可以通過 Step Functions 和 lambdas 映射客戶入職流程、進入 CRM、購物車訂購和訂單履行,并自動添加 AWS 工具以確保工作流程能夠完成。因此,雖然 Fromm 談到無服務器主要是異步、無狀態(tài)和短暫的,但一旦進入更復雜的工作流和應用程序,一些持久狀態(tài)和進行同步調(diào)用的能力就會發(fā)揮作用。Step Functions 提供狀態(tài)機,以便 Lambda 函數(shù)可以為業(yè)務流程提供一定程度的即時狀態(tài),其中無服務器應用程序可能需要結合同步和異步調(diào)用鏈。但是,像 iRobots 的 Ben Kehoe 這樣的無服務器高級用戶認為,Step Functions 當前的定價結構過于苛刻,無法在無服務器環(huán)境的生產(chǎn)中使用它。此外,默認節(jié)流限制表明其預期用途不包括彈性縮放,只包括瞬態(tài)事件調(diào)度。「我希望狀態(tài)即服務成為一種服務范式,可以用于無服務器架構中 FaaS 所需的低級瞬態(tài)狀態(tài),無論是通過 Step Functions 還是其他服務,」Kehoe 在 Step Functions 首次發(fā)布之后在自己博客中寫道。
身份驗證的選擇
在無服務器環(huán)境中,還可以為實施中的無服務器設計模式和用例選擇最適合的用戶身份驗證和身份管理工作流。身份驗證方法可能會根據(jù)來自一個組織的多個用戶是否需要具有不同權限角色的訪問權限、用戶是否主要是客戶或合作伙伴是否具有某些訪問權限而改變。Jim Tran 和 Justin Pirtle 于去年 11 月在 AWS Re:Invent 上發(fā)表的視頻更詳細地描述了無服務器環(huán)境中可用的一些身份驗證選擇:AWS re:Invent 2016:無服務器身份驗證和授權:身份管理 (MBL306)。
不斷成熟中的無服務器工具和生態(tài)
雖然還沒接近成熟期,無服務器有機會成為企業(yè)通過云平臺交付產(chǎn)品和服務的主要力量。隨著 serverless 的成熟并越來越多地被新項目和混合應用所采用,隨著企業(yè)開始選擇將現(xiàn)有應用程序遷移到 serverless 架構,企業(yè)數(shù)字和上云的發(fā)展軌跡很可能會在無服務器市場重復,盡管 serverless 目前的市場占有率還較小。雖然面向企業(yè)和企業(yè)的關鍵任務軟件可能尚未出現(xiàn),但一些安全功能和整體生態(tài)系統(tǒng)工具仍需成熟,但無服務器的用例表明,除了初創(chuàng)公司之外,無服務器的可能性越來越大就像今天成熟的云計算一樣,成為值得企業(yè)數(shù)字化「全面采用」的新一代云計算架構。
(邯鄲小程序開發(fā))