AWS Elastic BeanstalkがDockerをサポート、新しい形態のPaaSへ。事実上どんな言語でも使え、手元の開発環境をそのままPaaSへデプロイできる

2014年4月28日

コンテナ型仮想化を実現する技術「Docker」が、PaaSの新しい形態を生み出そうとしています。

いわゆる従来のPaaS(Platform as a Service)は、使えるプログラミング言語がPaaSによって決められています。例えばHerokuならRubyやPython、Node.js、Javaなど(記事末追記参照)、Google App EngineならPythonやGo、Java、PHPなどです。

しかし、あらかじめPaaS側に実行環境があることで開発者は手軽にプログラムをクラウドで実行でき、クラウドが負荷などに応じてスケーラブルな運用をしてくれます。ここにPaaSの大きなメリットがあります。

一方でPaaS側の実行環境に依存することのデメリットもあります。1つ目は、PaaSでサポートされていない言語やライブラリ、フレームワークなどが使えない点。もう1つは、ローカルの開発環境とPaaSの実行環境を完全に一致させることは一般に難しく、実行環境の微妙なバージョンの違いやライブラリの違いなどによってアプリケーションがPaaSで思った通りに動かない可能性を排除できない点です。

AWS BeanstalkがDockerをサポート

DockerはこうしたPaaSのデメリットを打ち消すことができる技術です。Dockerは実行環境とコードを軽量なパッケージであるコンテナとしてまとめ、Linux OS上にデプロイできます。つまり、PaaS側に持っていた実行環境をコンテナ側に持たせることができるため、事実上どんなプログラミング言語でもPaaSでサポートできるようになりますし、自分で用意した好きなライブラリやフレームワークが使えるようになります。

これはある意味で、OSとアプリケーションの実行環境をまるごとパッケージしたVMをIaaSにデプロイし、負荷に応じてオートスケールさせるのと似ています。しかしDockerではOSカーネルなどは含まれておらず軽量な点が大きな違いです。プロビジョニングにかかる時間もVMと較べてさらに短時間で済みます。

Dockerによるアプリケーションのクラウドへのデプロイは、IaaSと(既存の)PaaSの中間的な存在といえるかもしれません。

このDockerを、AmazonクラウドでPaaS機能を提供するAWS Elastic Beanstalkがサポートすると発表されました。「AWS Elastic Beanstalk for Docker」です。DockerコンテナをAWS Beanstalkによってデプロイ、監視し、ロードバランサーを使って、正常に稼働しているインスタンスにリクエストを分散、スケーラブルな運用を実現してくれます。

Dockerの技術を用いることで、開発者はローカルの開発環境で使ったプログラミング言語やライブラリといった実行環境をコードと一緒にそのままDockerコンテナとしてまとめ、AWS Elastic Beanstalkでデプロイできるようになります。そのため開発環境と実行環境の齟齬は発生せず、好きな環境で開発し、そのまま運用をクラウドに任せることができるのです。

Dockerが登場した時点で、Dockerコンテナをデプロイできるクラウドサービスが登場するであろうことは予想されていました。それがこんなに早い時期に、クラウドのトップベンダであるAmazonクラウドから登場するのは多くの人の予想を超えたものだったのではないでしょうか。

すでにRed HatはDockerを積極的に取り入れ、同社のOSであるRed Hat Linux Enterpriseはもちろん、PaaSであるOpenShiftでも採用していく方向ですし、ほとんどのLinuxディストリビューションでDockerが利用可能になります。当然、今後ほかのクラウドでもDockerコンテナをデプロイする機能は標準的なものとなっていくはずです。

Dockerの技術はクラウドに大きな変化を与えていくことになりそうです。

4/28 16:00追記) HerokuではRuby、Java、Python、Node.jsの言語サポートのほかに、内部でLXCコンテナ技術を用いており、Dockerと同様にこれを用いることでさまざまな言語のサポートが可能だというご指摘をいただきました。表記が正確でなかった点についてお詫びして追記いたします。

あわせて読みたい

AWS Docker クラウド PaaS




タグクラウド

クラウド
AWS / Azure / Google Cloud
クラウドネイティブ / サーバレス
クラウドのシェア / クラウドの障害

コンテナ型仮想化

プログラミング言語
JavaScript / Java / .NET
WebAssembly / Web標準
開発ツール / テスト・品質

アジャイル開発 / スクラム / DevOps

データベース / 機械学習・AI
RDB / NoSQL

ネットワーク / セキュリティ
HTTP / QUIC

OS / Windows / Linux / 仮想化
サーバ / ストレージ / ハードウェア

ITエンジニアの給与・年収 / 働き方

殿堂入り / おもしろ / 編集後記

全てのタグを見る

Blogger in Chief

photo of jniino

Junichi Niino(jniino)
IT系の雑誌編集者、オンラインメディア発行人を経て独立。2009年にPublickeyを開始しました。
詳しいプロフィール

Publickeyの新着情報をチェックしませんか?
Twitterで : @Publickey
Facebookで : Publickeyのページ
RSSリーダーで : Feed

最新記事10本