Open PaaS Advent Calendar 2015 の1日目の記事です。
DeisはHerokuライクな使い勝手を実現したDocker PaaSです。
現在のDeisはCoreOSの上にDockerコンテナとして各コンポーネントが稼働する形になっています。
しかしDeis v2では、Kubernetesをベースとしたものに生まれ変わるようです。 Deis v2 Design Document #4582
KubernetesベースになるDeis
PDFでDesign Document が上がっているので、興味のある方は読んでみると良いかもしれません。
Kubernetesによって提供される概念(Service, Pod, ReplicationController, Namespaceなど)はそのまま残るようです。
それに加えて
- S3/Swift互換のObject Storage機能を提供(RiakCSやMinioを使う)
- Docker Registryを提供(保存先はObject Storage)
- Buildpack, docker image, dockerfileによるデプロイ(Deis v1と同じ)
- Deisクラスタのintegration testの仕組みを提供(Portunesという機能らしい)
などが目に付きますね。
また、これまでモノリシックなアーキテクチャだったコンポーネントを、より細かい単位に分割するようです。
OpenShift v3との違い
KubernetesベースのPaaSといえば、Red HatのOpenShift v3が思い浮かびます。
それでは、このOpenShift v3とDeis v2の違いは何でしょう?
Design Documentを読む限りだと、一番大きな違いは「ユーザーの使い勝手」のように感じます。
Deis v2の使い勝手
Design Documentのp6には、buildpackを使った際のデプロイフローが記載されています。 これを読む限りだと、ユーザーは
git push deis master
するだけで、アプリがデプロイできるようです。これは、Deis v1の使い勝手と一緒です。
Dockerfileを使うときも、Dockerfileをgit pushすればデプロイされるようです。 Docker imageを使うときは、内部Docker registryにDocker pushしてからデプロイする形になるようですね。
いずれにせよ、使い方は大きく変わらないように見えます。
OpenShift v3の使い勝手
一方OpenShift v3はデプロイ方法がかなり特徴的です。Kubernetesと同じように、「どんな構成のアプリにするか」を記載したjsonやymlを作成し、それを専用CLIで指定するとデプロイされる・・・という仕組みです。
たとえば、GitHubにあるサンプルアプリだとこんな感じです
application-template-stibuild.json
・・・アプリケーションを構築する前に、このJSONファイルを作成する大きな仕事が必要になりそうですね。 一方、このJSONひとつで「どういうコンテナをどういう形でデプロイし、それらはどういう形で接続されるか」といった、アプリケーションを構築する要素すべてを定義することができます。
いつ出てくるの?
現在でも、Deis v1系の開発は進んでいます。これを執筆している時点でのバージョンは 1.12.1ですが、1.13, 1.14のリリースが予定されています。
Deis v2については、最初のalphaリリースが今年末に予定されているようです。