Amazon AWSのEC2 Container ServiceにWindows Containersのサポートが加わる

Container

Microsoftは3か月前のWindows Server 2016の立ち上げのときに、Windowsのサーバー上でDockerエンジンを使ってコンテナを動かすことを可能にした。これによりデベロッパーは、Windowsの実行コードをコンテナに収めてWindowsのサーバー上で動かすことができる。もちろんWindowsの実行コードをLinux上で動かすことはできないが、使用するDockerエンジンやそのコマンド体系はデベロッパーにとってすでにおなじみのものだ。そして今日(米国時間12/20)AWSは、同社のEC2 Container Service(ECS)がWindows Containerをベータでサポートする、と発表した

Amazonはそのために、ECSのコンテナエージェントのWindowsバージョンを独自に開発した。しかも、Amazonとしては異例にも、エージェントのコードはApache 2.0のライセンスによりGitHub上で提供される

MicrosoftとDockerの密接な協働により、DockerエンジンがWindows上で動くようになった(Windows 10のAnniversary Update以降を含む)。Windows Server 2016上ではDocker Engineの商用サポートも提供され、今後はエンタープライズ向けのサポートも提供される。ただしWindowsのコンテナは、Dockerの管理ツールに触れることなく、PowerShellからでも管理できる。

なお、一般的にコンテナは軽量のリソースと見なされるが、Windows ServerのDockerイメージはかなり大きくなりがちだ(Amazonによると9.66 GB)。ECS上でWindows Containersを使い始めるためにも、Linuxのコンテナと違って、かなりややこしい部分がある。

古いアプリケーションをクラウドへ移す、という最近のエンタープライズの動向に伴い、Windows上のコンテナはそれらをレガシーのハードウェアからAWSやGoogle Cloud Platform、それにMicrosoft自身のAzureプラットホームなどへ移行させるための、容易な方法と見なされるようになった(AzureはWindows Containersをかなり前からサポートしている)。Amazonは今回Windows Containersを新たにサポートすることにより、この市場のちょっとした分け前をいただきたいのだ。

[原文へ]
(翻訳:iwatani(a.k.a. hiwa))

AmazonがAWS上でDockerコンテナを管理するEC2 Container Serviceを発表

Amazonはラスベガスで行われているデベロッパカンファレンスre:inventで今日(米国時間11/13)、同社初のDocker関連プロダクトEC2 Container Service発表した。それは同社のクラウドコンピューティングプラットホームの上でDockerのコンテナを管理するサービスだ。このサービスは今はプレビューなので無料で利用できる。

AmazonのCTO Werner Vogelsによると、コンテナは確かに優れた技術だが、そのスケジューリングや管理は必ずしも容易ではない。“そういうオーバヘッドなしで、コンテナの美味(おい)しいところをすべていただきたい、と思いませんか?”、と彼は問う。この新しいサービスによりEC2の上では、管理が自動的に行われるインスタンスのクラスタとしてコンテナを動かせる。

Amazonによると、コンテナを利用するにあたって、何らかのクラスタ管理ソフトウェアないしハードウェアをインストールしたり、ソフトウェアのニーズにハードウェアを合わせるという努力がもはや要らない。それらに代わってEC2 Container Serviceが、すべての管理を行う。ユーザはインスタンスをクラスタの中へローンチし、タスクを定義して始動する。それ以降は、このサービス(略称: ECS)がすべての面倒を見る。ECSをMesosなどそのほかのDocker関連プロダクトで拡張することもできる。またユーザ(デベロッパ)がコンテナの管理をプログラム的に行うために、AmazonはAPI集合も提供する。

Amazonはこのサービスのアドバンテージを次のように列挙している:

  • 容易なクラスタ管理 – ECSはDockerのコンテナから成るクラスタをセットアップし管理する。ECSはコンテナの立ち上げと終了を行い、クラスタのステートに関する完全な情報を保持する。複数のAvailability Zones(可利用性ゾーン)にまたがる何十万ものコンテナを擁するクラスタ群へと、スケールすることもできる。
  • 高パフォーマンス – コンテナをアプリケーションのビルディングブロックとして使用できる。何千ものコンテナを数秒で始動、停止、および管理できる。
  • 柔軟性に富むスケジューリング – ECSはスケジューラを内蔵しており、可利用性と実利用の均衡を図るためにクラスタ全域にわたるコンテナの適正な分散化に努める。ECSは完全なステート情報を提供するので、それを利用してスケジューラを自作、または既存のオープンソースのスケジューラの最適利用により、サービスのAPIを利用できる。
  • 拡張性と可搬性 – ECSが動かすDockerデーモンはユーザがオンプレミスで動かす場合のものと同じである。したがってユーザはオンプレミスとAWSクラウドとのあいだで、ワークロードを容易に移動できる。
  • リソース効率 – コンテナ化したアプリケーションはリソースをきわめて効率的に利用できる。一つの同じEC2インスタンスの上で、複数の互いに無関係なコンテナを動かして、可利用なリソースのすべてを有効利用できる。たとえば、短期的な画像処理ジョブと、長期にわたって動かすWebサービスを、同じインスタンスの上で動かせる。
  • AWSの統合 – アプリケーションが、エラスティックIPアドレスやリソースタグ、仮想プライベートクラウド(Virtual Private Cloud, VPC)などAWSの機能を利用できる。実質的にコンテナは、EC2やS3などと同じ基盤的レベルのビルディングブロックの一つである。
  • セキュリティ – EC2のインスタンス上のタスクはAmazon仮想プライベートクラウド(Amazon Virtual Private Cloud)の中で動く。それらのタスクはIAM ロールやセキュリティグループなど、AWSのセキュリティ機能を利用できる。コンテナはマルチテナント環境で動いていても、あらかじめ定義されているインタフェイスを介してのみ互いにコミュニケーションできる。コンテナはユーザが保有しコントロールするEC2インスタンスの上でローンチされる。.

これによってAmazonは、そのほかの大手クラウドベンダのやり方に合わせようとしている。たとえばGoogleは、同社のCloud PlatformにDockerの能力を加えるべく多大な投資をしており、Kubernetesや、App Engineへの深い統合、そして最近ローンチしたContainer Engineなどにより、コンテナ環境の整備充実に努めている。Microsoftもまた同社のAzureプラットホームにDockerのサポートを加えつつあり、最近ではGoogle主導のKubernetesのサポートも開始した。

今日の発表の前日にAmazonの役員の一人が、Amazonは顧客が求めているサービスを提供したいのだ、と述べた。たしかに今日の発表を見るかぎり、同社が顧客の願いに耳を傾けていることは確実だ。

[原文へ]
(翻訳:iwatani(a.k.a. hiwa))