AWSは「インフラを意識しないアプリ運用環境」を進化、コックロフト氏は「オープン」を約束:AWS re:Invent 2017、大量発表の文脈(2)(2/2 ページ)
Amazon Web Services(AWS)は、2017年11月末から12月初めにかけて開催したAWS re:Invent 2017で、Amazon ECS for Kuberneteや「Fargate」、さらにサーバレスコンピューティングの「AWS Lambda」における機能強化などを発表した。こうした発表から見えてくるものは、インフラを意識しない運用環境の進化だ。
Fargateは、仮想マシンレベルの設定や管理が不要になるコンテナプラットフォームサービス。
例えばECSでは、ユーザーが任意の数のAmazon EC2インスタンス群をコンテナ用として設定し、「クラスタ」としてグループ化する。このEC2インスタンス群の上で、複数のDockerコンテナから成る分散アプリケーションを運用できる。各Dockerコンテナについては、必要とするCPU、メモリといった仕様をJSONファイルに登録しておく。すると、ECSがその仕様に基づき、各アプリを適切なEC2仮想インスタンスに自動配置することで、仮想インスタンスリソースの利用を最適化する。
これに対してFargateでは、仮想インスタンスおよびクラスタに関する設定をユーザーがする必要はない。コンテナを動かすことに集中できる。ユーザーは各コンテナのCPUおよびメモリ要件などを指定すれば、あとはデプロイすればいい。コンテナの配置や仮想インスタンスレベルのスケーリングは自動的に行われる。
FargateはECSと一体化していて、「ローンチタイプ」の1つとなる。これまでの仮想インスタンスを意識する手法は「EC2タイプ」と呼ばれ、Fargateによる手法は「Fargateタイプ」と呼ばれる。同一のコンテナクラスタに、EC2タイプとFargateタイプを共存できる。
EKSによるFargateのサポートが提供開始されれば、ユーザーはコンテナの稼働に関し、まずECSとEKSのどちらかを選択し、その後ローンチタイプとしてEC2タイプかFargateタイプかを選択し、デプロイすることになる。
EC2タイプかFargateタイプかで、料金体系は大きく異なる。EC2タイプの場合、コンテナクラスタで利用するEC2インスタンスおよびストレージの料金を支払う。一方、Fargateタイプの課金は、「CPU/メモリの利用量×時間」で行われる。時間は秒単位となっている。
このように、Fargateはコンテナサービスでありながらも、利用形態と課金体系は、サーバレスコンピューティングサービスの「AWS Lambda」に近いものとなっている。開発者は、インフラをあまり意識することなく、アプリケーションをデプロイできる。
Lambdaでは、より負荷の高いアプリケーションに対応
サーバレスコンピューティングのLambdaでは、Lambda関数のリポジトリ、新たな開発言語のサポート、同時実行数制限機能、メモリ容量の拡大などが発表された。
Lambda関数のリポジトリとしてプレビュー提供が発表されたのは「AWS Serverless Application Repository」。
これまでに作成した関数を登録・保存しておくことで、チームレベルでの共有・再利用ができる。さらに魅力的なのは、Serverless Application Repository がLambda関数を一般に公開する場としても機能することだ。これを通じて、アプリケーション開発者は、他の開発者による関数を活用し、迅速にアプリケーションを構築できる。
AWSでは、チャットボット、IoT、Alexaスキル、データ処理、モバイルバックエンドなどのLambda関数が、共有されるようになっていくだろうとしている。
Serverless Application Repositoryでは、AWS Marketplaceとの連携を通じ、APIをマネタイズすることも可能。
一方、開発言語については、プレビュー段階ではあるものの、.NetCore 2.0、Goの追加が発表された。
Lambda関数の同時実行数については、2017年に入って1000同時実行への拡張が発表済み。これ以上の規模が求められる場合には、カスタマーサービスに連絡することで、ほぼ自動的に最低でも3倍の拡張が可能になっているという。
re:Invent 2017では、「AWS Lambda Per Function Concurrency/Throttle Controls」という機能の正式リリースが発表された。個々のLambda関数について最大同時実行数を設定、これを、既存データベースなどの処理能力を超えたアクセスを防ぐ、あるいはIPアドレスの消費を防ぐといった用途に使えるという。
また、Lambda関数の利用できる最大メモリ容量は、従来の1.5GBから3GBに拡大した。
また、Lambdaには「Log grab and go」と呼ばれる機能が備わり、ログのグラフから特定の範囲を選択すると、これに該当するログデータが即座に呼び出せる。
さらにLambdaコンソールには、re:Invent 2017で別途発表されたクラウドIDE「AWS Cloud9」が統合された。Lambdaコンソールにおける従来のファイルエディターに代わり、Cloud9のエディターが埋め込まれ、複数のファイルを扱えるようになっている。
ちなみに、Cloud9は、Lambda以外にも多様なアプリケーション開発に使える統合開発環境。Lambdaとの関係では、リモートのLambda関数にアクセスして編集できる他、ローカルにダウンロードして、手元でテストやデバッグをすることもできる。
LambdaとFargateで実現する迅速なアプリケーションの開発と運用
このようにLambdaは、扱えるアプリケーションの幅を広げている。
上記のFargateとこのLambdaは、クラウドネイティブなアプリケーション開発・運用を推進するのに適したツールとなっている。どちらの場合も、開発者は、インフラをほぼ意識することなく、アプリケーションをデプロイできる。また、課金体系も、仮想インスタンスを単位としたものではない。
re:Invent 2017では、開発者フレンドリーなアプリケーション運用の選択肢が増えた。開発者にとっては、インフラレベルでの制御をしたい場合と、したくない場合がある。どちらの場合も、構築したいアプリケーションに応じて採用できる選択肢が出そろってきたといえる。
Copyright © ITmedia, Inc. All Rights Reserved.