Amazon Web Services推出了AWS Step Functions,該服務讓用戶可以使用可視化工作流協(xié)調分布式應用程序和微服務。AWS Step Functions控制臺支持定義狀態(tài)機的JSON規(guī)范,從而在應用程序內執(zhí)行“步驟(steps)”,例如,調用外部的AWS Lambda函數(shù)或者運行在AWS EC2容器服務(ECS)上的容器化應用程序。
通過AWS Step Function服務創(chuàng)建的每一個狀態(tài)機都定義了一組狀態(tài)以及狀態(tài)之間的轉換。狀態(tài)可以順序或并行激活,該服務可以確保所有并行的狀態(tài)都運行完畢再進行下一步操作。狀態(tài)會執(zhí)行任務、作出決定,并通過狀態(tài)機控制這個過程。每個狀態(tài)機的多個副本可以同時獨立地運行;每個副本稱為一個“執(zhí)行(execution)”。按照AWS博客的說法,AWS Step Functions服務允許并發(fā)運行數(shù)以千計的執(zhí)行。
AWS Step Function狀態(tài)機承擔的所有工作都是由“任務(tasks)”負責處理。一項任務可以是:
AWS Lambda函數(shù):完全基于云的任務,在Lambda服務上運行。Lambda函數(shù)可以使用JavaScript(可以使用AWS管理控制臺編寫,也可以上傳到AWS Lambda服務)、Java或Python(必須上傳到AWS服務)編寫。 一個活動:這個概念是指由“worker”應用程序或者托管在類似AWS EC2或AWS ECS這樣的平臺上的微服務執(zhí)行的一項任務。 Worker可以使用任何能夠調用AWS Step Functions API的語言實現(xiàn)。 Worker必須調用API “GetActivityTask”和“SendTask*”輪詢AWS Step Functions。據(jù)AWS博客介紹,最基本的,一項活動甚至可以是一項“人工任務”,等待某個人來執(zhí)行一些動作,然后繼續(xù)。 如果一項活動有心跳超時時間,則實現(xiàn)這項活動的worker必須使用“SendTaskHeartbeat”動作發(fā)送心跳更新。 活動沒有版本控制,它們應該總是向后兼容。如果必須對一項活動的定義做向后不兼容的修改,那么就應該借助Step Functions使用一個唯一的名稱新建一項活動。錯誤處理行為和重試邏輯可以作為狀態(tài)機的一部分在JSON規(guī)范中指定。這讓你可以構建“健壯的多步驟應用程序”,即使應用程序的一部分瞬時出現(xiàn)了問題,導致了短暫的故障,它仍然可以成功運行。
在創(chuàng)建狀態(tài)機規(guī)范時,可以使用AWS Labs新推出的Ruby gem “statelint”驗證手動或機器生成的JSON,從而發(fā)現(xiàn)常見的錯誤,包括狀態(tài)不可達和遺漏終端狀態(tài)。
任何狀態(tài)機的設計都可以在AWS Step Functions控制臺上以可視化的方式進行,而在執(zhí)行過程中,可以啟用一個彩色的圖表來審查狀態(tài)機內的當前進展(步驟成功/失敗):
雖然AWS Step Functions最近才剛剛發(fā)布,但Leading Edge Forum研究人員Simon Wardley指出,該服務和類似AWS Lambda這樣的“無服務器”功能可以支持未來“編碼化(codification)”業(yè)務運作方式,這是為了提高靈活性而開始創(chuàng)建業(yè)務流程執(zhí)行語言(BPEL)的早期嘗試。
當你考慮AWS Lambda、AWS Step Functions等等服務時,你需要以一個自動化基本原則的角度來考慮,也就是說,不只是說或者編碼到地圖和相關系統(tǒng)中,而是要隨處嵌入。大規(guī)模地,以我希望我們能夠達到的競爭速度,那么,這是必須的。
據(jù)AWS博客介紹,AWS Step Functions當前的可用區(qū)域包括美國東部(北弗吉尼亞)、美國東部(俄亥俄州)、美國西部(俄勒岡州)、歐洲(愛爾蘭)及亞太(東京)。作為AWS免費試用方案的一部分,用戶每月最多可以免費運行4000次狀態(tài)轉換。除了免費使用方案外,每1000次狀態(tài)轉換的費用為0.025美元。
要了解更多信息,請查看AWS Step Functions的產品頁面、AWS博客以及在YouTube上觀看AWS最近舉辦的在線研討會“AWS Step Functions發(fā)布”。
查看英文原文:AWS Step Functions: Coordinating Distributed Applications and Microservices Using Visual Workflows