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
PHPで運用中のサービスをRubyに切り替える
Search
takanamito
January 18, 2017
Technology
0
5.3k
PHPで運用中のサービスをRubyに切り替える
「Rubyエンジニアが語る2016年の振り返りとこれから」での発表資料です。
https://speee.connpass.com/event/47616/
takanamito
January 18, 2017
Tweet
Share
More Decks by takanamito
See All by takanamito
ActiveModel::Attributes APIとSwaggerでRailsのAPIレスポンスに型を持ち込む
takanamito
0
620
ドキュメントとテストのないプロジェクトを引き継ぐ
takanamito
2
3.5k
Siriに身の回りのお世話をしてもらう
takanamito
0
6.7k
安心してフレームワークをのりかえたい
takanamito
0
1.2k
HLSでやっていく 動画ストリーミング配信
takanamito
0
2.5k
あんしん大規模リプレースサポート
takanamito
1
1.6k
Other Decks in Technology
See All in Technology
米国国防総省のDevSecOpsライフサイクルをAWSのセキュリティサービスとOSSで実現
syoshie
2
1.2k
本が全く読めなかった過去の自分へ
genshun9
0
590
使いたいMCPサーバーはWeb APIをラップして自分で作る #QiitaBash
bengo4com
0
370
MySQL5.6から8.4へ 戦いの記録
kyoshidaxx
1
260
A2Aのクライアントを自作する
rynsuke
1
210
生成AI時代 文字コードを学ぶ意義を見出せるか?
hrsued
1
610
“社内”だけで完結していた私が、AWS Community Builder になるまで
nagisa53
1
410
25分で解説する「最小権限の原則」を実現するための AWS「ポリシー」大全 / 20250625-aws-summit-aws-policy
opelab
9
1.2k
"サービスチーム" での技術選定 / Making Technology Decisions for the Service Team
kaminashi
1
170
変化する開発、進化する体系時代に適応するソフトウェアエンジニアの知識と考え方(JaSST'25 Kansai)
mizunori
1
230
mrubyと micro-ROSが繋ぐロボットの世界
kishima
2
350
PHP開発者のためのSOLID原則再入門 #phpcon / PHP Conference Japan 2025
shogogg
4
880
Featured
See All Featured
The Art of Programming - Codeland 2020
erikaheidi
54
13k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
30
2.1k
Product Roadmaps are Hard
iamctodd
PRO
54
11k
The World Runs on Bad Software
bkeepers
PRO
69
11k
BBQ
matthewcrist
89
9.7k
GitHub's CSS Performance
jonrohan
1031
460k
Building a Modern Day E-commerce SEO Strategy
aleyda
42
7.3k
Statistics for Hackers
jakevdp
799
220k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
48
2.8k
Code Review Best Practice
trishagee
68
18k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
44
2.4k
A Modern Web Designer's Workflow
chriscoyier
694
190k
Transcript
PHPͰӡ༻தͷαʔϏεΛ RubyʹΓସ͑Δ
ࣗݾհ • id: takanamito • ॴଐ: גࣜձࣾSpeee ւ֎ϝσΟΞνʔϜ
ΞδΣϯμ • RubyΓସ͑લͷςετ • RubyΓସ͑ޙͷࢹମ੍
1. RubyΓସ͑લͷ ςετ
ASEAN͚ਓࡐϝσΟΞ • ඦສPV / ݄ • 2΄ͲFuelPHPͰՔಇ • 1action 100~200ߦͷcontroller͕ෳ
• ϦϑΝΫλͷݶք
None
2016 RubyҠߦ • ͖͔͚ͬSpeeeશࣾͷRubyҠߦ • ϚελσʔλΛ৽͍ͨ͠ • URLϧʔϧΛม͍͑ͨ • چˠ৽URLʹ301ϦμΠϨΫτ
/hoge/joblist -> /joblist/hogehoge
ͨͩ͠ URL10ສҎ্
10ສҎ্ͷURLΛ301ϦμΠϨΫτ • ϦμΠϨΫτϩδοΫ͕όάͬͯΔͱࢮ͵ • σʔλ͕ؒҧͬͯͯࢮ͵ σʔλͷଥੑ֬ೝΛؚΊͨςετΛ ͍͍ײ͡ʹΓ͍ͨ
kage • γϟυϓϩΩγαʔόʔͷgem • ຊ൪ͷτϥϑΟοΫΛෳ͠ ։ൃαʔόʔʹྲྀ͢
LBHF 'VFM1)1 3BJMT શϦΫΤετΛ 'VFM1)1ʹ (&5ϦΫΤετ ͚ͩෳ
Kage::ProxyServer.start do |server| server.port = 8090 server.host = '0.0.0.0' server.add_master_backend(:production,
'xxx.xxx.xxx.xxx', 80) server.add_backend(:sandbox, 'xxx.xxx.xxx.xxx', 80) server.client_timeout = 15 server.backend_timeout = 10 server.on_select_backends do |request, headers| if request[:method] == 'GET' [:production, :sandbox] else [:production] end end ~~ தུ ~~ end def compare(production_res, sandbox_res, url) # ͜ͷลͰresponseݟͯϩάग़ͨ͠Γ͢Δ end
kageͷϩά "Response diff 404, 301, /hoge/joblist" "Response diff 200, 404,
/fuga/joblist" "Response diff 404, 301, /hoge/fuga/job" ˢ 1)1 ˢ 3VCZ ˢ ֘63- ϩάʹग़ྗ͞ΕͨURLΛ 1ͭͣͭ֬ೝ͍ͯ͘͠
2छྨͷςετͰ҆৺ • ϩδοΫςετίʔυͰݕূ • σʔλؚΊݕূ͢ΔͨΊʹ ຊ൪τϥϑΟοΫΛྲྀ͢
2. RubyΓସ͑ޙͷ ࢹମ੍
ϦϦʔεޙͷ՝ • ҙਤͤͣ40x, 30x͕ฦ͍ͬͯΔ߹ • ϨεϙϯελΠϜͷѱԽ Ͱ͖Δ͚ͩૣٸʹؾ͖͍ͨ
IUUQTTQFBLFSEFDLDPNTFMNFSUTYTQFFFOJPLFSVKJBOTIJUVSVGBMTFYVBOEJOHQVSPTFTV
DatadogͰ αʔϏεঢ়گΛࢹ
None
ˢ &-#Լͷ&$ ˢ &-#ʹྲྀΕΔ ϦΫΤετྔ ˢ (PPHMF"OBMZUJDT ϦΞϧλΠϜ
&-#͕ฦ͢Ϩεϙϯεͷεςʔλε ˣ ˢ &-#͕ฦ͢ϨεϙϯεͷϨΠςϯγʔ
None
४උͷ݁Ռ • େ͖ͳোͳ͘ҠߦΛΓΕ·ͨ͠ • DatadogͷμογϡϘʔυʹ ͲΜͲΜॏཁͳKPI͕ू·Δ