web-dev-qa-db-ja.com

開発目的でWEBrickの代わりにUnicornまたはthinを使用したいのはなぜですか?

最近、Railsアプリケーションを開発するためのWebサーバーとして、デフォルトのWEBrickの代わりにUnicorn_Railsを使用することを好む人がいることがわかりました。

Unicornを本番環境で使用したい場合は、開発で試してみるのも理にかなっていると思いますが、本番環境では構成が異なるので、関係があるのでしょうか。

WEBrickの代わりにthinまたはUnicornを使用してRailsなどのアプリケーションを開発することで得られる実際の具体的な利点はありますか?速度またはいくつかの追加機能?またはこれは個人的な好みの問題ですか?

41
Jakub Arnold

実稼働環境にできるだけ近づけて開発することが重要です。これは、実行時にバグに遭遇するのではなく、本番環境にデプロイされたときにアプリケーションが期待どおりに機能することを保証するのに役立ちます。

この問題は、本番環境を複製するビルドサーバーで継続的テストを使用することで軽減されます。同じ環境で積極的に開発していなくても、継続的テストにより、アプリケーションが期待どおりに機能していることがわかります。

速度に関しては、開発モードでRailsアプリを実行すると、パフォーマンスが低下し、さまざまなWebサーバーがもたらすメリットが失われます。

18
mguymon

すでにかなり良い概要を示している他の回答に加えて、WEBrickではなくUnicornの使用を検討したい技術的な理由もあります。

WEBrickはサブドメインをサポートしていません。 HTTPSのサポートは 実装するのはかなりハッキーです

したがって、サブドメインを使用するSaaSアプリケーションがある場合、または単にadmin/api/...サブドメインが必要な場合は、WEBrickはオプションではありません。 [〜 #〜] pow [〜#〜] Mac OS Xの場合ですが、これはLinux開発者には機能しません。

5
emrass

私の個人的な経験では、開発環境としてリモートマシン(ubuntu、4コア、8G mem、VPN-> ssh経由で接続)を使用すると、UnicornはWEBrickよりもはるかに高速です(私と同じように)-1秒未満ですUnicornでのページの読み込み時間、WEBrickでは3〜5秒以上かかります。理由はわかりませんが、それは私のネットワークと関係があるかもしれませんが、それは私が個人的に見ているものです。

開発モードでクラスをリロードするには追加のgemが必要であることを読んだので、開発にThinを使用していません(その精度を個人的に検証することはできません)。また、私はユニコーンに精通しており、本番環境で使用しています。

3
jmervine

私の個人的な経験では、WEBrickは、かなり大きなRailsアプリ(たくさんの宝石、ルートなど)で、Unicorn and Thin(OS X)よりも開発環境で高速です。しかし、自分で測定する必要があります。 、アプリをマシンにインストールして確認します( ab とChromeの開発者ツールを使用してテストしました)。

ただし、本番環境と開発環境で同じサーバーを使用することは非常に良い考えです。

1
Agis