ottoはvagrant代替ではないし現状では自由度が低すぎて使い物にならない

ottoに再挑戦してみた雑感を自己まとめ
0
西田和史(k.bigwheel) 開発基盤エンジニア @ Speee ⌨️🦀🖊️ @k_bigwheel

otto再挑戦したら少し使い方がわかった。しかし現状ではdockerイメージとして提供されていないdb/ミドルウェアを使うケース、標準のtypeではカバーできない言語では基本的に辛い。dockerイメージで事足りないようなdb/ミドルウェアの使い方をするケースもつらい

2016-02-29 03:41:47
西田和史(k.bigwheel) 開発基盤エンジニア @ Speee ⌨️🦀🖊️ @k_bigwheel

例えばscalaをottoでやろうとすると辛い。そりゃtypeにjavaを指定してホストでコンパイルした成果物をottoで作ったVM内で走らせればできるけど、デバッグランしたいときやコンパイル環境によって差異がありうるのでやはりゲスト内でsbt/scalaコマンドを打ちたい。

2016-02-29 03:45:26
西田和史(k.bigwheel) 開発基盤エンジニア @ Speee ⌨️🦀🖊️ @k_bigwheel

(前文補足)javaはその理念からもコンパイル環境によって成果物に違いがあるべきではないのは前提。ただし往々にして理想が達成されないことはよくあるので、開発者の中でOSが混在する場合は標準のコンパイル環境というのはあると便利。

2016-02-29 03:47:26
西田和史(k.bigwheel) 開発基盤エンジニア @ Speee ⌨️🦀🖊️ @k_bigwheel

>> hashicorp/hcl: HCL is a configuration language. github.com/hashicorp/hcl hclってまたjson互換フォーマットかー。そこにはhoconなんかの先行もあるんだけど、これは流行りそうにないなあ。

2016-03-06 16:57:45
西田和史(k.bigwheel) 開発基盤エンジニア @ Speee ⌨️🦀🖊️ @k_bigwheel

yamlでいいんじゃないかな。たしかにフォーマットが少し直感的でないので学習コストはかかるけど、だったらjsonを使えばいい。elasticsearchのAPIは多くがそういう設計になっているし、実際それが良いと思う。なにより多くの言語ですでにサポートされているしね。

2016-03-06 16:58:55
西田和史(k.bigwheel) 開発基盤エンジニア @ Speee ⌨️🦀🖊️ @k_bigwheel

otto雑感: やはりvagrant後継とは言いがたく、vagrant consul teraformなどhashicorpプロダクトをまとめて束ねたものでvagrantを置き換えるには明らかにオーバースペック。

2016-03-06 18:24:32
西田和史(k.bigwheel) 開発基盤エンジニア @ Speee ⌨️🦀🖊️ @k_bigwheel

しかもまだ環境定義の柔軟性が極端に低いため、RubyやJavaのような代表的な言語を用い、dockerコンテナでミドルウェアの用意が済むような開発にしか使えない。

2016-03-06 18:26:15
西田和史(k.bigwheel) 開発基盤エンジニア @ Speee ⌨️🦀🖊️ @k_bigwheel

dev環境の向こう側、本番環境へのデプロイについてはまだ試していないためなんとも言えないが現状ではawsにしか対応していないらしい。また本番環境へのデプロイを前提としているためにdev環境の定義に制約があるという情報も(リンク失念)

2016-03-06 18:27:41
西田和史(k.bigwheel) 開発基盤エンジニア @ Speee ⌨️🦀🖊️ @k_bigwheel

まとめると、vagrantによる環境構築がdocker image + 各環境のインタプリタ/コンパイラインストール で済ませられるならottoへの乗り換えは可能。実際vagrantfileを一から書く必要もないしconsulによりミドルウェアへのアクセスも非常に楽。

2016-03-06 18:29:39
西田和史(k.bigwheel) 開発基盤エンジニア @ Speee ⌨️🦀🖊️ @k_bigwheel

otto devで使用されるVagrantのboxファイルを変更する - demiglacesource’s diary demiglacesource.hatenablog.com/entry/2015/10/… うーん、hashicorpファンな人も程度・項目に差はあれ一様にこういうリアクションだよなあ。

2016-03-06 21:50:10
西田和史(k.bigwheel) 開発基盤エンジニア @ Speee ⌨️🦀🖊️ @k_bigwheel

ほぼまる一日かけてやっとottoでelasticsearch + mysql + scalaの環境を整えたけど、やはり問題は多い。今回はdev環境のvagrant設定を細かくいじれないことで躓いた。

2016-03-06 22:27:32
西田和史(k.bigwheel) 開発基盤エンジニア @ Speee ⌨️🦀🖊️ @k_bigwheel

VMの割り当てメモリを増やしたいだけなのにdev_vagrantfileを使っては、ottoのvagrantfile自動生成の利点をまったく享受できない。本当は設定をマージしてくれればいいんだけどそれほど器用じゃない。

2016-03-06 22:29:17
西田和史(k.bigwheel) 開発基盤エンジニア @ Speee ⌨️🦀🖊️ @k_bigwheel

ottoの哲学を読む限りそのへんのリソース割り当ては自動で調整してくれるようなことも書いてあったが、少なくとも現状そんな機能はない。

2016-03-06 22:30:17
西田和史(k.bigwheel) 開発基盤エンジニア @ Speee ⌨️🦀🖊️ @k_bigwheel

とりあえず手動で./.otto/compiled/app/dev/Vagrantfileを書き換えるのが無難だがコンパイルのたびに上書きされる上、.otto下はバージョン管理されないことをottoは期待している。やっぱこのツール筋悪い気がするぞ

2016-03-06 22:31:13