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
5.5k
0
Share
PHPで運用中のサービスをRubyに切り替える
「Rubyエンジニアが語る2016年の振り返りとこれから」での発表資料です。
https://speee.connpass.com/event/47616/
takanamito
January 18, 2017
More Decks by takanamito
See All by takanamito
ActiveModel::Attributes APIとSwaggerでRailsのAPIレスポンスに型を持ち込む
takanamito
0
660
ドキュメントとテストのないプロジェクトを引き継ぐ
takanamito
2
3.6k
Siriに身の回りのお世話をしてもらう
takanamito
0
6.9k
安心してフレームワークをのりかえたい
takanamito
0
1.3k
HLSでやっていく 動画ストリーミング配信
takanamito
0
2.6k
あんしん大規模リプレースサポート
takanamito
1
1.8k
Other Decks in Technology
See All in Technology
生成AI時代に信頼性をどう保ち続けるか - Policy as Code の実践
akitok_
0
130
新卒エンジニア研修、ハンズオンの設計における課題と実践知/ #tachikawaany
nishiuma
2
130
The 7 pitfalls of AI
ufried
0
200
要件定義の精度を高めるための型と生成AIの活用 / Using Types and Generative AI to Improve the Accuracy of Requirements Definition
haru860
0
310
みんなの考えた最強のデータ基盤アーキテクチャ'26前期〜前夜祭〜ルーキーズ_資料_遠藤な
endonanana
0
120
QAエンジニアはどうやって プロダクト議論の場に入れるのか?
moritamasami
2
410
「強制アップデート」か「チームの自律」か?エンタープライズが辿り着いたプラットフォームのハイブリッド運用/cloudnative-kaigi-hybrid-platform-operations
mhrtech
0
140
Fabric MCPの紹介と使い分け
ryomaru0825
1
150
GitHub Copilot CLI と VS Code Agent Mode の使い分け
tomokusaba
0
150
試作とデモンストレーション / Prototyping and Demonstrations
ks91
PRO
0
190
EMから幅を広げるために最近挑戦していること / Recent challenges I'm undertaking to expand my horizons beyond EM
hiro_torii
1
180
20260428_Product Management Summit_Loglass_JoeHirose
loglassjoe
4
7.3k
Featured
See All Featured
Testing 201, or: Great Expectations
jmmastey
46
8.1k
Speed Design
sergeychernyshev
33
1.6k
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
1
730
AI: The stuff that nobody shows you
jnunemaker
PRO
6
630
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Navigating Weather and Climate Data
rabernat
0
180
Darren the Foodie - Storyboard
khoart
PRO
3
3.3k
Self-Hosted WebAssembly Runtime for Runtime-Neutral Checkpoint/Restore in Edge–Cloud Continuum
chikuwait
0
510
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
30k
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͕ू·Δ