Amazon Web Servicesは、視覚的なワークフローを使用して、分散したアプリケーションとマイクロサービスを連携させられるサービスであるAWS Step Functionsを開始した。AWS Step Functionsでは、JSONでステートマシンを定義でき、例えばAWS Lambda関数やAWS EC2 Container Service(ECS)上で動作するコンテナに配備されたマイクロサービスアプリケーションを呼び出すことによって、アプリケーション内で連携する「ステップ」を実行できる。
AWS Step Functionサービスを通して生成されるステートマシンでは、ステートの集合と、ステートマシン間の遷移を定義する。ステートは直列または並列にアクティブになり、並列のステートはすべてが完了してから、次に遷移することが保証される。ステートマシンでは、ステートによって処理の実行、判定、遷移の制御が行われる。ステートマシンの複数のコピーは、同時に独立して実行でき、それぞれのコピーは「実行」と呼ばれる。AWS Blogによると、AWS Step Functionsサービスは同時に数千の実行を動作させることができる。
AWS Step Functionのステートマシン内で実行される処理は「タスク」によって行われる。タスクは以下のいずれかである。
- AWS Lambda function,。Lambdaサービス上で動作する完全なクラウドベースのタスクである。Lambda関数は、JavaScript(AWS Management Consoleを使用して記述されるか、AWS Lambdaサービスにアップロードされる)、または、JavaあるいはPython(AWS Lambdaサービスにアップロードされなければならない)で記述することができる。
- Activity。これは、AWS EC2またはAWS ECSなどのプラットフォーム上でホストされる「ワーカ」アプリケーションやマイクロサービスによって実行されるタスクを表す概念である。
- ワーカは、AWS Step Functions API呼び出しができる任意の言語で実装可能である。
- ワーカは、「GetActivityTask」および「SendTask *」API呼び出しを使用してAWS Step Functionsをポーリングする必要がある。AWS Blogでは、最終的にアクティビティが「人が実施するタスク」になることさえあることが述べられており、その場合、人が何らかのアクションを実行するのを待ってから、以降へ続く。
- アクティビティがハートビートのタイムアウト値を持つ場合、そのアクティビティを実装するワーカーは「SendTaskHeartbeat」アクションを使用してハートビートの更新を送信する必要がある。
- アクティビティはバージョン管理されておらず、常に下位互換であることが望ましい。アクティビティ定義に下位互換でない変更を加える必要がある場合は、Step Functionsを使用して一意の名前で新しいアクティビティを作成する必要がある。
状態マシンの一部として、JSON仕様内でエラー処理動作と再試行ロジックを指定できる。これにより、アプリケーションの一部で一時的な問題によって、一時的に処理が失敗した場合でも正常に動作する「堅牢な複数ステップアプリケーション」を構築できる。
ステートマシンの仕様を作成するとき、AWSラボの新しいRuby gem「statelint」により、手動、あるいは自動で作成したJSONに対して、到達不可能な状態や、終了状態の漏れなどの一般的なエラーを検出することができる。
ステートマシンの設計はAWS Step Functionsコンソール内で視覚化でき、実行中にステートマシン内の現在の進行状況(およびステップの成功/失敗)をデバッグするために色つきの図を参照できる。
AWS Step Functionsは最近リリースされたが、Leading Edge Forumの研究者Simon Wardley氏は、これがAWS Lambdaのような「サーバレス」の機能と連携することによって、以前にBusiness Process Execution Language (BPEL)を作るところから始まったような、将来、迅速にビジネスを実行するためのビジネスロジックのコード化に貢献できることを述べた。
AWS LambdaやAWS Step Functionsなどについて考えるとき、基本原則を自動化するという観点からそれらを見る必要があります。つまり、マップや関連システム内でコーディングするだけでなく、それをいたるところに埋め込む必要があるのです。規模とスピードの競争に我々がついていけることを期待していますし、競争によって、これがなくてはならないものになるでしょう。
AWS Blogでは、AWS Step FunctionsがUS East (Northern Virginia), US East (Ohio), US West (Oregon), EU (Ireland)およびAsia Pacific (Tokyo)リージョン内で現在利用可能であることが述べられている。AWS Free Tierの一部として、月に最大4,000の状態遷移を無償で実行できる。無償範囲を超えると、1,000回の状態遷移ごとに0.025ドル課金される。
AWS Step Functionsに関する他の情報は製品ページ、AWS Blog、およびYouTube上の最近のAWSウェビナ「Announcing AWS Step Functions」で確認できる。
Rate this Article
- Editor Review
- Chief Editor Action