Ruby
Rails
nginx
unicorn

Nginx + Rubyにおける開発


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の次に人気が高い


参考文献