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
レガシープロジェクトで最大限AIの恩恵を受けられるようClaude Codeを利用する
tk1351
4
1.6k
もうちょっといいRubyプロファイラを作りたい (2025)
osyoyu
0
250
AIエージェント開発、DevOps and LLMOps
ymd65536
1
380
モバイルアプリからWebへの横展開を加速した話_Claude_Code_実践術.pdf
kazuyasakamoto
0
300
Swift Updates - Learn Languages 2025
koher
2
440
開発チーム・開発組織の設計改善スキルの向上
masuda220
PRO
18
9.8k
tool ディレクティブを導入してみた感想
sgash708
1
160
フロントエンドのmonorepo化と責務分離のリアーキテクト
kajitack
2
160
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
340
ソフトウェアテスト徹底指南書の紹介
goyoki
1
140
Namespace and Its Future
tagomoris
6
690
react-callを使ってダイヤログをいろんなとこで再利用しよう!
shinaps
1
150
Featured
See All Featured
Why You Should Never Use an ORM
jnunemaker
PRO
59
9.5k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
3k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
1.5k
Rails Girls Zürich Keynote
gr2m
95
14k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
139
34k
How STYLIGHT went responsive
nonsquared
100
5.8k
GraphQLの誤解/rethinking-graphql
sonatard
71
11k
Bash Introduction
62gerente
615
210k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
34
6k
The Art of Programming - Codeland 2020
erikaheidi
55
13k
Large-scale JavaScript Application Architecture
addyosmani
512
110k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.1k
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 • ӡ༻ɺՃ։ൃͮ͠Β͍ͱʁ • αϙʔλʔζͷ࣌ͷڥʁ • ӡ༻ɺՃ։ൃ͍͢͠ڥʹ͍ͯ͘͠ • ΞϓϦέʔγϣϯϞχλϦϯάͷՃ •
ςετΛՃͭͭ͠ػೳՃ • ·ͱΊ
• ӡ༻ɺՃ։ൃͮ͠Β͍ΞϓϦέʔγϣϯ ΛͲ͏վળ͍͔ͯ͘͠ • ୈҰาΛͲ͏ͬͯ౿Έग़ͯ͠ະདྷʹ ͔͏͔ ࠓ͍͑ͨ͜ͱ
·ͱΊ • ӡ༻ɺՃ։ൃͮ͠Β͍ΞϓϦέʔ γϣϯΛͨ͘͢͠͠ • σϓϩΠલޙͰΤϥʔʹؾ͕͚ͭΔ Α͏ʹͳͬͨ • طଘͷ৮ΓͮΒ͍෦Λ৮ΒͣʹҠ ߦ͢ΔՄೳੑ͕ݟ͑ͨ