Orchestrationやっぱりよく分かってなくて、色々話聞いてた。まだまだ分かってないけど、今のところをまとめるので、ここは違うとか指摘してください。
http://iiirc.org/snippets/321
Orchestrationに二つの意味が混ざっている?
という話になった。一つはmizzyさんも言っていたインフラの動的な部分という意味で、一つはnaoyaさんやstanakaさんが言っていたサーバ同士がうまくコミュニケーションしあって統制するという意味っぽい。
それぞれの役割やツールへの対応としては
- インフラの動的な部分
- あるサーバの状態に合わせて、実行する内容を動的に変える
- capistrano, fabric, MCollectiveなどが該当
- サーバ同士が相互的にコミュニケーションして統制する
- serfなどが該当
インフラの動的な部分としてのOrchestration
Rebuildのep.25を聞いていて、インフラの動的な部分という話を聞いて、インフラの動的な部分とはなんぞや?という部分が理解できていなかった。けど例えば以下の様なものだと思う。
- 同じwebサーバでも、性能などによって、このサーバは10プロセス動かすとか、このサーバは20プロセス動かしたいとか変えたい
- もしくは時間帯によってプロセス数を調整したいとか。アクセスの多い12時はプロセス数を変えようとか
こういう部分はChefなどConfigurationの層だけで考えるとやりづらい、そこでOrchestrationという層があるんだという感じなのだと思う。そのため、こういうことをやるツールとして
- Capistrano
- Ansible
- MCollective
みたいなのがあるという感じなのかなと思った。
サーバ同士がコミュニケーションしあって統制する部分としてのOrchestration
僕はOrchestrationという部分をこういう内容だと思っていた。Serfなどが担当する層。この部分は例えば
- memcachedの配置換えをした時に自動でwebサーバに通知して、設定などを書き換えたい
- web serverの配置換えや追加をした時に、自動でproxyサーバに通知して、設定などを書き換えたい
- うまく現状のリソース状態を通知しあって、どのクラスタにコンテナを入れるか決めたい
という用途なんじゃないかと思う。この部分をnaoyaさんやstanakaさんは言っていたのかなと感じた。
それでこういう部分を担当するツールとして
- Serf
- Apache Mesos
などのツールがあるのかなあと思った。
まとめ
まだまだ全然分かってないけど、このへんの二つの意味が混ざってたのかなと思った。Rebuildのep.25を聞いた時にOrchestrationの部分がいまいち噛み合ってない感じがしたのはこのせいなのかもしれない。こういう考えで http://iiirc.org/snippets/320 を見ると、後者の意味に別のwordが割り当てられるのではという話をしていたのかと理解することが出来た。
ただこの理解正しいかわからないんで、指摘お願いします。