Upgrade to Pro — share decks privately, control downloads, hide ads and more …

PumaとUnicornって結局何なん!?

Yusuke Inai
September 21, 2022

 PumaとUnicornって結局何なん!?

Yusuke Inai

September 21, 2022
Tweet

More Decks by Yusuke Inai

Other Decks in Programming

Transcript

  1. 〜RackからみたRailsアプリケーション〜 PumaとUnicornって結局何なん!? 2022.9.20 最近学んだこと

  2. 自己紹介 1 2 Railsのリクエストサイクル 4 PumaとUnicornの正体 3 Rack 5 目次

    まとめ 6 なぜ話そうと思ったのか? おまけ(RailsとRack) 7
  3. 1 自己紹介

  4. ・稲井友亮 ・25歳 ・RUNTEQ34期生 ・医者目指してた ・低レイヤ大好き

  5. None
  6. 2 なぜ話そうと思ったの か?

  7. その前に....

  8. まずPumaとUnicornって??

  9. None
  10. デプロイ時によく見 かける

  11. 3 PumaとUnicornの正体

  12. Rack(の仕様に基づいて動く)サーバー

  13. is 何??

  14. 4 Railsのリクエストサイクル

  15. ① ②

  16. 用意してあるリソースしか 返却できない 問題点

  17. ・ユーザーが投稿したものの最新の10個を表示 ・投稿したもの削除したい ・いいね機能やブックマーク機能も欲しい 例えば...

  18. どうすればいい...?

  19. ・簡単な更新作業程度ならできる ・複雑な作業になってくると限界あり 手動で頑張る

  20. プログラムに 任せよ

  21. 動的 静的 アプリケーション

  22. インターフェース

  23. None
  24. アプリケーションサー バー 常にプロセスが実行さ れているためCGIより効 率が良い 使い回しモデル Common Gateway Interface リクエストのたびに新

    しくプロセスを起動さ せる必要があり非効率 使い捨てモデル CGI APサーバー インターフェースの種類
  25. このインターフェースのうちの 1つがRack

  26. 5 Rack

  27. Rackは、RubyでWebアプリケ ーションを開発するための、最 小限の、モジュール化された、 適応性の高いインターフェイス を提供します。 引用元:github.com/rack/rack

  28. RackとはサーバーとRubyアプリ がやりとりする際のルール

  29. Rackのルール サーバーからアプ リへのリクエスト の通知はメソッド 呼び出しで行う リクエストの内容 は引数で渡す メソッドの戻り値 をサーバー側に返 す。

    1 2 3
  30. None
  31. Rackアプリケーション

  32. Rackサーバー ・rack gemを用いて開発 ・利用したいサーバーに対応した Rack::Handlerにアプリを渡すだけ 

  33. マルチプロセス スロークライアント リバースプロキシと 組み合わせて使う Nginx + Unicorn マルチスレッド Railsのデフォルト リクエストのバッファ

    可能 スロークライアントに 強い Puma Unicorn Rackサーバーの種類
  34. 6 まとめ

  35. サーバーが動的なリソースを提供する ためにはインターフェースが必要 1 Rackとはそのインターフェースであ り、ルール 2 Rackに沿ってアプリとサーバーを実装 することで、Webアプリケーションを構 築できる。PumaやUnicornはRackに沿 って動くサーバー。

    3
  36. ありがとうございます times_34期生_inai_yusuke

  37. 7 おまけ (RailsとRack)

  38. bin/rails serverでサーバー立ち上げ 1 bin/rails cでコンソール開く 2 Rails.application.call(env) 4 Rack::MockRequest.env_forでenv取得 3

    puts body.join('') 5 やってみよう!