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
28k
運用、追加開発しづらい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
Domain-centric? Why Hexagonal, Onion, and Clean Architecture Are Answers to the Wrong Question
olivergierke
3
940
TFLintカスタムプラグインで始める Terraformコード品質管理
bells17
2
350
O Que É e Como Funciona o PHP-FPM?
marcelgsantos
0
180
AI駆動で0→1をやって見えた光と伸びしろ
passion0102
1
780
Go言語はstack overflowの夢を見るか?
logica0419
0
520
What Spring Developers Should Know About Jakarta EE
ivargrimstad
0
410
理論と実務のギャップを超える
eycjur
0
170
あなたとKaigi on Rails / Kaigi on Rails + You
shimoju
0
180
釣り地図SNSにおける有料機能の実装
nokonoko1203
0
200
Claude CodeによるAI駆動開発の実践 〜そこから見えてきたこれからのプログラミング〜
iriikeita
0
320
フロントエンド開発のためのブラウザ組み込みAI入門
masashi
7
3.4k
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
570
Featured
See All Featured
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
53k
Measuring & Analyzing Core Web Vitals
bluesmoon
9
630
Into the Great Unknown - MozCon
thekraken
40
2.1k
Bash Introduction
62gerente
615
210k
The Art of Programming - Codeland 2020
erikaheidi
56
14k
Large-scale JavaScript Application Architecture
addyosmani
514
110k
Testing 201, or: Great Expectations
jmmastey
45
7.7k
Unsuck your backbone
ammeep
671
58k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.2k
Intergalactic Javascript Robots from Outer Space
tanoku
272
27k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Done Done
chrislema
185
16k
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 • ӡ༻ɺՃ։ൃͮ͠Β͍ͱʁ • αϙʔλʔζͷ࣌ͷڥʁ • ӡ༻ɺՃ։ൃ͍͢͠ڥʹ͍ͯ͘͠ • ΞϓϦέʔγϣϯϞχλϦϯάͷՃ •
ςετΛՃͭͭ͠ػೳՃ • ·ͱΊ
• ӡ༻ɺՃ։ൃͮ͠Β͍ΞϓϦέʔγϣϯ ΛͲ͏վળ͍͔ͯ͘͠ • ୈҰาΛͲ͏ͬͯ౿Έग़ͯ͠ະདྷʹ ͔͏͔ ࠓ͍͑ͨ͜ͱ
·ͱΊ • ӡ༻ɺՃ։ൃͮ͠Β͍ΞϓϦέʔ γϣϯΛͨ͘͢͠͠ • σϓϩΠલޙͰΤϥʔʹؾ͕͚ͭΔ Α͏ʹͳͬͨ • طଘͷ৮ΓͮΒ͍෦Λ৮ΒͣʹҠ ߦ͢ΔՄೳੑ͕ݟ͑ͨ