クラウドコンピューティング ~ EC2、Mosso、GoGrid
クラウドコンピューティングのプロバイダーであるEC2、Mosso、GoGridの新しいユーザーエクスペリエンスと、それぞれの機能の違いについて学びます。
作者 Mirko Stocker, 翻訳者 編集部 投稿日 2008年4月4日 午後12時30分
Rack(サイト・英語)は、WebサーバとRuby Webサーバフレームワーク間のインターフェイスを提供する。これにより、フレームワークの作成者がそれぞれ特定のWebサーバごとにハンドラーを記述するという負担を軽減し、多くの重複作業をなくす。
Rackでの作業は実に簡単である。以下の例では、Mongrel(source)で実行する最小限のアプリケーションハンドラーを作成するのに必要なことを示している。
require 'rack'
app = lambda { |env| [200, {"Content-Type" => "text/plain"}, ['Hello World!']] }
Rack::Handler::Mongrel.run(app, :Port => 3000)
env引数は、環境変数および要求パラメーターのハッシュ値を含んでいる。ブロックの戻り値は、HTTPステータスコード、ヘッダーおよび応答のボディの3つのエレメントの配列で構成される。
Rackの作成者であるChristian Neukirchen氏が、Rackの変遷についてInfoQに語った。
当初、RubyのWebフレームワークに不満を感じていたので、自分自身で記述する考えをいくつかひねり出した。web.py(サイト・英語)がリリースされ、小さく簡単 に保持できるところが気に入った。そこでフレームワークの記述を始めたが、成果が得られなかった。Cookieの解析などのいつもの記述などをして本筋か らそれてしまったからだ。実際には、他のプロジェクトからコードをコピーしたが、仕上げるまではかなり退屈な作業だった。そんなわけで、そのフレームワー クは決してうまくいかなかった。
その後、Python's Nevow(source)について知り、それと同種のものを実装してみたくなったが、始めるとすぐにサーバごとにヘルパーやアダプタをひたすら書き換え続けていることに 気づいた。Pythonフレームワークについてさらに詳しくなると、WSGI(source)、read、liked、simplifiedそして最終的にdrafted Rackにたどり着いた。すでに記述したコードを再アセンブルし、Python Paste(サイト・英語)の構造に基づいてモジュール方式にした。すると間もなくRack 0.1の準備が整った。
Rackが使用可能だった時、気に入ったフレームワークがなかったので、Coset(source)を実装した。それについてはわたしがこの頃使用しているものである。Camping(source)、web.py(サイト・英語)およびRESTlet(サイト・英語)からインスピレーションを描く。
Rackのサポートをするフレームワークのリスト(サイト・英語)を以下に挙げる。
* Camping(source)(Rackの分配に含まれる)
* Coset(source)
* Halcyon(サイト・英語)
* Maveric(source)
* Merb(サイト・英語)
* Mack(サイト・英語)
* Racktools::SimpleApplication
* Ramaze(サイト・英語)
* Rails(サイト・英語) (第三者、Thinで配送)
* Sinatra(サイト・英語)
* Vintage(サイト・英語)
Rackは、フレームワークと一緒に使用することも可能である。たとえば、ある要求でシンプルかつ高速処理が必要な場合、RackのRack:: Cascadeを使用して複数のアプリケーションをカスケードすることができる。Ezra Zygmuntowicz氏によるブログ記事では、完全にmerbスタックを経由せずに、Rackを使用したファイルのアップロードの方法を紹介してい る(source)。
今後に向けて、Christian氏は1.0リリース仕様の安定化を計画している。
Rackについての詳細は、Rackの公式Webサイト(サイト・英語)を参照のこと。詳細情報に関しては、Rackの内部構造についてまとめたEuruko 07による文書(PDF・英語)が利用可能である。
原文はこちらです:http://www.infoq.com/news/2008/04/rack-http-web
クラウドコンピューティングのプロバイダーであるEC2、Mosso、GoGridの新しいユーザーエクスペリエンスと、それぞれの機能の違いについて学びます。
パート2では、ベンチマークの結果を検証するために用いられるテクニックについてさらに深く見ていきたいと思います。最後に、「なぜプロセッサが異なるとロックのコストも大きく異なるのか」と言う真の疑問に答えます。
本稿では、Stefan Tilkov氏が「RESTful」な設計であると主張するアプリケーションに見受けられる最も一般的なアンチパターンのいくつかについて説明し、それらを避けるための方法を提案しています。
Sven Efftinge氏、Peter Friese氏とJan Köhnlein氏が、MDDを取り入れて成功した経験から、ベストプラクティスの解説を行います。
Our panel of leading experts explores some of the challenges and thought processes that go into making their apps as scalable and performant as possible.
この記事は、Spring 2.5で導入されたアノテーションを探究する3部作の第2弾です。Web層におけるアノテーションのサポートを扱います。最後の論文では、統合と検査で利用できる追加機能を説明する予定です。
私は「浴衣」を着てパーティーに参加したことで、たくさん声を掛けていただけました。 そこで感じたことは、このカンファレンスが人との繋がりを生み出し、また言葉の壁を越えて積極的に交流する場所であることです。民族衣装はそれらを助けてくれるものでした。きっとこの交流が、新たなムーブメントをアジア圏の仲間たちにも与えてくれると確信しています。
No comments
返信