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
1.6k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
PumaとUnicornって結局何なん!?
Yusuke Inai
September 21, 2022
More Decks by Yusuke Inai
See All by Yusuke Inai
で、エンジニアになって1年経ったけどどう?
youliangdao
1
380
人よりアウトプットができるようになるためのコツ
youliangdao
0
230
Next.jsから見る Webフロントエンドの歴史
youliangdao
1
1.2k
SaaSスタートアップで3ヶ月働いてみて感じた現実(リアル)
youliangdao
0
520
個人開発で挫折する人を救いたい
youliangdao
2
3.8k
Qiitaでバズりやすい記事の書き方を伝授する
youliangdao
0
4.7k
React って本当に使う意味あるの? 〜SPA と React の「キホン」の「キ」〜
youliangdao
1
260
"ぼくのかんがえたさいきょうの"勉強法
youliangdao
0
430
低レイヤへの誘い
youliangdao
0
340
Other Decks in Programming
See All in Programming
スマートグラスで並列バイブコーディング
hyshu
0
120
Java × distroless で 軽量なコンテナイメージを / Java on Distroless
contour_gara
0
530
LLMによるContent Moderationの本番運用の裏側と品質担保への挑戦
suikabar
2
570
「エンジニアインターン、どうやって取った?」準備のリアルを語るLT会 Progate BAR
akiomatic
0
130
3Dシーンの圧縮
fadis
1
740
Semantic Version 単位で戦略を柔軟に変えて、パッケージアップデートを自動化する
daitasu
0
220
ローカルLLMでどこまでコードが書けるか -拡張版 / How much code can be written on a local LLM Extended
kishida
6
2.2k
AIチームを指揮するOSS「TAKT」活用術 / How to Use “TAKT,” an OSS Tool for Orchestrating AI Teams
nrslib
6
880
Spring Security 実践 ─ GraphQL APIで実務に役立つ 認証・認可 を学ぶ
wagyu
0
220
メソッドのジェネリクスでGoの夢は広がるか? / Kyoto.go #65
utgwkk
3
690
軽量Java基盤の設計 DIコンテナに頼らない、長期保守と1秒起動の実現 JJUG CCC 2026 Spring
macha64
0
500
Contextとはなにか
chiroruxx
1
290
Featured
See All Featured
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
Thoughts on Productivity
jonyablonski
76
5.2k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
34
2.8k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
231
23k
The Limits of Empathy - UXLibs8
cassininazir
1
350
sira's awesome portfolio website redesign presentation
elsirapls
0
280
We Have a Design System, Now What?
morganepeng
55
8.2k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
420
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.3k
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
410
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
220
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 やってみよう!