- git push
- CIでテスト
- masterなら
- Docker Hub で build && push
- 「なにかしら」にwebhookで通知して、CIのテストも通ってたら次へ
- 「なにかしら」がクラスタの各インスタンスにdocker pull && docker runをやらせる
ところで「なにかしら」は
- 役割毎のクラスタを扱える(hogeservice-web, hogeservice-fugaworkerみたいな)
- クラスタの各インスタンスのipとsshkeyを安全に覚える
- 各インスタンスの負荷とか、あるいはSQSのメッセージの数とかをトリガーにして、勝手にクラスタをスケールする
っていう「なにかしら」欲しい
ところで
ところでDockerのおかげでやっとデプロイの世界が人手ベースなクソ世界から抜け出せますね
まるでperlでFW使わずWebサービスを書いているような虚しさでした。
もう、routerとかも使わずに/main.cgiとかにアクセスさせてるような気分でしたね。
Chefとか、Capistranoもしっくりこない。
ProvisionもDeployもひとくくりにしてやりたいし、そもそもChef遅過ぎてウケるので
(Vagrantで環境をテストするのだけでクソ時間かかる)
デプロイの世界におけるRailsみたいな感じかなーと。(もう少し環境が整えば)
やり方がやっとまともに規約化&&共有されるような気がします。
あとは、Dockerが扱えないレイヤ(フックをトリガーにしたデプロイ、監視、クラスタ管理)を普通にやってくれるものが出れば。
このへんもみんなやってるのにイマイチやり方が統一されてないというか、単一のフレームワークで提供されてない感じです。
rubyでrouterとmigrationとtemplaterとバラバラにつかって頑張って統合してる感じです。
規約化の神秘
今更な話ですが、やっぱり「規約化」とか、「統一感」って大事です。
Railsみたいに、これ使えばやりたいことは全部出来るっていうプラットフォーム。
実態はわりと色々なツールのグルーです。(自分自身で書いたgemも合わせて)
個人的には、いろいろ散在してるモジュールの「組み合わせ」自身を定義してくれたのが一番の意義かな、と思っています。
この組み合わせを使えば全てOKってことを保証してくれる。いやそれどころかモジュールの連携もFWが面倒を見るので各モジュールについて考えなくても良い。
これでやっと、やりたいことに集中出来る。
モジュールの組み合わせも規約化されるので、開発もポータブルになる。
いちいちそういう層まで考えなくても、単一の知識で理解出来るようになります。
ポータブルになる=プラットフォーム
と言うことも出来るでしょう。
こういったレベルで統一&&規約化されれば、やっとコミュニティが発達するんです。
モジュール自身がコミュニティを持つのは健全ではないし、いまいち発展しにくい。なぜなら各論的だからです。
各論的な話には専門家(というかオタク)しか集まりません。
そうすると万人のためにならないコミュニティが出来上がります。
なぜコミュニティが万人のためでないといけないかというと、各論的だとポータブルでないからです。
ポータブルでないと、プラットフォームにならない。
プラットフォームにならなければ、共通の技術にならない。
優れたFWが共通の技術にならなければ、「技術」は真の意味で発達しない。
なぜなら、「技術」とは共通の基盤だからです。各個人が暗黙的にもつ知識のことではありません。
って感じでモジュール化の流れをdisりつつ、神デプロイFW早く出てほしいな〜と思いました。