【セッションレポート】アプリケーションコンテナとAWSの話 #cmdevio2015C

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

ども、大瀧です。
先週末に開催しましたDevelopers.IO 2015 Developer Dayで担当したセッション「アプリケーションコンテナとAWSの話」についてレポートします。セッションのスライドは以下です。


伝えたかったこと

アプリコンテナとDockerの用語紹介を除いた、セッションの主題は以下です。

  • Elastic Beanstalk Dockerのコンテナ配置はCoreOS FleetKubernetesなどのDockerクラスタとは雰囲気が異なる
  • しかし、それがAWSの課金体系とAuto Scalingにフィットするので、Beanstalk Dockerがオススメ!!

Elastic Beanstalk Dockerのコンテナ配置はDockerクラスタと雰囲気が違う

Beanstalk Dockerでは、複数インスタンス構成でも1インスタンスで実行するDockerコンテナは全台同じです。一般的なDockerクラスタでは、従来のハイパーバイザーの仮想化クラスタと同様にクラスタノード(インスタンス)のリソースをプール化し、ノードを意識せずにコンテナを実行するのに比べると素朴な実装と言えます。


ちなみに、Dockerクラスタを提供するAWSのサービスとしてはEC2 Container Service(ECS)があります。

AWSの課金体系とAuto Scalingにフィットするので、Beanstalk Dockerがオススメ!

Dockerコンテナを実行するEC2は、1時間あたりの実行時間で課金されます。ECSを含めたDockerクラスタ構成だと、実行するコンテナ数ではなくクラスタのノード数で課金されることになり、費用を最適化するためにノード数を節約したりコンテナ配置などのリソース管理をユーザーが工夫する必要があります。Beanstalk Dockerは、シンプルにコンテナ数がノード数に比例するようになっているため、費用モデルがわかりやすく、またAuto Scalingと連動することでスケールアウト/インといったリソース管理を簡単に、自動で行える仕組みを備えています。Dockerの実行環境自体の運用にコストをかけたくない、開発に集中したいというニーズに応えられるサービスになっていると言えます。

使い分けと留意点

Beanstalk Dockerはアプリ開発者向けに運用コストを最小化するサービスとして活用いただけると思います。一方、ユーザー自身でDockerコンテナをマルチテナントにサービスとして提供したい、といった用途の場合はDockerクラスタを構築するのが良いと考えます。 また、Beanstalk Dockerはスケールアウト/インをAuto Scalingに依存するため、サービスの迅速な起動を見込むことができない点にも注意しましょう。

まとめ

リリース以降あまり脚光を浴びている気がしないのですが、Beanstalk Docker、よく仕上がっているサービスだと思いますよ!みなさんぜひ触って、その良さを体感してみてください!
あ、Beanstalk Docker Multi Containerの記事も書きかけなので、さっさと公開します!