HerokuがDockerのサポートを開始、DockerコンテナがPaaSで運用管理可能に。その仕組みは
HerokuがDockerのサポートを発表しました。ベータ版として利用可能です。
Dockerコンテナ化したユーザーのアプリケーションをHerokuにデプロイできるようになったことで、コンテナの死活監視や負荷分散、負荷に合わせたコンテナの増減、ルーティングなどの運用をすべて、Herokuが備えるPaaSの機能に任せられるようになります。
Herokuはどのような仕組みでDocker対応を実現したのでしょうか? 米国Heroku Inc. ソリューションアーキテクトの相澤歩氏に教えていただきました。以下はその説明を基にしたものです。
HerokuはいかにDocker対応を実現したか
Herokuが通常のHerokuアプリケーションを実行するまでのプロセスは次のようになっています。
通常のHerokuの動作
ユーザーがコードをHerokuにGit Pushすると、Slug Compileが動いてコードの依存関係が解決され、関連するライブラリなどが追加されてSlugファイルが作られます。
Slugファイルは実行に必要なファイルがまとめてTarボールになったもので、Heroku内部のコンテナ機能であるCedar Containerにロードされて実行されます。
Cedar ContainerはDyno Managerによって、さまざまな運用管理が自動化されています。
Docker対応時の動作
今回のDocker対応では、ユーザーはあらかじめHerokuが用意したDockerイメージとDockerfileのテンプレートを使います。これを基にアプリケーションを開発し、HerokuのツールによってローカルでSlug互換のファイルを生成、Herokuにデプロイ。Dyno Managerの上で実行することになります。
(2015/5/12追記:公開時の図が一部間違っていたため、上図を差し替えました)
現在、Herokuが用意したDockerfileのテンプレートではNode.jsとRubyがサポートされており、今後ほかの言語のサポートも追加されていくとのことです。
このようにHerokuのDockerサポートは、Dockerに対応しつつも従来のHerokuのアプリケーションと同様にPaaSの機能が活用できるようになっています。そのため、ユーザーが用意したDocker環境を何でも受け入れて実行するのではなく、Herokuの環境できちんと実行できるようなDockerイメージとDockerfileが用意されているわけです。
Docker対応は昨年から議論されていた
「HerokuでのDockerサポートは、昨年の早い時期には社内で繰り返し議論されていました」と相澤氏。Herokuによる従来の体験を損なわずに、運用品質も下げずにいかにDockerをサポートするかを検討した結果、このような仕組みの採用になったとのことです。
「HerokuでDockerをサポートしたということは、Salesforce Platformとして、コンテナ型のアプリケーションアーキテクチャのエンタープライズ領域への適用を本気で推し進めていくという意志の表れとも言えます。今後のアップデートにおいても、柔軟で堅牢なプラットフォームとして個人ユースから大規模なシステムまで、あらゆるユーザの生産性向上を支援していきます。」(相澤氏)
現在、Dockerの運用管理のためのフレームワークとしてKubernetesなどさまざまなソフトウェアが注目を浴びていますが、まだ成熟には時間がかかると見られていますし、エンタープライズで利用されるようになるにはそこからまたさらに実績が求められるでしょう。Herokuのような実績のあるPaaSがDockerのサポートを開始することは、そうした状況に一石を投じることになるかもしれません。
あわせて読みたい
伊藤直也氏が語る、モダンなWebテクノロジーに共通する傾向とは?(前編) Chef、Docker、MicroservicesからReact、FRPまで。QCon TOkyo 2015
≪前の記事
Google、HBase API互換のCloud Bigtableを公開、Googleの基盤で使われてきたNoSQLデータベースが利用可能に。Cloud Datastoreとの違いは?