Ruby
 Computer >> コンピューター >  >> プログラミング >> Ruby

Rubyでアプリケーションサーバーが必要なのはなぜですか? (プーマのように)

rails serverを実行すると実行を開始するこの「Puma」とは何ですか ?

アプリサーバーです!

アプリケーションサーバーとは何か、なぜそれらが必要なのかを例を挙げて説明しましょう。

アプリケーションサーバーについて

Rubyで新しい光沢のあるWebアプリケーションの構築を開始したとします。

そして、コードを書く前に…

デフォルトの「ようこそ」ページを見るためだけでも、ブラウザに読み込まれることを確認したい。

したがって、ブラウザを開いて、localhost:3000を指定します。 、または多分localhost:4567 シナトラを使用している場合。

それではどうなりますか?

ブラウザがlocalhostに接続します 、ポート3000 PumaのようなRubyアプリケーションサーバー 待っています。

localhost 特別なIPアドレス127.0.0.1を指します 、これは常にコンピュータを指します

Puma、またはその他のラックベースのサーバー(Thin / Unicornなど)の役割は、ブラウザーの要求を処理し、共通のインターフェースを介してアプリケーションに渡すことです。

どのインターフェースについて話しているのですか?

ラック。

ラックについては別の記事で詳しく説明します。

プーマに戻る。

Railsがリクエストを直接処理するのではなく、なぜアプリサーバーを使用するのですか?

すばらしい質問です。

これは、基本的なソフトウェア設計の原則を可能にするためです。

関心の分離!

関心の分離を理解する

Railsの仕事とアプリケーションの仕事は、ユーザーのリクエストに応えることです。

  • 新しいアカウントを作成する
  • ログイン資格情報が有効かどうかを確認します
  • 100%カカオチョコレートバーを購入できる商品ページを表示する

アプリの機能は何でも。

  • Railsはユーザーができることのメニューを提供しますが、それはシェフでもあり、物事を成し遂げます
  • プーマはウェイターです。注文を受けてキッチンに転送します

このように設定することで、誰もが最善を尽くすことができます。

それだけではありません…

また、シェフをシナトラに、ウェイターをシンに切り替えることもできます!

「懸念が十分に分離されている場合、モジュールの再利用、および独立した開発とアップグレードの自由度が高くなります。」
ウィキペディア

状況や好みに応じて。

アプリケーションサーバーとWebサーバー(NginxおよびApache)

この時点で、疑問に思われるかもしれません…

ApacheやNginxのようなWebサーバーはRubyサーバーとどう違うのですか?

これら2つのサーバーを使用できないのはなぜですか?

大きな違いがあります。

Nginxは一般的なウェブサーバーであり、リクエストを処理します。そのリクエストに一致するファイルがある場合は、そのファイルを返します。

しかし、NginxはRackについて何も知りません 、またはRuby。

そのため、Pumaまたはその他のRack互換のWebサーバーが必要です。

しかし…

Nginxを本番環境で使用することは引き続き役立ちます。

Nginxは接続をより効果的に処理でき、リクエストをアプリケーションに転送しなくても静的アセット(cssおよびjsファイル)を提供できます。

プーマを理解する

これで、アプリケーションサーバーとは何か、なぜそれが役立つのかがわかりました。

プーマ自体を見ることができます 。

なぜ他のサーバーよりもPumaを選びたいのですか?

最初

Herokuが推奨するサーバーです。

彼らが言及する主な理由は、代替アプリサーバーであるUnicornを使用すると、クライアントからの攻撃が遅くなる可能性があるためです。

また

Pumaはマルチスレッドであるため、通常はメモリ使用量が少なくなります。

「オペレーティングシステムは、マルチプロセスプログラムの場合よりも、マルチスレッドプログラムに代わって実行する作業が少なくなります。これは、マルチスレッドプログラムのパフォーマンスの向上につながります。」
PThreadsプログラミング

どのサーバーが高速ですか?

次のコマンドで簡単なRackアプリを実行します:

rackup -s thin rack-simple.ru 2>1 &>/dev/null

これでテスト済み

wrk -d 20 https://localhost:9292

これらのベンチマーク結果を取得しました

  • Webrick229.97リクエスト/秒
  • 薄い773.20リクエスト/秒
  • Puma2035.34リクエスト/秒

これら3つのうち、Pumaが最高のパフォーマンスを発揮しているようです。

ただし、SQLクエリが遅い場合や、リクエストごとに数百万の要素を含む配列をループしている場合は、それは問題ではありません。

概要

Puma&ThinなどのRubyのアプリケーションサーバーについて学習したので、なぜそれらを使用するのかをよりよく理解できるようになりました。

Rubyでアプリケーションサーバーが必要なのはなぜですか? (プーマのように)

次のプロジェクトでどちらを使用しますか?

読んでくれてありがとう! 🙂


  1. Ruby on Railsとは何ですか?なぜそれが役立つのですか?

    Ruby on Rails(RoRの場合もある)は、最も人気のあるオープンソースのWebアプリケーションフレームワークです。 Rubyプログラミング言語で構築されています。 Railsを使用すると、単純なものから複雑なものまで、アプリケーションの構築に役立ちます。Railsで実行できることには制限がありません。 フレームワークとは何ですか? フレームワークは、ソフトウェアを作成するときに使用する特定の構造を提供するコード、ツール、およびユーティリティのコレクションです。 この構造により、コードがより整理されます。 正しく使うことを学ぶと、作業が簡単になります。 レールは正確に何を

  2. 難読化されたサーバーとは何か、なぜそれが必要なのか?

    サイバーセキュリティは、今日の時代における重要な懸念事項です。ハッカーや侵入者は、私たちのデジタル ライフに何らかの方法で侵入するための巧妙な手口を見つけています。私たちが彼らの悪質な罠にはまり、瞬く間に機密データを破壊するのは時間の問題です。 サイバー犯罪活動、悪意のある脅威、ウイルスが増加しているため、VPN サービスを使用してオンライン活動を保護することが必須になっています.これが、Web 上で安全な接続を確立できるようにするため、ここ数年で VPN が過度に普及した理由です。 VPN の助けを借りて、侵入者やサードパーティの Web サイト トラッカーから実際の IP アド