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
1.1k
PumaとUnicornって結局何なん!?
Yusuke Inai
September 21, 2022
Tweet
Share
More Decks by Yusuke Inai
See All by Yusuke Inai
で、エンジニアになって1年経ったけどどう?
youliangdao
1
310
人よりアウトプットができるようになるためのコツ
youliangdao
0
170
Next.jsから見る Webフロントエンドの歴史
youliangdao
1
1.1k
SaaSスタートアップで3ヶ月働いてみて感じた現実(リアル)
youliangdao
0
470
個人開発で挫折する人を救いたい
youliangdao
2
3.4k
Qiitaでバズりやすい記事の書き方を伝授する
youliangdao
0
3.6k
React って本当に使う意味あるの? 〜SPA と React の「キホン」の「キ」〜
youliangdao
1
220
"ぼくのかんがえたさいきょうの"勉強法
youliangdao
0
370
低レイヤへの誘い
youliangdao
0
280
Other Decks in Programming
See All in Programming
コード書くの好きな人向けAIコーディング活用tips #orestudy
77web
3
320
try-catchを使わないエラーハンドリング!? PHPでResult型の考え方を取り入れてみよう
kajitack
3
510
WindowInsetsだってテストしたい
ryunen344
1
180
Javaのルールをねじ曲げろ!禁断の操作とその代償から学ぶメタプログラミング入門 / A Guide to Metaprogramming: Lessons from Forbidden Techniques and Their Price
nrslib
3
2k
単体テストの始め方/作り方
toms74209200
0
470
機械学習って何? 5分で解説頑張ってみる
kuroneko2828
0
210
プロダクト開発でも使おう 関数のオーバーロード
yoiwamoto
0
150
Prism.parseで 300本以上あるエンドポイントに 接続できる権限の一覧表を作ってみた
hatsu38
1
110
SODA - FACT BOOK
sodainc
1
960
AIネイティブなプロダクトをGolangで挑む取り組み
nmatsumoto4
0
110
イベントストーミングから始めるドメイン駆動設計
jgeem
4
850
実践ArchUnit ~実例による検証パターンの紹介~
ogiwarat
2
260
Featured
See All Featured
Testing 201, or: Great Expectations
jmmastey
42
7.5k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
357
30k
Done Done
chrislema
184
16k
Rebuilding a faster, lazier Slack
samanthasiow
81
9k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.7k
VelocityConf: Rendering Performance Case Studies
addyosmani
329
24k
Into the Great Unknown - MozCon
thekraken
39
1.8k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
281
13k
Docker and Python
trallard
44
3.4k
RailsConf 2023
tenderlove
30
1.1k
Become a Pro
speakerdeck
PRO
28
5.4k
Building Adaptive Systems
keathley
43
2.6k
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 やってみよう!