AWS re:Invent 2018におけるAWS Step Functionsの新機能は、AWSにおけるクラウドネイティブアプリケーション開発へのメッセージを強化する役割を果たす。
Amazon Web Services(AWS)のCTO(最高技術責任者)であるヴァーナー・ヴォーゲルズ(Werner Vogels)氏が同社のイベント「AWS re:Invent」で行う基調講演は、毎年内容が異なるものの、基本的には開発者に向けたメッセージだ。
例えば「アマゾンCTOが語った、『クラウドネイティブ』なアプリのつくりかた」という記事で紹介した2012年の講演を、ヴォーゲルズ氏は後から「私の行ったベストな基調講演」と振り返った。従来のアプリケーションの構築・運用方法と比べて、クラウドネイティブ(あるいはAWSネイティブ)なアプリケーション構築・運用方法がどう優れているか。なぜ新たな手法に開発者が興奮を覚えるべきなのか。語り方は毎年異なるものの、同氏はテーマをいつでもこの点に置いている。
関連して、AWSは2018年のre:Inventで、「build(構築する)」「builders(構築する人たち)」という言葉を多用し始めた。これは「develop」「developers」の価値が下がるという意味ではない。
「ソフトウェア開発の目的は、何らかのビジネスソリューションを構築・運用するためにある。だから『build』を目的に『develop』してもらいたい。クラウド(AWS)ネイティブな世界では、従来のように多数のコードを書かずに、堅牢(けんろう)で柔軟なソリューションを構築できるし、そうした方向に意識を向けて欲しい」
これは従来からAWSが訴えていることではあるが、「build」「builders」という言葉を使うことで、より明確なメッセージにしている。
「AWS re:Invent 2018」のヴォーゲルズ氏による基調講演では、AWSがどこまで顧客の構築するビジネスソリューションの堅牢性や柔軟性を考えて自社のサービスプロダクトを設計しているかを、Amazon S3やDynamoDBをはじめとしたさまざまな例を通じて紹介した。これらのサービスプロダクトを前提に開発すれば、アプリケーション側で考慮しなければならないことは減る。加えて各種の自動化・抽象化サービスを活用すれば、プログラミング量を減らし、迅速にソリューションを構築できると訴えた。
上記につながる動きの一つが、「AWS Step Functions」の新機能。Step Functionsは、マイクロアプリケーション(マイクロサービス)をつなげてフローを構築し、より複雑なアプリケーションを組み立てられるサービス。AWS re:Invent 2016で発表された同サービスは、これまでサーバレスの「AWS Lambda」と、仮想マシンサービスのAmazon EC2に対応していた。事実上、Lambdaファンクションによるアプリケーションワークフローの構築サービスだった。
AWS re:Invent 2018では、コンテナサービスの「Amazon ECS」「AWS Fargate」、および「DynamoDB」(データベース)、「AWS Batch」(バッチ)、「Amazon SNS」(プッシュ通知)、「Amazon SQS」(メッセージキュー)、「AWS Glue」(ETL)、「Amazon SageMaker」(機械学習ワークフロー)との統合を実現した。これらの実行をStep Functionsのフローに組み込めるようになった。
より正確にいうと、Lambdaでは当初から、Amazon S3、DynamoDB、Kinesis、SQSにおける、データ入力や更新などの状態変化をトリガーとして、ファンクションを起動できた。今回のDynamoDBとの統合では、LambdaファンクションからDynamoDBのデータベーステーブルにアクセスし、データを入出力できるようになった。また、今回のSQSとの統合では、LambdaファンクションからメッセージをSQSキューに送れるようになった。
ECS、Fargateとの連携では、タスク定義を通じたこれらのタスク実行をStep Functionsのフローに組み込めるようになった。これにより、Step Functionsはサーバレスとコンテナ(そして仮想マシンも)を組み合わせた多様なアプリケーションを、フローとして迅速に開発できるツールになった。
なお、AWSはコンテナオーケストレーションサービスとしてECSに加え、Kubernetesを使った「Amazon EKS」を提供している。両者のすみ分けについて、同社はEKSではポータビリティーを提供する一方、ECSで他のAWSサービスとの統合を進めるとしてきたが、今回の発表はその一例ともいえる。
他のAWSサービスの対応も、Step Functionsで作れるソリューションの幅を広げている。例えばAmazon SageMakerはこれ自体が機械学習フローを自動化するサービス。これを活用すれば、機械学習を活用したソリューションのサイクルを大幅に自動化できる。
関連して、AWSはサーバレスのLambdaで、開発言語対応の拡張を発表した。従来はNode.js、Java、C#、Go 、Pythonをサポートしていたが、新たにRubyへの対応を明らかにした。このRuby対応でもAWS自体が利用しているのが、新発表の「Lambda Runtime API」。
ユーザーは、自身がLambdaで使いたい開発言語がサポートされていない場合でも、その言語のインタープリタを持ち込み、設定することで、ファンクションから利用できる。
発表時点で、AWSはC++、Rustのオープンソースランタイムを提供開始した。また、パートナーとの協力で、Erlang、Elixir、COBOL、Node.js、PHPについても提供に向けた作業を進めているという。
Lambdaに関するもう1つの発表は「Lambda Layers」。複数のLambdaファンクションで使用する共有コードを、Lambda Layerとして設定し、各ファンクションから参照させることができる。このため、従来のように各ファンクションにパッケージしてデプロイする必要がなくなった。各ファンクションは最大5つのLambda Layerを参照できるという。
Lambda Layersの例として、AWSはNumPyとSciPyを提供開始したという。また、セキュリティやモニタリング関連のベンダーも、Lambda Layerを提供し始めているという。
Copyright © ITmedia, Inc. All Rights Reserved.