米Amazon Web Services(AWS)が「AWS re:Invent 2016」で発表した「AWS Step Functions」は、ユニークなサービスだ。分散アプリケーションの開発・運用を新たな形で実現するツールと表現できる。
米Amazon Web Services(AWS)は2016年11月末に開催した「AWS re:Invent 2016」で多数の新サービスおよび新機能を発表したが、その中に分散アプリケーションの開発・運用を新たな形で実現するユニークなサービス、「AWS Step Functions」がある。
その可能性は2通りに説明できる。1つは、AWSが2014年に発表したサーバレスコンピューティングサービスである「AWS Lambda」のLambdaファンクションを複数組み合わせて、複雑な分散アプリケーションをシンプルに構築できる点。もう1つは、Lambdaを使う・使わないにかかわらず、あらゆるアプリケーションを組み合わせて、メンテナンスのしやすいコンポジット・アプリケーションを構築するためにも使える点だ。
このサービスの開発には、SGML、XML、JSONへの貢献で知られるTim Bray(ティム・ブレイ)氏が関わっている。同氏はOpen Textの共同創業者であり、その後米サン・マイクロシステムズ、米グーグルなどで活動。2014年12月にAWSへ移籍し、シニアプリンシパルエンジニアとして働いている。re:Invent 2016ではAWS Step Functionsを紹介する講演を行った。本記事では、同講演に基づき、これを補完しながら、AWS Step Functionsを分かりやすく紹介する。
なお、re:Invent 2016における発表の多くは米国およびアイルランドでのみ提供開始、あるいはプレビュー提供開始となっているが、Step Functionsは東京リージョンでも即時提供開始された。
AWS Step Functionsでは、アプリケーションを複数のタスクのワークフローとして構成し、実行できる。これは「アプリケーションのステートを管理するサービス」ともいえる。
Step Functionsは特に、上記のタスクとしてLambdaファンクションを利用することを想定している。Bray氏も、基本的にはLambdaファンクションへの適用という観点で説明していた(ただし、後述するが、APIを通じてAWS上の仮想インスタンスやオンプレミスのアプリケーションを組み込むこともできる)。Lambdaファンクションの実行フロー(シーケンシャル、並列、分岐)を決めて実行、同時に返ってきた値などを次のLambdaファンクションに渡すなどができ、Lambdaファンクションを使って複雑なアプリケーションが構築しやすくなる。
AWSは、Step Functionsに似たサービスとして「Amazon Simple Workflow Service(SWF)」を提供してきた。Bray氏によると、Step FunctionsではSWFを大幅に活用しているという。だが、Step Functionsに関するFAQページでは、AWSがSWFを提供し続けるとしているものの、よほど複雑なシーケンスを構築したいのでない限り、新しいアプリケーションにはStep Functionsを使うべきだと説明している。理由は、SWFによるアプリケーションワークフロー構築にはプログラム開発が必要で、手間が掛かるからだ。
一方、Step FunctionsではJSON形式の言語でステート管理が行え、一連のアプリケーションプロセスの構築が迅速にできるとともに、メンテナンスが容易になる。これにより、「ファンクションをシーケンシャルに実行したい」「ファンクションを並列に実行したい」「データに基づいて、ファンクションを選択したい」「ファンクションをリトライできるようにしたい」「実行/エラー検知/完成のサイクルを回したい」「数時間実行し続けなければならないファンクションがある」といったニーズに応えられるとBray氏はいう。
現状、複数のLambdaファンクションから成るアプリケーションを構築するには、次の方法が使われているとBray氏は説明した(カッコ内はBray氏のコメント)。
そこで柔軟なスケーリングができ、ステートを確実に管理でき、エラーやタイムアウトの処理を組み込んでおり、構築と運用が楽で、実行結果の確認やデバッグのしやすいステート管理サービスとして開発したのがStep Functionsなのだという。
Copyright © ITmedia, Inc. All Rights Reserved.