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
5
27k
運用、追加開発しづらいPHPアプリケーションに未来を与える方法
PHPカンファレンス2017でお話したスライドです。
動画:
https://youtu.be/13YpGav4DBw?t=4h41m8s
ara_ta3
October 08, 2017
Tweet
Share
More Decks by ara_ta3
See All by ara_ta3
あなたとRPG今すぐインストール
ara_ta3
0
1.9k
Other Decks in Programming
See All in Programming
F#で自在につくる静的ブログサイト - 関数型まつり2025
pizzacat83
0
280
ReadMoreTextView
fornewid
0
250
💎 My RubyKaigi Effect in 2025: Top Ruby Companies 🌐
yasulab
PRO
1
130
Gleamという選択肢
comamoca
6
660
JSAI2025 RecSysChallenge2024 優勝報告
unonao
1
440
複数アプリケーションを育てていくための共通化戦略
irof
9
3.7k
赤裸々に公開。 TSKaigiのオフシーズン
takezoux2
0
110
RubyKaigiで得られる10の価値 〜Ruby話を聞くことだけが RubyKaigiじゃない〜
tomohiko9090
0
130
Bytecode Manipulation 으로 생산성 높이기
bigstark
1
190
Javaに鉄道指向プログラミング (Railway Oriented Pro gramming) のエッセンスを取り入れる/Bringing the Essence of Railway-Oriented Programming to Java
cocet33000
2
510
つよそうにふるまい、つよい成果を出すのなら、つよいのかもしれない
irof
1
260
Passkeys for Java Developers
ynojima
2
830
Featured
See All Featured
How to train your dragon (web standard)
notwaldorf
92
6.1k
Build The Right Thing And Hit Your Dates
maggiecrowley
36
2.7k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
161
15k
The Invisible Side of Design
smashingmag
299
50k
Fireside Chat
paigeccino
37
3.5k
Bash Introduction
62gerente
614
210k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
248
1.3M
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
8
770
Optimising Largest Contentful Paint
csswizardry
37
3.3k
Designing for humans not robots
tammielis
253
25k
Building Adaptive Systems
keathley
43
2.6k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
46
9.6k
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 • ӡ༻ɺՃ։ൃͮ͠Β͍ͱʁ • αϙʔλʔζͷ࣌ͷڥʁ • ӡ༻ɺՃ։ൃ͍͢͠ڥʹ͍ͯ͘͠ • ΞϓϦέʔγϣϯϞχλϦϯάͷՃ •
ςετΛՃͭͭ͠ػೳՃ • ·ͱΊ
• ӡ༻ɺՃ։ൃͮ͠Β͍ΞϓϦέʔγϣϯ ΛͲ͏վળ͍͔ͯ͘͠ • ୈҰาΛͲ͏ͬͯ౿Έग़ͯ͠ະདྷʹ ͔͏͔ ࠓ͍͑ͨ͜ͱ
·ͱΊ • ӡ༻ɺՃ։ൃͮ͠Β͍ΞϓϦέʔ γϣϯΛͨ͘͢͠͠ • σϓϩΠલޙͰΤϥʔʹؾ͕͚ͭΔ Α͏ʹͳͬͨ • طଘͷ৮ΓͮΒ͍෦Λ৮ΒͣʹҠ ߦ͢ΔՄೳੑ͕ݟ͑ͨ