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
AWS Lambda PHPのProduction利用を続ける僕がAWS App Runne...
Search
shiro seike
PRO
March 23, 2023
Technology
2.3k
3
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
AWS Lambda PHPのProduction利用を続ける僕がAWS App Runnerの可能性を探る
PHPerKaigi 2023
https://phperkaigi.jp/2023/
shiro seike
PRO
March 23, 2023
More Decks by shiro seike
See All by shiro seike
Seeing Through Serverless: Observability for AWS Lambda with ADOT and CloudWatch Application Signals
seike460
PRO
0
82
型も通る、synthも通る、それでも危ない 〜AIのCDKの権限とコストを機械で検証する〜 / It Passes Type Checks, It Passes Synth Checks, but It’s Still Risky — Automatically Verifying Permissions and Costs in AI’s CDK —
seike460
PRO
1
590
コミュニティの有益性 ~JAWS Days 2026 での体験を通して~ / The Benefits of a Community ~Through My Experience at JAWS Days 2026~
seike460
PRO
0
420
Architecture as SteeringOn-Ramp to AI-DLC
seike460
PRO
0
47
Why Continue AWS Community Builders
seike460
PRO
0
86
AWSコミュニティ活動は顧客のクラウド推進に効くのか / Do AWS community activities help customers adopt the cloud?
seike460
PRO
0
200
テレメトリーシグナルが導くパフォーマンス最適化 / Performance Optimization Driven by Telemetry Signals
seike460
PRO
2
320
AI-DLC 入門 〜AIコーディングの本質は「コード」ではなく「構造」〜 / Introduction to AI-DLC: The Essence of AI Coding Is Not “Code” but “Structure”
seike460
PRO
0
2k
今さら聞けないサーバーレスのいいところ 〜運用から解放される世界を目指して〜 / The Benefits of Serverless You Might Be Too Embarrassed to Ask About Now — Aiming for a World Free from Operational Burdens
seike460
PRO
0
120
Other Decks in Technology
See All in Technology
属人化を叩き割れ!「制作加速」と「安定化」の矛盾を打破する:8年目プロダクトが辿り着いた「ミスが起こり得ない」アセット制作フローの全貌
gree_tech
PRO
0
460
コミュニティから始まった農業IoTとの7年間 ——人との関わりが教えてくれたこと
peacemaker07
0
110
AI開発に用いられるHPC技術について
gpuunite_official
0
270
会社紹介資料 / Sansan Company Profile
sansan33
PRO
24
430k
Android skills に学ぶ
kokiko
0
170
暗号化?某ファイルストレージはどうなるの!? 3rd Partyとうまく付き合う秘密度ラベル設計
kasada
0
180
形式手法特論:Hyperproperty とモデル検査 #kernelvm / Kernel VM Study Tokyo 19th
ytaka23
0
770
三人寄ればチューリング完全
puhitaku
6
3.1k
Go 1.27 の標準パッケージに uuid が入った!のでいろいろ喋る / go_127_std_go_uuid
convto
3
700
作って理解するCoding Agent 〜フレームワークに頼らないピュア Python での実装〜
takapy
4
1.2k
Genie Codeハンズオン応用編
taka_aki
0
140
AWS Blocks が楽しい #ゆるWeb札幌
tacck
PRO
0
140
Featured
See All Featured
Optimizing for Happiness
mojombo
378
71k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
3k
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.4k
KATA
mclloyd
PRO
35
15k
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
490
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
GitHub's CSS Performance
jonrohan
1033
470k
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
3k
エンジニアに許された特別な時間の終わり
watany
108
250k
New Earth Scene 8
popppiees
3
2.5k
Why You Should Never Use an ORM
jnunemaker
PRO
61
10k
Transcript
AWS Lambda PHP Production AWS App Runner PHPerKaigi 2 0
23 2 0 23 . 3 . 25 @seike 4 60 1
@seike 460 - - @seike 46 0 - Fusic -
/ - / / - - PHP ( ) - PHPerKaigi( 201 9 2 0 2 3 ) - AWS - - 2023 6 24 PHP 2023 2
Agenda 1 . AWS Lambda PHP 2 . AWS App
Runner 3 . AWS App Runner PHP 8 . 1 4 . AWS Lambda PHP AWS App Runner 5 . 3
01 AWS Lambda PHP
AWS Lambda - AWS - - 5
AWS Lambda PHP PHP AWS PHP 6 AWS Lambda PHP
OSS Project Bref PHP Laravel Symfony
Amazon S 3 Select で バ 7
02 AWS App Runner
AWS App Runner っ VPC ELB Fargate CodeBuild CD
App Runnner っ っ AWS App Runner っ Docker Docker ECR Python Node.js Ruby Java .NET 9
AWS App Runner PHP 8 . 1 PHP 8 .
1 AWS App Runner PHP 10
- Amazon VPC - Elastic Load Balancing - AWS App
Runner - CodeBuild GitHub - Amazon CloudWatch Logs AWS VPC https ELB <-> App Runner 11
Route 5 3 https://XxxxxxxxxX.ap-northeast- 1 .awsapprunner.com SSL 12
RDS Cache AWS Secrets Manager Web Cron RDB
VPC Amazon RDS Cache Redis Amazon ElastiCache API AWS Secrets Manager 13
AWS WAF Public 14 AWS WAF IP
http->https
GitHub 15
03 AWS App Runner PHP 8 . 1
-> Example 17 command: php -S 0 . 0 .
0 . 0 : 8 0 80 -t . Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y
18 Nextat (@n_ 12 15 ) AWS App Runner
PHP Apache + PHP-FPM https://nextat.co.jp/staff/archives/ 3 03
335 83 8 599 203 .dkr.ecr.ap-northeast- 1 .amazonaws.com/awsfusionruntime-php 81 :
8 . 1 . 1 4 19
command っcommand nginx httpd 20
command っpre-build っbuild っpost-build build command $
for x in ${PATH//:/ }; do ls - 1 $x; done | sort | uniq apache 2 httpd nginx yum command Install 21
22
3 17 1 23 🎉
24 nginx(https) php-fpm Startup.sh wait DocumentRoot /app/public index.php
Framework Laravel
25 .env PHP URL Git Clone URL https://github.com/seike
4 60 /laravel-lambda-app-runner
supervisord 26 Example Supervisord Supervisord build
27 ΧελϚΠζͷՄೳੑ͋Γͦ͏ ▪php-fpm include=/etc/php-fpm.d/*.conf ▪nginx include /etc/nginx/default.d/*.conf ▪httpd IncludeOptional conf.d/*.conf
→/etc/httpd/conf.d
04 AWS Lambda PHP X AWS App Runner PHP
Pickup
30 t3.medium
AWS Lambda 1 0 0 Client 10 0 Request 31
っ 100 Client 1 00 Request Requests per second: 2 6 . 89 [#/sec] (mean) This is ApacheBench, Version 2 . 3 <$Revision: 1 90 3 6 18 $> Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Licensed to The Apache Software Foundation, http://www.apache.org/ Benchmarking XxxxxxxxX.execute-api.ap-northeast- 1 .amazonaws.com (be patient).....done Server Software: Server Hostname: XxxxxxxxX.execute-api.ap-northeast- 1 .amazonaws.com Server Port: 44 3 SSL/TLS Protocol: TLSv 1 . 2 ,ECDHE-RSA-AES 1 2 8 -GCM-SHA 2 56 , 20 4 8 , 12 8 Server Temp Key: ECDH P- 25 6 2 56 bits TLS Server Name: XxxxxxxxX.execute-api.ap-northeast- 1 .amazonaws.com Document Path: / Document Length: 2 7 49 6 bytes Concurrency Level: 10 0 Time taken for tests: 3 . 7 1 8 seconds Complete requests: 1 0 0 Failed requests: 0 Total transferred: 29 51 0 00 bytes HTML transferred: 274 9 6 0 0 bytes Requests per second: 2 6 . 89 [#/sec] (mean) Time per request: 371 8 . 1 86 [ms] (mean) Time per request: 37 . 18 2 [ms] (mean, across all concurrent requests) Transfer rate: 77 5 . 07 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 6 1 6 9 2 4 . 5 163 19 4 Processing: 36 1 2 60 5 12 . 0 14 63 1999 Waiting: 36 1 2 5 7 51 0 . 9 1 462 1 8 03 Total: 195 142 9 51 6 . 0 1640 20 05 Percentage of the requests served within a certain time (ms) 5 0 % 1640 6 6 % 1658 7 5 % 1680 8 0 % 1695 9 0 % 1723 9 5 % 1744 9 8 % 1907 9 9 % 2005 1 00 % 2 0 05 (longest request)
AWS App Runner 1 0 0 Client 10 0 Request
32 This is ApacheBench, Version 2 . 3 <$Revision: 1 90 3 6 18 $> Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Licensed to The Apache Software Foundation, http://www.apache.org/ Benchmarking YyyyyyyyyY.ap-northeast- 1 .awsapprunner.com (be patient).....done Server Software: envoy Server Hostname: YyyyyyyyyY.ap-northeast- 1 .awsapprunner.com Server Port: 44 3 SSL/TLS Protocol: TLSv 1 . 2 ,ECDHE-RSA-AES 1 2 8 -GCM-SHA 2 56 , 20 4 8 , 12 8 Server Temp Key: ECDH P- 25 6 2 56 bits TLS Server Name: YyyyyyyyyY.ap-northeast- 1 .awsapprunner.com Document Path: / Document Length: 2 7 49 6 bytes Concurrency Level: 10 0 Time taken for tests: 2 . 5 6 7 seconds Complete requests: 1 0 0 Failed requests: 0 Total transferred: 28 62 1 36 bytes HTML transferred: 274 9 6 0 0 bytes Requests per second: 3 8 . 96 [#/sec] (mean) Time per request: 256 7 . 0 16 [ms] (mean) Time per request: 25 . 67 0 [ms] (mean, across all concurrent requests) Transfer rate: 10 88 . 83 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 2 4 1 9 9 35 . 4 20 6 2 19 Processing: 1012 18 8 3 3 35 . 4 20 0 5 230 3 Waiting: 16 78 1 372 . 9 902 130 5 Total: 1 047 2 0 82 35 6 . 8 2210 2 5 14 Percentage of the requests served within a certain time (ms) 5 0 % 2210 6 6 % 2218 7 5 % 2311 8 0 % 2328 9 0 % 2418 9 5 % 2506 9 8 % 2509 9 9 % 2514 1 00 % 2 5 14 (longest request) っ 100 Client 1 00 Request Requests per second: 3 8 . 96 [#/sec] (mean) CPU AWS App Runnner
AWS Lambda 1 0 0 0 Client 1 0 000
Request 33 っ 100 0 Client 10000 Request Failed requests: 0 RPS 540 560 580 This is ApacheBench, Version 2 . 3 <$Revision: 1 903 6 18 $> Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Licensed to The Apache Software Foundation, http://www.apache.org/ Benchmarking XxxxxxxxX.execute-api.ap-northeast- 1 .amazonaws.com (be patient) Completed 100 0 requests … Completed 100 0 0 requests Finished 1 0 0 0 0 requests Server Software: Server Hostname: XxxxxxxxX.execute-api.ap-northeast- 1 .amazonaws.com Server Port: 44 3 SSL/TLS Protocol: TLSv 1 . 2 ,ECDHE-RSA-AES 1 2 8 -GCM-SHA 2 5 6 , 2 0 4 8 , 1 28 Server Temp Key: ECDH P- 2 56 2 5 6 bits TLS Server Name: XxxxxxxxX.execute-api.ap-northeast- 1 .amazonaws.com Document Path: / Document Length: 27 496 bytes Concurrency Level: 1 0 0 0 Time taken for tests: 1 7 . 814 seconds Complete requests: 1 0 000 Failed requests: 0 Total transferred: 295 1 0 0 0 0 0 bytes HTML transferred: 27496 0 00 0 bytes Requests per second: 5 6 1 . 3 5 [#/sec] (mean) Time per request: 17 81 . 4 3 0 [ms] (mean) Time per request: 1 . 781 [ms] (mean, across all concurrent requests) Transfer rate: 1 6 17 7 . 0 9 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 1 0 1000 3 01 . 5 103 2 1 7 4 0 Processing: 1 26 66 2 2 85 . 4 61 1 1 80 7 Waiting: 3 0 2 5 6 1 55 . 3 227 12 03 Total: 9 9 1 16 6 3 193 . 7 1 6 03 3 2 0 1 Percentage of the requests served within a certain time (ms) 5 0 % 1 60 3 6 6 % 1 66 4 7 5 % 1 72 6 8 0 % 1 75 0 9 0 % 1 89 0 9 5 % 2 05 4 9 8 % 2 25 2 9 9 % 2 29 5 100 % 3 2 0 1 (longest request)
AWS App Runner 1 0 00 Client 1 00 0
0 Request 34 This is ApacheBench, Version 2 . 3 <$Revision: 1 903 6 18 $> Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Licensed to The Apache Software Foundation, http://www.apache.org/ Benchmarking YyyyyyyyyY.ap-northeast- 1 .awsapprunner.com (be patient) Completed 100 0 requests … Completed 100 0 0 requests Finished 1 0 0 0 0 requests Server Software: envoy Server Hostname: YyyyyyyyyY.ap-northeast- 1 .awsapprunner.com Server Port: 44 3 SSL/TLS Protocol: TLSv 1 . 2 ,ECDHE-RSA-AES 1 2 8 -GCM-SHA 2 5 6 , 2 0 4 8 , 1 28 Server Temp Key: ECDH P- 2 56 2 5 6 bits TLS Server Name: YyyyyyyyyY.ap-northeast- 1 .awsapprunner.com Document Path: / Document Length: 27 496 bytes Concurrency Level: 1 0 0 0 Time taken for tests: 5 2 . 278 seconds Complete requests: 1 0 000 Failed requests: 1 84 5 (Connect: 0 , Receive: 0 , Length: 1 8 4 5 , Exceptions: 0 ) Non- 2 xx responses: 1 8 4 5 Total transferred: 233 8 9 7 6 8 0 bytes HTML transferred: 22431 4 89 7 bytes Requests per second: 1 9 1 . 2 8 [#/sec] (mean) Time per request: 52 27 . 8 1 6 [ms] (mean) Time per request: 5 . 228 [ms] (mean, across all concurrent requests) Transfer rate: 4 3 69 . 2 4 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 8 2 2 2 5 3 8 . 9 1 4 1 8 5 2 Processing: 1 002 41 7 2 2 7 5 5 . 8 3 4 8 4 24 1 1 7 Waiting: 3 22 6 8 1 50 7 . 8 2308 1 8 1 10 Total: 101 1 4395 274 6 . 8 3 69 1 2 4 13 1 Percentage of the requests served within a certain time (ms) 5 0 % 3 69 1 6 6 % 4 29 1 7 5 % 4 81 2 8 0 % 6 38 0 9 0 % 8 81 5 9 5 % 9 32 8 9 8 % 9 79 1 9 9 % 1 2 9 4 4 100 % 2 41 3 1 (longest request) っ 100 0 Client 10000 Request 200 Failed requests 1845 Failed requests 0 280 320 AWS Lambda
35 - AWS Lambda AWS App Runner × Bref
り り FaaS PayLoad 6 MB × Web cron み り 1-2 み り $13 AWS み
AWS App Runner PHP 36
05
38 AWS App Runnner Web Point 1 PHP 8 .
1 Point 2 PHP Point 3 OSS Point 4
Thank You We are Hiring ! https://recruit.fusic.co.jp/