Deis: DockerベースのHeroku的PaaS

https://www.youtube.com/watch?v=GnIsmNN1sVA

1 comment | 0 points | by WazanovaNews 約3年前 edited


Jshiike 約3年前 edited | ▲upvoteする | link

Deisは、Heroku的なワークフローを実現する Docker/CoreOSベースのPaaSです。オープンソースのプロジェクトですが、既にOpDemandが運営会社になっており、同社はこれまでに約2.5億円の資金調達も完了してます。フルタイムでオープンソース開発を担当する正社員の募集も始まって、最新バージョンは0.9.1という段階のようですので、これから本格的に立ち上がっていくのでしょうか。

Deisのクリエーターであり、OpDemandのFounderでもあるGabriel Monroyのが、dockdercon 2014でDeisのこれまでの進捗を紹介しています。

  • Deisは最初のマルチホストDocker PaaS。最初はPythonで書いていたが、最近はGoが中心。
  • フルタイム5名 + ~40名のコントリビューター
  • すぐにプロトタイプをだしてコミュニティからのフィードバックをもらおうという方針で、最初のversion 0.1.0は最低限、Command-line interface / API server / Git server / Buildpacks / Scheduler を揃えたいと考えた。実際には代替策として、Chef DB schedulerの利用、当時のDockerはプロセスシグナルをうまく扱えなかったのでUNIX signalを代用、バインドマウントなどで乗り切った。
  • その後Dockerが急速に成長。Deisも機能を順次追加。log / run / release / sharingなど。
  • Docker はversion 0.8でかなり安定してきたので、DeisのDocker間の整理に着手。具体的には、
    • PaaSとして当然期待されるコンポーネント(controller / db / cache / logger / builder / registry / router)のコンテナ化。
    • バインドマウントからDockerイメージへの切り替え。
    • Dockerファイル shimを用意し、事前にHeroku Buildpackのアウトプットを挿入できるように。
    • 設定データにレイヤを追加し、コンテナ/DB/クレデンシャルの組み合わせの設定などをDockerファイルに置かなくても済むようにした。
    • プライベートレジストリからコンテナをディストリビュートできるようにした。
  • 苦労したのは、
    • Dockerボリュームは独自な抽象化をしていて扱いづらい。
    • Dockerインデックスのエラーは内容がよくわからない。(最近はよくなった。)
    • 本番環境にあるコンテナはデバッグが困難。(これはまだ続いている。)
  • 次にDeisの人気が上がってくるとスケーラビリティが課題になった。
    • ノードのコンバージェンスが遅いので、サーバ20台もしくは1分間にデプロイ5回までという制限。
  • CoreOS/Fleetでschedulerの開発に着手。
  • 開発中の新機能の中で注目してほしいのがDeis Build
    • git pushに替わるワークフロー。ビットごとに既存のDockerイメージをプロモートできる。変更されてないDockerイメージをDeisのHeroku的な12 facor モデルにもってきて、runtime設定を付けて、モデルは開発者のワークフローと同じ流れになる。アプリは自動的にrouterとつながり、curlできて、DBとか色々なパターンの設定、そして設定レイヤも追加される。DockerのデフォルトのプロセスタイプであるCMDも採用。複数のバージョンのコンテナとそのログ収集など簡単に展開できる。
    • public indexもしくはprivate registryを利用できる。
  • mesosphere: Marathonを使ってDeisアプリをMesosにデプロイ。Googleレベルの環境を提供することを目指したプロジェクト。
  • Dockerが発表したlibswarmのメリットは大きい。Docker APIによるエコシステムの更なる成長にもかなり期待している。

Qiitaの記事も参考になりました。

DEISでJavaアプリケーションを動かしてみたよ(DevOpsだね)

#deis #opdemand #docker #coreos #paas #heroku

Back