BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース Flex - Engine Yardによる新しいクラウド

Flex - Engine Yardによる新しいクラウド

原文(投稿日:2009/5/18)へのリンク

Engine Yardの新しいサービスであるFlexは「信頼性、スケーラビリティ、24時間無休の専門サポートが必要なプロフェッショナルなウェブアプリケーションを対象にしたもの」である。FlexはシングルインスタンスのSolo以上のものがほしいが完全にマネージドされたものは必要なかったり、内々に Engine Yard Slicesを動かしているような顧客に向けた製品だ。Flexのプレスリリースにはこうある。

Engine Yard Flexは環境クローン作成と1ボタンでのデプロイ、それに機敏な運用をおこなうために欠かせないバージョンコントロールシステムからの自動デプロイやアプリケーションサーバの自動復旧といったユニーク機能を備えます。

Engine YardのCTOであるTom Morniniは「多くのディベロッパおよび組織が開発生産性の高さからRuby on Railsを採用しています。またクラウドサービスを標準の開発プラットフォームと見る方向に向かっています」と述べました。「Engine Yard Flexは簡単にスケーリングができ信頼性も求められるRuby on Railsアプリケーションにとって、うってつけのクラウドとなります」

InfoQはEngine Yardのマーケティング担当バイスプレシデントであるMichael Mullany氏にFlexについて詳しい話を聞いた。

SoloとFlexの主な違いはシングルインスタンスかマルチインスタンスかということですが、他に違いはありますか?

Soloは素早くサイトを稼働させることができるリーズナブルなサービスです。FlexはSlicesと同等のものとしてデザインされていて、複数の冗長なウェブサーバを実行したり予備データベースを置いておくといったことができます。Soloがコミュニティによるサポートを基本にしていたのに対し、Flexには有償サポートが用意されます。Flexクラスタを利用すればEngine Yardの世界中にいるスタッフから24時間いつでもサポートを受けることが可能なのです。またFlexは自己回復の機能も備えていて、サーバがダウンする時に新しいサーバを起動してダウンしたサーバの役割を引き継ぐことができます。

環境クローン作成、自動デプロイ、1ボタンデプロイについても教えてもらえますか?

環境クローン作成は全データを含む実行環境をテスト環境などにコピーする機能です。私たちのシステムでは、依存するgemやUnixのライブラリ、バックアップポリシー、実行するアプリケーション、その他の情報といった、サーバあるいはサーバ群を稼働するのに必要なものをカプセル化します。

シングルインスタンスあるいはクラスタで実行環境を稼働させると、「クローン」ボタンをクリックしてアクセス制御下の全データも含めた環境全体の完全に独立したコピーを作成できるようになります。そしてサーバのスナップショットを作り、コピー環境を起動してそのスナップショットをマウントし、元の環境と同じようにサーバを設定することもできます。処理中のデータベーストランザクションを扱えるようにもなっていて、クローン環境においてもデータベースの一貫性が保たれます。

これにより、複雑なコード変更を伴うデプロイのテストや規模な移行が信じられないくらい柔軟におこなえます。近頃は本番環境と同一の環境を用意するのはほとんど誰にもできなくなっていて、たいていは多くの点で異なる環境しか用意できません。私たちのシステムではビットレベルで同一な環境を手に入れることができ、それを使って新しいデプロイを試したりすることができます。また費用は利用した分にだけかかるので、たとえば5ノードの大規模クラスタのクローンを使って1時間新しいデプロイをテストした場合でも、おそらく数ドル程度ですませることができます。

アプリケーションサーバの自動復旧はどのように機能するのでしょうか?実行中のアプリケーションに影響をあたえずにすみのでしょうか?

実行中のアプリケーションに影響は与えません。私たちは全てのアプリケーションサーバのノードで動く独自のモニタリングデーモンを開発しました。各アプリケーションサーバはポート80でhaproxy(対TCP/HTTPロードバランサ)を動かし、(本来80で動かすWebサーバである)nginxあるいはapacheをポート81で動かします。haproxyはリクエストを他のアプリケーションサーバノードへ分散しようとするので、どのノードもマスタにすることができます。これらのノードの内、一つだけが主IPアドレスを保持します。そのノードはアプリケーションマスタと呼ばれ、他のアプリケーションサーバはアプリケーションスレーブと呼ばれます。アプリケーションスレーブはアプリケーションマスタの状態をチェックし、もしマスタがダウンしていたらスレーブ達で評議をおこない、自分たちのいずれかを選びます。選ばれたスレーブはIPアドレスを横取りして、新しいマスタになると同時に以前のマスタサーバを終了させて新しいスレーブを起動します。新しいスレーブがオンラインになるとクラスタを修復するために全てのサーバ上でhaproxyが動的に再設定されます。一連の動作はユーザにとって透過的で、特別なコードを書く必要はありません。この機能によってFlexクラスタの高可用性が守られます。

FlexはVertebraといった御社の他製品とどのような関係にあるのでしょうか?

FlexはEngine Yardの提供するサービスです。ちょうどSoloと同じように、私たちのサイトでサインアップすればRailsアプリケーションをデプロイすることができるようになります。Vertebraは、私たちが最初作り、それ以降出資や支援をおこなっている多くのオープンソースプロジェクトの一つです。私たちが出資したり支援するプロジェクトにはMRI(Matz's Ruby Interpreter)インタプリタに代わるRuby実行環境であるRubinius、RubyフレームワークでRails 3にマージされるMerbといったより大規模なものもあります。nginxに移植されたPassengerアプリケーションサーバも私たちが出資したプロジェクトです。今VertebraはEngine Yard社内の至る箇所で自動化に利用されていますが、商用オープンソース版のVertebraを提供する予定はありません。

Engine Yard FlexはAmazon EC2でも6月(2009年)から利用できるようになる。その時には全機能と価格が発表されることになるだろう。

この記事に星をつける

おすすめ度
スタイル

特集コンテンツ一覧

BT