ニュース

AWS、Dockerコンテナ管理サービス「Amazon EC2 Container Service」などをリリース

モノリシックからマイクロサービスへ~「AWS re:Invent」ボーガスCTO基調講演

 11月11日~14日(現地時間)の4日間に渡って米国ラスベガスで開催されたAmazon Web Services(AWS)の年次カンファレンス「AWS re:Invent」では、全部で11の新サービスが発表された。

 このうち7つは12日に行われたアンディ・ジャシー(Andy Jassy)SVPのキーノートで紹介されている。

 そして残りの4つは、AWSのもうひとりの顔であるヴァーナー・ボーガス(Werner Vogels)CTOによりその詳細が13日のキーノートで明らかになった。毎年、ジャシー氏のキーノートではビジネスユーザー向けのジェネラルなサービスが発表されるが、一方のボーガスCTOはデベロッパーの期待に応えることを意識した最先端のテクノロジを発表している。

 昨年のre:Inventでは「Amazon RDS for PostgreSQL」や「Amazon Kinesis」がオープンになったが、果たして今年は何をデベロッパーに見せてくれたのだろうか。本稿ではボーガスCTOのキーノートの内容をもとに、AWSが今後目指そうとしているテクノロジの方向性を検証してみたい。

 ボーガスCTOのキーノートで発表された新サービスは次の4つだ。

・インスタンスをまたがったDockerコンテナ群を管理する「Amazon EC2 Container Service(ECS)」
・クラウド上でコードを実行するイベントドリブンなコンピューティングサービス「AWS Lambda」
・「Elastic Block Store(EBS)」ボリュームの大容量化/高速化
・IntelのカスタマイズドCPUによる新EC2インスタンス「C4」

 以下、それぞれについて簡単に概要を紹介していく。

AWSのヴァーナー・ボーガスCTO

複数コンテナの柔軟なスケジューリングを行う「Amazon EC2 Container Service」

今回、re:Invent開催前からAWSがDocker関連の発表を行うことはすでに知られており、その内容に注目が集まっていたのだが、ボーガスCTOが発表したのは、EC2インスタンスをまたいで存在する複数のDockerコンテナ(以下、コンテナ)を管理するサービス「Amazon EC2 Container Service(ECS)」だった。

 ボーガスCTOはECSについて「高スケーラブルと高パフォーマンスを実現するコンテナマネジメントサービス」と称しているが、特に組み込みスケジューラによる柔軟なコンテナスケジューリングを可能にしている点が大きな特徴だといえる。

 「多くのカスタマから“コンテナのスケジューリングをもっと簡単にしたい”という強いリクエストを受けていた」(ボーガスCTO)の言葉通り、複数のEC2上にコンテナが存在している場合、リソースの効率的な運用は容易ではなかった。

 ECSでは、コンテナの設定情報やメモリ/CPUの条件がJSONで記述された「タスク定義」をもとに、各クラスタにひもづけられたスケジューラを起動する。クラスタとは複数のEC2インスタンスで構成されたリソースプールのことで、ECSはスケジューラが起動されるとクラスタ内のコンテナを最適なEC2上に配置し、リソースの効率的な利用を実現する。スケジューリングにはデフォルトの組み込みスケジューラのほかに、ユーザー自身が記述したスケジューラを利用することも可能だ。起動したコンテナのステート情報もAPI経由で取得できる。リポジトリにはDocker Hubを利用可能。

 どちらかといえばコンテナ本来の特徴である“軽くて速い実行”よりも、“大量のコンテナを簡単に扱う”ことに主眼を置いたサービスだといえる。

イベント開催前から話題になっていたDocker関連の発表はEC2上のコンテナをクラスタ管理する「Amazon EC2 Container Service」
Amazon ECSの特徴は「ネイティブサポート」「スケジューラ」「Docker Hubとの統合」「アプリケーションの可搬性」

 キーノートではDockerのベン・ゴラブ(Ben Golub)CTOが登壇し、「Dockerはただのコンテナテクノロジではなくエコシステムとして存在する。デベロッパーとは本来、コンテンツクリエイターであり、そのディストリビュートのために心を砕くべきではない。彼らはインフラから解放され、もっと自由になるべきなのだ。インターネットというユニバーサルなパブリッシングプラットフォームに彼らの作り上げたアプリケーションを効率的に広げていく、それがDockerの使命であり、AWSとDockerのインテグレーションはデベロッパーの成功を推進する力になる」と強調。

 Dockerコンテナの果たすべきステップとして

1. OSからプロセスを分離させる
2. “run anywhere”を実現する質の高いAPIを用意する
3. エコシステムを構築する(Docker Hub)
4. 新しいコンテナベースのアプリケーションモデルを構築する
5. 上記すべてを管理するプラットフォームを構築する

という5つのプロセスを挙げている。また、Docker on AWSのケーススタディとして、会員制ECサイトとして急成長しているGiltの事例を紹介、Docker導入前は開発からデプロイまで数週間かけて7つのモノリシックなアプリを稼働していたが、導入後は数分おきにデプロイを実行し、300を超えるマイクロサービスを稼働させることで、迅速なアプリケーションの改善を実現させている。

 Amazon ECSは現在、プレビュー版が提供されており、EC2ユーザーであれば誰でも無料で利用できる。

DockerのコラブCEO。「Dockerは誕生からまだ18カ月の会社だがすでに5000万ダウンロードを達成した」
キーノートで行われたAmazon ECSのデモ画面。複数のコンテナが自動的に適切なEC2に配置される。コンテナの状態もAPIから取得可能

イベントドリブンなコンピューティングサービス「AWS Lambda」

 ほぼ事前の予想通りの内容だったECSに対し、会場の驚きがより大きかったのはむしろ新コンピューティングプラットフォーム「Amazon Lambda」のほうだったといえる。Lambdaの最大の特徴は、「インフラの管理に煩わされることなくクラウド上でコードを実行」(ヴァーナーCTO)できる点だ。

 例えばストレージ(S3)に新たな画像データが入ってきたときにサムネールを作成する機能がほしい場合、これまではEC2上に別のサーバーを立て、S3のイベントを監視する必要があった。だが、イベントを待ち受けている期間、ずっとEC2を起動しているのはリソースの無駄使いになり、余計なコストも発生する。

 Lambdaはこうした無駄を取り払うため、イベントが発生した場合、つまりリソースに何らかの変更があった場合にだけEC2インスタンスを立ち上げ、必要な処理を並列実行する。そして必要がなくなれば自動的にリソースをゼロにする。ユーザー側はイベント処理のためのリソース管理に煩わされることがなくなるというわけだ。

「AWS Lambda」はクラウド上でダイナミックにコードを実行するコンピューティングプラットフォーム

 デベロッパーが記述するコードやコンテキスト情報(メモリ領域やタイムアウト期間など)は「Lambda function」と呼ばれる。Lambda functionの実装は現在のところNode.jsのみだが、将来的にはその他の言語にも対応する予定だ。Lambdaとひもづけることができるのは「Amazon S3」「Amazon Kinesis」「Amazon DynamoDB」「AmazonSQS」の4サービスで、いずれもリアルタイムなデータ処理が基軸のサービスであることに注目したい。

 データに変更が生じるとそれをイベントとしてとらえ、イベントをトリガにして複数の関数(function)がリアルタイムに実行される――。こうした処理の流れは、例えばIoTやストリーミングの現場での効率的な活用が期待される。

 ヴァーナーCTOに紹介されて登壇したNetflixのChief Product Officerであるニール・ハント(Neil Hunt)氏は同社におけるLambdaのユースケースとして「メディアファイルのエンコーディング、ディザスタリカバリ用のバックアップ、セキュリティとコンプライアンス、イベントモニタリング」の4つの例を挙げている。

 リソースに変更が生じるごとに、新たなバリデーションが必要になることが多いメディアビジネスにとって、タイムラグが生じることなく、自動的に並列かつ非同期に処理を実行できるLambdaは「アプリケーション管理を新たなステージに押し上げる存在」(ハント氏)だといえる。サービス名に可変的な変数を表すことが多い“λ(ラムダ)”を冠しているのも、リアルタイムでダイナミックな処理をストレスなく実現するというAWSの方針が見て取れる。

 現時点でLambdaが利用できるのは米国リージョン(East/West)とEUリージョンの限定プレビューのみ、料金体系は「メモリ使用量(リクエスト量)×実行処理時間(100ミリ秒単位)」となっているが、「1カ月あたり320万秒および100万リクエスト」までは無料で提供される。

NetflixのハントCMO。NetflixはAWSの新サービスをプレビュー前からともに検証することが多いがLambdaの開発においても重要なパートナー
LambdaはIoTやストリーミング、サーバフリーなバックエンドシステムでの活用が期待される

容量もパフォーマンスも大幅にアップデートされた「Elastic Block Store」

 まったく新しいサービスであるECSとLambdaに比べると、これから紹介する「Elastic Block Store」ボリュームのアップデートはやや地味に映るかもしれないが、re:Inventに参加したAWS日本法人の玉川憲氏によれば「おそらくSIerにとっては最も衝撃的な発表なのでは」とコメントしている。

 EBSの新スペックは以下のとおり。

・General Purpose(SSD):最大16TBの容量と1万IOPSのベースパフォーマンス(最大スループット160MB/秒)
・Provisioned IOPS(SSD):最大16TBの容量と2万IOPSのベースパフォーマンス(最大スループット320MB/秒)

 従来はGeneral Purposeが1TB/3000IOPS、Provisioned IOPSでも1TB/4000IOPSだったことを考慮すると、大幅な改善が実施されたことがわかる。これまで1TBしか取れなかったスナップショットもより大きなボリュームで取得することができ、ストライピング構成なしでも大規模なワークロードを実行することが可能になる。

 エンタープライズの運用管理者にとっては朗報だが、提供開始時期は現在のところ明らかになっていない。より早いタイミングでの提供が待たれる。

EBSのボリュームが大幅に大容量化/高速化

IntelがカスタマイズCPUを提供した新EC2インスタンス「C4」

 最後に紹介するサービスは、クロック周波数2.9GHz(ターボブースト時3.5GHz)の「Intel Xeon E5-2666 v3(Haswell)」をベースにした新EC2インスタンスタイプ「C4」だ。最大36コアのvCPUを利用できるため、マルチコアによる大規模なワークロード処理を高速に実行可能だ。C4はメモリ利用量とvCPU数に応じて全部で4つのインスタンスモデルが用意されているが、いずれのモデルもEBSにデフォルトで最適化されており、既存ユーザーは追加料金なしで利用できる。

 だがC4の最大のポイントはなんといっても、「AWSクラウドに最適化されたカスタムプロセッサをIntelが提供」したところにある。キーノートにはIntelのシニアバイスプレジデントでデータセンタービジネスのトップであるダイアン・ブライアント(Diane Bryant)氏がボーガスCTOとともに登壇し、「地球上で一番速いパフォーマンスを出すEC2インスタンスをあなた(ボーガスCTO)の顧客に提供できることをうれしく思う」と語っている。

新EC2インスタンス「C4」のためにIntelはHaswellベースのカスタムCPUを提供した
カスタムCPUの発表にはIntelのデータセンター部門トップのブライアンSVPが直々に登壇、両社のアライアンスの強さを印象づけた

***

 キーノートにおいてボーガスCTOは何度も「microservices」や「small building blocks」というフレーズを使っている。そして、前日にジャシーSVPによって発表された「Amazon Aurora」などを含め、今回の新サービスはいずれも、巨大なモノリシックアプリケーションではなくいくつものマイクロサービスやビルディングブロックで構成されるシステムがITの主流となりつつあることを表しているように見える。

 マイクロサービスであれば開発も更新もメンテナンスも速いサイクルで回すことができる。1つのサービスやブロックの障害ですべてのシステムを止める必要はもうない。小さく、速く、細かく、非同期に、並列に、そして自動的に――。

 AWSが提唱してきた本当の意味でのレジリエンスが、クラウドの世界で徐々に具体性をもって実現しつつあるのは確実のようだ。そしてそれは従来のシステムインテグレーションの常識にとらわれているとおそらく理解することは難しい。

 AWSは本気でまったく新しいフレームワークを世界に対して示し始めた。ジャシーSVPが「re:Inventはエデューケーションカンファレンスだ」と発言した根拠もそこにある。AWSが描く新しいITの世界を顧客やパートナーが理解するための手間をAWSは惜しまない、おそらくそんなメッセージが今回のre:Inventには込められている。

五味 明子