LoginSignup
21
20

More than 5 years have passed since last update.

Nginx + Rubyにおける開発

Last updated at Posted at 2018-06-27

Nginx + Rubyのアーキテクチャ

  • Nginx + Unicorn + RubyNginx + Passenger + Ruby の違いについて

Unicornとは、Nginxの違いとは

  • 一言でいうと、Webサーバーとアプリケーションサーバーの違い
  • Webサーバー
    • 代表的なものだと Nginx、Apacheなど
    • リクエストを送った時に、レスポンスを返す
  • アプリケーションサーバー
    • Rails用だと Unicorn、Sinatra、Thin、Pumaなど
    • webサーバーから受けたレスポンスをwebサーバーに返す

Rackとは

  • RubyでWebサーバーを立ち上げるためのインターフェース
  • 指定したミドルウェアやアプリケーションを組み合わせ、Webサーバを立ち上げるためのライブラリを提供する
  • これを用い、任意のアプリケーションサーバーでRailsやSinatra等のアプリケーションを動かすことができる

Unicornとは

  • Rackに対応するために作られたアプリケーションサーバー(Rack Webサーバー)
    • RubyアプリケーションとWebサーバをつなぐための中間サーバーのこと
  • 通常のWebサーバはRackのような機能をサポートしていないため、この中間サーバーが必要になる
  • Rack Webサーバー単体でも機能するがレスポンス処理が弱く、ApacheやNginxなどと組み合わせて使われることが一般的

「Nginx + Unicorn + Ruby + Rails」 における処理の流れ

  • Nginx → Unicorn → Rack → Rails となる

Passengerとは

  • 正式にはPhusion Passenger
  • Railsで作成したアプリケーションをWEBサーバー上で動かすためのApacheやNginxのモジュール
  • モジュールとしてWEBサーバーに組み込むことで、(アプリケーションサーバー無しに)RailsのWEBアプリケーションを動かすことができる一方、アプリケーションサーバーとして利用することもできる。

Nginx + Unicorn + Ruby のメリット

  • Web3層アーキテクチャという設計に基づいた
    • Webサーバ層/アプリケーション層/データベース層
  • メリット
    • いずれかの層に変更があった場合、疎結合なのでメンテナンスが容易になり、対応コストを低く抑えられる
    • 層を分離することで処理の負荷分散がされ、より多くの処理が可能

Rubyフレームワーク比較

Ruby on Rails

  • 簡単にWebアプリケーションを作ることができるフレームワークが作られたことをきっかけに、プログラマーに圧倒的な指示を受けて活発に使われるようになった
  • GitHub、Airbnb、Hulu、Basecampと言った多くの企業が採用している優秀なフレームワーク

Railsにおける原則

  • DRY(Don't Repeat Yourself)
    • 「同じことを繰り返さない」という意味
    • 同じコードや似たようなコードを何度も書くのは、効率が悪いし、変更に弱い為やめるべきだという発想
  • COC(Convention Over Configuration)
    • プログラマーの意思よりも「規約(決められたルール)を優先する」という意味
    • アプリケーションを開発するにあたる最善の方法を、ある程度事前に決めてくれている

Sinatra

  • DSL(Domain-Specific Language : 特定の目的に特化した言語)を利用
  • 小規模なアプリケーションを簡潔に記述することを目指したフレームワーク
    • 単純なサイト構成なものに使い、逆に複雑なものにはあまり向いていない
  • アップル、BBC、イギリス政府、GitHub等の企業や団体によって利用されており、Railsの次に人気が高い

参考文献

21
20
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
21
20