Dec 21, 2011

Cloud Foundry の Services について

この記事は Cloud Foundry JP Advent Calendar 21日目の記事として投稿です.えっ,投稿時間が過ぎているって?GMT ではまだ 23 時ですよ :)

概要
Cloud Foundry では,MySQL や RabbitMQ などの,デーモンとして起動するソフトウェアを "Service" として定義している.本稿では,Service の構成と概要について説明する,

何故 Service が必要なのか
アプリを立ち上げる毎に,PCのリソース確認して, MySQL を立ち上げる場所を決めて,テーブル作って,アクセス権限して,っていうルーチンワークを作成するのは面倒ですよね.その場所を自動化するのが Servicesである.

Service の実態について
1つのServiceは,2つのパーツから構成されている.
  1. Service Proxy
  2. Service Node
Service Proxy は,Cloud Controller からのリクエストを受け付けて,Service Node とのひも付けを行う.Service Node は,Service Proxy からのリクエストを受け付けて,実際にService インスタンスの割り当てを行う.全体像を把握するために,vmc client,CloudController,Service Proxy,Service Node,Message Bus (NATS)の関係を以下に示す.



vmc コマンドと挙動をのマッピングを示すと,
  1. vmc create-service : Service Proxy 経由で,自分用の Service を Service Node から割り当てる.
  2. vmc bind-service : Service と app をひもづける.
  3. vmc delete-service : Service を削除する.
といった具合になる.なお,create と bind の順序を別コマンドにすることで,複数アプリから 1つの Service (たとえば,DB)に対してアクセスする,といったことが可能になる.もし,RabbitMQ を複数アプリから共有すればアプリ間の連携が可能になるだろし,MySQL を複数アプリから共有すればユーザ情報を共有する,といったことが可能になるだろう.

まとめ

Services について,必要な理由とその仕組みについて大まかに説明した.Cloud Foundry ではデプロイだけでなく,アプリ間の連携もできるように設計されている.そのため,Cloud Foundry ユーザは煩わしいデプロイや管理の手間を最小化し,アプリを作成するのに集中できる環境を手に入れることができるだろう.

No comments:

Post a Comment