Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
〜RackからみたRailsアプリケーション〜 PumaとUnicornって結局何なん!? 2022.9.20 最近学んだこと
Slide 2
Slide 2 text
自己紹介 1 2 Railsのリクエストサイクル 4 PumaとUnicornの正体 3 Rack 5 目次 まとめ 6 なぜ話そうと思ったのか? おまけ(RailsとRack) 7
Slide 3
Slide 3 text
1 自己紹介
Slide 4
Slide 4 text
・稲井友亮 ・25歳 ・RUNTEQ34期生 ・医者目指してた ・低レイヤ大好き
Slide 5
Slide 5 text
No content
Slide 6
Slide 6 text
2 なぜ話そうと思ったの か?
Slide 7
Slide 7 text
その前に....
Slide 8
Slide 8 text
まずPumaとUnicornって??
Slide 9
Slide 9 text
No content
Slide 10
Slide 10 text
デプロイ時によく見 かける
Slide 11
Slide 11 text
3 PumaとUnicornの正体
Slide 12
Slide 12 text
Rack(の仕様に基づいて動く)サーバー
Slide 13
Slide 13 text
is 何??
Slide 14
Slide 14 text
4 Railsのリクエストサイクル
Slide 15
Slide 15 text
① ②
Slide 16
Slide 16 text
用意してあるリソースしか 返却できない 問題点
Slide 17
Slide 17 text
・ユーザーが投稿したものの最新の10個を表示 ・投稿したもの削除したい ・いいね機能やブックマーク機能も欲しい 例えば...
Slide 18
Slide 18 text
どうすればいい...?
Slide 19
Slide 19 text
・簡単な更新作業程度ならできる ・複雑な作業になってくると限界あり 手動で頑張る
Slide 20
Slide 20 text
プログラムに 任せよ
Slide 21
Slide 21 text
動的 静的 アプリケーション
Slide 22
Slide 22 text
インターフェース
Slide 23
Slide 23 text
No content
Slide 24
Slide 24 text
アプリケーションサー バー 常にプロセスが実行さ れているためCGIより効 率が良い 使い回しモデル Common Gateway Interface リクエストのたびに新 しくプロセスを起動さ せる必要があり非効率 使い捨てモデル CGI APサーバー インターフェースの種類
Slide 25
Slide 25 text
このインターフェースのうちの 1つがRack
Slide 26
Slide 26 text
5 Rack
Slide 27
Slide 27 text
Rackは、RubyでWebアプリケ ーションを開発するための、最 小限の、モジュール化された、 適応性の高いインターフェイス を提供します。 引用元:github.com/rack/rack
Slide 28
Slide 28 text
RackとはサーバーとRubyアプリ がやりとりする際のルール
Slide 29
Slide 29 text
Rackのルール サーバーからアプ リへのリクエスト の通知はメソッド 呼び出しで行う リクエストの内容 は引数で渡す メソッドの戻り値 をサーバー側に返 す。 1 2 3
Slide 30
Slide 30 text
No content
Slide 31
Slide 31 text
Rackアプリケーション
Slide 32
Slide 32 text
Rackサーバー ・rack gemを用いて開発 ・利用したいサーバーに対応した Rack::Handlerにアプリを渡すだけ
Slide 33
Slide 33 text
マルチプロセス スロークライアント リバースプロキシと 組み合わせて使う Nginx + Unicorn マルチスレッド Railsのデフォルト リクエストのバッファ 可能 スロークライアントに 強い Puma Unicorn Rackサーバーの種類
Slide 34
Slide 34 text
6 まとめ
Slide 35
Slide 35 text
サーバーが動的なリソースを提供する ためにはインターフェースが必要 1 Rackとはそのインターフェースであ り、ルール 2 Rackに沿ってアプリとサーバーを実装 することで、Webアプリケーションを構 築できる。PumaやUnicornはRackに沿 って動くサーバー。 3
Slide 36
Slide 36 text
ありがとうございます times_34期生_inai_yusuke
Slide 37
Slide 37 text
7 おまけ (RailsとRack)
Slide 38
Slide 38 text
bin/rails serverでサーバー立ち上げ 1 bin/rails cでコンソール開く 2 Rails.application.call(env) 4 Rack::MockRequest.env_forでenv取得 3 puts body.join('') 5 やってみよう!