Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
PumaとUnicornって結局何なん!?
Search
Yusuke Inai
September 21, 2022
Programming
0
320
PumaとUnicornって結局何なん!?
Yusuke Inai
September 21, 2022
Tweet
Share
More Decks by Yusuke Inai
See All by Yusuke Inai
人よりアウトプットができるようになるためのコツ
youliangdao
0
66
Next.jsから見る Webフロントエンドの歴史
youliangdao
0
410
SaaSスタートアップで3ヶ月働いてみて感じた現実(リアル)
youliangdao
0
240
個人開発で挫折する人を救いたい
youliangdao
1
2.3k
Qiitaでバズりやすい記事の書き方を伝授する
youliangdao
0
2.2k
React って本当に使う意味あるの? 〜SPA と React の「キホン」の「キ」〜
youliangdao
1
150
"ぼくのかんがえたさいきょうの"勉強法
youliangdao
0
240
低レイヤへの誘い
youliangdao
0
170
RSA暗号から学ぶ公開鍵暗号の仕組み
youliangdao
1
180
Other Decks in Programming
See All in Programming
Ruby Function Composition
bkuhlmann
1
330
Compose-View Interop in Practice (mDevCamp 2024)
stewemetal
0
130
雑に思考を整理する技術と効能
konifar
58
29k
AWS Application Composerで始める、 サーバーレスなデータ基盤構築 / 20240406-jawsug-hokuriku-shinkansen
kasacchiful
1
260
Rethinking UI building strategies @ SFI 2024
letelete
0
270
Random\Randomizer クラスで日常のあれこれを解決しよう! / Random\Randomizer class solves familiar trouble
cocoeyes02
0
230
MetricKitで予期せぬ終了を検知する話 / Detect unexpected termination with MetricKit
nekowen
1
180
はてなにおける CSS Modules、及び CSS Modules に足りないもの / CSS Modules in Hatena, and CSS Modules missing parts
mizdra
7
920
CA.swift19 恋するAIアプリ開発の裏側
oskmr
0
360
Scalable Customer Journey Orchestration (CJO)
lewuathe
0
210
単体テストを書かない技術 #phpcon_odawara
o0h
PRO
26
8.2k
Rubyでたのしむクリエイティブコーディング/Enjoy Creative coding with Ruby
chobishiba
1
180
Featured
See All Featured
The Invisible Side of Design
smashingmag
294
49k
Side Projects
sachag
451
41k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
221
21k
The Power of CSS Pseudo Elements
geoffreycrofte
60
5k
Teambox: Starting and Learning
jrom
128
8.4k
How to Ace a Technical Interview
jacobian
272
22k
Happy Clients
brianwarren
92
6.4k
In The Pink: A Labor of Love
frogandcode
138
21k
The Invisible Customer
myddelton
114
12k
What's new in Ruby 2.0
geeforr
337
31k
Why Our Code Smells
bkeepers
PRO
331
56k
Building a Scalable Design System with Sketch
lauravandoore
456
32k
Transcript
〜RackからみたRailsアプリケーション〜 PumaとUnicornって結局何なん!? 2022.9.20 最近学んだこと
自己紹介 1 2 Railsのリクエストサイクル 4 PumaとUnicornの正体 3 Rack 5 目次
まとめ 6 なぜ話そうと思ったのか? おまけ(RailsとRack) 7
1 自己紹介
・稲井友亮 ・25歳 ・RUNTEQ34期生 ・医者目指してた ・低レイヤ大好き
None
2 なぜ話そうと思ったの か?
その前に....
まずPumaとUnicornって??
None
デプロイ時によく見 かける
3 PumaとUnicornの正体
Rack(の仕様に基づいて動く)サーバー
is 何??
4 Railsのリクエストサイクル
① ②
用意してあるリソースしか 返却できない 問題点
・ユーザーが投稿したものの最新の10個を表示 ・投稿したもの削除したい ・いいね機能やブックマーク機能も欲しい 例えば...
どうすればいい...?
・簡単な更新作業程度ならできる ・複雑な作業になってくると限界あり 手動で頑張る
プログラムに 任せよ
動的 静的 アプリケーション
インターフェース
None
アプリケーションサー バー 常にプロセスが実行さ れているためCGIより効 率が良い 使い回しモデル Common Gateway Interface リクエストのたびに新
しくプロセスを起動さ せる必要があり非効率 使い捨てモデル CGI APサーバー インターフェースの種類
このインターフェースのうちの 1つがRack
5 Rack
Rackは、RubyでWebアプリケ ーションを開発するための、最 小限の、モジュール化された、 適応性の高いインターフェイス を提供します。 引用元:github.com/rack/rack
RackとはサーバーとRubyアプリ がやりとりする際のルール
Rackのルール サーバーからアプ リへのリクエスト の通知はメソッド 呼び出しで行う リクエストの内容 は引数で渡す メソッドの戻り値 をサーバー側に返 す。
1 2 3
None
Rackアプリケーション
Rackサーバー ・rack gemを用いて開発 ・利用したいサーバーに対応した Rack::Handlerにアプリを渡すだけ
マルチプロセス スロークライアント リバースプロキシと 組み合わせて使う Nginx + Unicorn マルチスレッド Railsのデフォルト リクエストのバッファ
可能 スロークライアントに 強い Puma Unicorn Rackサーバーの種類
6 まとめ
サーバーが動的なリソースを提供する ためにはインターフェースが必要 1 Rackとはそのインターフェースであ り、ルール 2 Rackに沿ってアプリとサーバーを実装 することで、Webアプリケーションを構 築できる。PumaやUnicornはRackに沿 って動くサーバー。
3
ありがとうございます times_34期生_inai_yusuke
7 おまけ (RailsとRack)
bin/rails serverでサーバー立ち上げ 1 bin/rails cでコンソール開く 2 Rails.application.call(env) 4 Rack::MockRequest.env_forでenv取得 3
puts body.join('') 5 やってみよう!