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アプリケーションに未来を与える方法
Search
ara_ta3
October 08, 2017
Programming
28k
5
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
運用、追加開発しづらいPHPアプリケーションに未来を与える方法
PHPカンファレンス2017でお話したスライドです。
動画:
https://youtu.be/13YpGav4DBw?t=4h41m8s
ara_ta3
October 08, 2017
More Decks by ara_ta3
See All by ara_ta3
あなたとRPG今すぐインストール
ara_ta3
0
1.9k
Other Decks in Programming
See All in Programming
脅威をエンジニアリングの糧にして――現場編 / Turning Threats into Engineering Fuel — Field Edition
nrslib
0
280
Claspは野良GASの夢をみるか
takter00
0
190
A2UI という光を覗いてみる
satohjohn
1
140
メソッドのジェネリクスでGoの夢は広がるか? / Kyoto.go #65
utgwkk
3
780
ふつうのFeature Flag実践入門
irof
7
4k
セキュリティの専門家じゃなくてもできる。「セキュリティ意識」をアップデートして サプライチェーン攻撃への耐性を高めよう。
tk3fftk
5
760
スマートグラスで並列バイブコーディング
hyshu
0
140
気圧・高度・GPSを記録&可視化するアプリ「Koudo」を作った話
hjmkth
1
260
ADKを使って簡単にAIエージェントを作ってみよう
k1mu21
0
260
Spec Driven Development | AI Summit Lisbon
danielsogl
PRO
0
190
IBM Bobを活用したレガシーアプリの最新化
oniak3ibm
PRO
1
200
ローカルLLMを使ってB2Bサービスを作っていての学び
yaotti
0
170
Featured
See All Featured
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
0
320
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
2k
WCS-LA-2024
lcolladotor
0
630
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
The Curious Case for Waylosing
cassininazir
1
390
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
730
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
410
Art, The Web, and Tiny UX
lynnandtonic
304
22k
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
250
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
590
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
11
940
Product Roadmaps are Hard
iamctodd
PRO
55
12k
Transcript
ӡ༻ɺՃ։ൃͮ͠Β ͍PHPΞϓϦέʔγϣ ϯʹະདྷΛ༩͑Δํ๏ VOYAGE GROUP ాத վ (ara_ta3) PHP ΧϯϑΝϨϯε
2017 #phpcon2017_3
ࣗݾհ • VOYAGE GROUP ৽ଔ4 • fluct(ࠂ) -> Zucks(ࠂ) ->
HR Tech Studio(ਓࡐ) • ओʹαϙʔλʔζ։ൃ • Twitter(@ara_ta3) • ͖ͳݴޠ • Scala, Go, PHP7.x • Splatoon2 σϚΤ S+0
VOYAGE GROUP
VOYAGE GROUP
None
None
• ӡ༻ɺՃ։ൃͮ͠Β͍ΞϓϦέʔγϣϯ ΛͲ͏վળ͍͔ͯ͘͠ • ୈҰาΛͲ͏ͬͯ౿Έग़ͯ͠ະདྷʹ ͔͏͔ ࠓ͍͑ͨ͜ͱ
Agenda • ӡ༻ɺՃ։ൃͮ͠Β͍ͱʁ • αϙʔλʔζͷ࣌ͷڥʁ • ӡ༻ɺՃ։ൃ͍͢͠ڥʹ͍ͯ͘͠ • ΞϓϦέʔγϣϯϞχλϦϯάͷՃ •
ςετΛՃͭͭ͠ػೳՃ • ·ͱΊ
ӡ༻ɺՃ։ൃͮ͠Β͍ʁ
ӡ༻ɺՃ։ൃ͍͢͠ʁ
ӡ༻ɺՃ։ൃ͍͢͠ʁ • ผνʔϜ͔Βͷҟಈલ͔ͬͨ͢͠ • ͳͷͰɺผνʔϜͱൺֱͯ͠ߟ͑ͯΈ·ͨ͠
͍͢͠ ςετίʔυ͕͋Δ σϓϩΠલʹΤϥʔʹ ؾ͕͚ͭΔ ΞϓϦέʔγϣϯ ϞχλϦϯά͕͋Δ σϓϩΠޙʹΤϥʔʹ ؾ͕͚ͭΔ σϓϩΠ͕༰қ $*αʔόɾίϚϯυ
σϓϩΠޙʹԿ͔͕͋ͬͯ ͙͢ʹͤΔ
ͮ͠Β͍ ςετίʔυ͕ͳ͍ σϓϩΠલʹΤϥʔʹ ؾ͕͚ͭΔ ΞϓϦέʔγϣϯ ϞχλϦϯά͕ͳ͍ σϓϩΠޙʹΤϥʔʹ ؾ͕͚ͭΔ σϓϩΠ͕ෳࡶ σϓϩΠޙʹԿ͔͕͋ͬͯ
͙͢ʹͤΔ
αϙʔλʔζվળલ ςετίʔυ͕ͳ͍ σϓϩΠલʹΤϥʔʹ ؾ͕͚ͭΔ ΞϓϦέʔγϣϯ ϞχλϦϯά͕ͳ͍ σϓϩΠޙʹΤϥʔʹ ؾ͕͚ͭΔ σϓϩΠ͕༰қʁ σϓϩΠޙʹԿ͔͕͋ͬͯ
͙͢ʹͤΔ
Agenda • ӡ༻ɺՃ։ൃͮ͠Β͍ͱʁ • αϙʔλʔζͷ࣌ͷڥʁ • ӡ༻ɺՃ։ൃ͍͢͠ڥʹ͍ͯ͘͠ • ΞϓϦέʔγϣϯϞχλϦϯάͷՃ •
ςετΛՃͭͭ͠ػೳՃ • ·ͱΊ
• New Relic APM • PHP 5.3Ҏ্αϙʔτ
ΤϯυϙΠϯτຖʹ͔͔Δ͕࣌ؒΘ͔Δ
Ͳͷॲཧ͕ͲΕ͘Β͍͔͔͍ͬͯΔ͔͕Θ͔Δ
None
None
ͬͯΑ͔ͬͨ͜ͱ
ΤϥʔΊͬͪΌग़ͯͨ
None
Error Rate 30% ※ ΄ͱΜͲ͕404
None
ΊͬͪΌ͍ ΤϯυϙΠϯτ͋ͬͨ
None
761 sec ≒ 13 min
Ͳͷॲཧ͕ͲΕ͘Β͍͔͔͍ͬͯΔ͔͕Θ͔Δ
ͬͯΑ͔ͬͨ͜ͱ • Τϥʔ͕ͨ͘͞Μग़ͯͨ • ࣮΄ͱΜͲ͕404ͰΑ͔ͬͨ • ͷ͍͕͔͔࣌ؒͬͯ͢͝Δॴ͕Θ͔ͬͨ • ԿΘ͔Βͳ͍ঢ়ଶ͔Βɺྑ͘ͳ͍͜ͱ͕Θ ͔Δͱ͜Ζ·ͰਐΜͩ
αϙʔλʔζվળલ ςετίʔυ͕ͳ͍ σϓϩΠલʹΤϥʔʹ ؾ͕͚ͭΔ ΞϓϦέʔγϣϯ ϞχλϦϯά͕ͳ͍ σϓϩΠޙʹΤϥʔʹ ؾ͕͚ͭΔ σϓϩΠ͕༰қʁ σϓϩΠޙʹԿ͔͕͋ͬͯ
͙͢ʹͤΔ
αϙʔλʔζվળޙ ςετίʔυ͕ͳ͍ σϓϩΠલʹΤϥʔʹ ؾ͕͚ͭΔ ΞϓϦέʔγϣϯ ϞχλϦϯά͕͋Δ σϓϩΠޙʹΤϥʔʹ ؾ͕͚ͭΔ σϓϩΠ͕༰қʁ σϓϩΠޙʹԿ͔͕͋ͬͯ
͙͢ʹͤΔ
None
Agenda • ӡ༻ɺՃ։ൃͮ͠Β͍ͱʁ • αϙʔλʔζͷ࣌ͷڥʁ • ӡ༻ɺՃ։ൃ͍͢͠ڥʹ͍ͯ͘͠ • ΞϓϦέʔγϣϯϞχλϦϯάͷՃ •
ςετΛՃͭͭ͠ػೳՃ • ·ͱΊ
ػೳՃલͷঢ়ଶ • PHP5.x • CakePHP 2.x • Controller: 40 class
• ଟ͍ͷͰ1300ߦ • Model: 88 class ELB CakePHP
1ΞΫγϣϯߦɿ140
1 2 3 4 5 6 7 8 8ॏωετ
None
ݫ͍͠
ํ • طଘͷΞϓϦέʔγϣϯۃྗ৮Βͳ͍ • ผΞϓϦέʔγϣϯΛ্ཱͪ͛Δ • ͋Δύεʹདྷͨͱ͖͚ͩผΞϓϦέʔγϣ ϯʹϦΫΤετΛඈ͢
ELB CakePHP ALB CakePHP Slim ALB
ػೳՃޙͷঢ়ଶ • PHP7.1 • Slim 3.x • ALB • Application
Load Balancer ALB CakePHP Slim ALB
ALB • AWS Application Load Balancer • http://docs.aws.amazon.com/ja_jp/ elasticloadbalancing/latest/application/ introduction.html
• ͋Δύεɺ·ͨϗετ໊ΛݩʹϦΫΤετ ΛϧʔςΟϯάग़དྷΔػೳ
ALB
ALB
ALB • / • ʹΞΫηε ALB CakePHP Slim
ALB • /v1/code_challenge • ʹΞΫηε • ͕࣌ؒ͋ΕDEMO ALB CakePHP Slim
ࠔͬͨ͜ͱ • Sessionͷཧ • CakePHPͰSessionComponentΛར༻ • DBͷTableʹॻ͖ࠐΜͰ͍Δ • 2ͭͷSession༻ςʔϒϧʹॻ͖ࠐΉ͜ͱʹͨ͠
• /login • cake_sessionʹॻ͖ࠐΉ • slim_sessionʹॻ͖ࠐΉ ࠔͬͨ͜ͱ CakePHP Slim
ࠔͬͨ͜ͱ • / ʹΞΫηε • cake_session͔Β SessionΛऔಘ ALB CakePHP Slim
ࠔͬͨ͜ͱ • /v1/~ ʹΞΫηε • slim_session͔ΒSession Λऔಘ ALB CakePHP Slim
݁ • ALBΛར༻ͯ͠ػೳՃ͍͢͠ڥΛೖΕͨ • ςετΞϓϦέʔγϣϯϞχλϦϯά͋Δ • SessionपΓͰࠔͬͨ • ϩάΠϯ࣌ʹ2ͭͷSession༻ςʔϒϧʹॻ͖ࠐ Μͩ
࣍ͷҰख: Ҡߦ • ͜͜·Ͱ୯ͳΔ৽نػೳ • ͡Ό͋طଘػೳͷҠߦͲ͏Δͷ͔
࣍ͷҰख: Ҡߦ • 1. SlimͷΞϓϦέʔγϣϯʹطଘػೳΛՃ • ςετॻ͖ͳ͕Βطଘػೳͷ࠶࣮ • 2. ALBઃఆͰͦͷύε͚ͩΛSlimʹ͚ΔΑ
͏ʹ͢Δ
࣍ͷҰख: Ҡߦ • ྫ) /events ͷҠߦ • 1. /events ͷΤϯυϙΠϯτΛSlimͷΞϓϦέʔ
γϣϯʹ࡞Δ • 2. ALBͰ/events ΛSlimΞϓϦέʔγϣϯʹ͚Δ • Կ͔͋ͬͨΒALBઃఆΛͤྑ͍
None
αϙʔλʔζվળલ ςετίʔυ͕ͳ͍ σϓϩΠલʹΤϥʔʹ ؾ͕͚ͭΔ ΞϓϦέʔγϣϯ ϞχλϦϯά͕͋Δ σϓϩΠޙʹΤϥʔʹ ؾ͕͚ͭΔ σϓϩΠ͕༰қʁ σϓϩΠޙʹԿ͔͕͋ͬͯ
͙͢ʹͤΔ
αϙʔλʔζվળޙ ςετίʔυ͕͋Δ σϓϩΠલʹΤϥʔʹ ؾ͕͚ͭΔ ΞϓϦέʔγϣϯ ϞχλϦϯά͕͋Δ σϓϩΠޙʹΤϥʔʹ ؾ͕͚ͭΔ σϓϩΠ͕༰қʁ σϓϩΠޙʹԿ͔͕͋ͬͯ
͙͢ʹͤΔ
Agenda • ӡ༻ɺՃ։ൃͮ͠Β͍ͱʁ • αϙʔλʔζͷ࣌ͷڥʁ • ӡ༻ɺՃ։ൃ͍͢͠ڥʹ͍ͯ͘͠ • ΞϓϦέʔγϣϯϞχλϦϯάͷՃ •
ςετΛՃͭͭ͠ػೳՃ • ·ͱΊ
• ӡ༻ɺՃ։ൃͮ͠Β͍ΞϓϦέʔγϣϯ ΛͲ͏վળ͍͔ͯ͘͠ • ୈҰาΛͲ͏ͬͯ౿Έग़ͯ͠ະདྷʹ ͔͏͔ ࠓ͍͑ͨ͜ͱ
·ͱΊ • ӡ༻ɺՃ։ൃͮ͠Β͍ΞϓϦέʔ γϣϯΛͨ͘͢͠͠ • σϓϩΠલޙͰΤϥʔʹؾ͕͚ͭΔ Α͏ʹͳͬͨ • طଘͷ৮ΓͮΒ͍෦Λ৮ΒͣʹҠ ߦ͢ΔՄೳੑ͕ݟ͑ͨ