ゆるやかな収束 vs リアルタイムな運用タスク

Opscode Chef と RightScale の違いについて書く。
Chef が『ゆるやかに「あるべき状態」にすること』を標榜しているのに対して、RightScale は『リアルタイムに「運用タスク」を実行すること』を目指している。

つまり、Chef はそのもっとも本領を発揮する Chef サーバ/クライアント構成において、各サーバ (ノード) で 30 分おきに chef-client を実行することをしており、それぞれのノードが何度かの chef-client 実行を経て最終的に「あるべき状態」になることを想定している (converge: 収束)。この「収束」という枠組みを支えているのが Chef サーバの検索機能で、各サーバが他サーバの情報を参照しながら、最初はうまくいかなくても 2, 3 回の chef-client 実行を経て最終的には「あるべき状態」になるだろう、という楽天主義がそこにはある。

これに対して、RightScale は各サーバで RightLink Agent という独自 AMQP エージェントを立ち上げることによって、AMQP 経由でウェブ画面上から運用タスクをキューイングし各サーバでそのタスクを実行させるという仕組みを採用している。これによって、ウェブ画面上からボタンをクリックするだけでタスクを登録し、そのタスクが各サーバにおいてデキューされたのち実行される、というリアルタイム性の高い機能を実現している。

どちらが優位というつもりはないのだが、上記の仕組みを鑑みて「規模」という観点から考えると下記のような結論になるのではないかと思う。

  • かなり大規模な場合には Chef サーバが適している
  • 比較的小規模の場合には RightScale が適している

まだかなり過渡期なのでなんとも言えないが、これからの展望として Chef がもっとリアルタイムな仕組みになったり、RightScale がもっと「あるべき状態」を統合的に管理できるようになったりするのかな、とか思ったりする。