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
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
shiro seike
PRO
March 23, 2023
Technology
2.2k
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
Architecture as SteeringOn-Ramp to AI-DLC
seike460
PRO
0
17
Why Continue AWS Community Builders
seike460
PRO
0
71
AWSコミュニティ活動は顧客のクラウド推進に効くのか / Do AWS community activities help customers adopt the cloud?
seike460
PRO
0
180
テレメトリーシグナルが導くパフォーマンス最適化 / Performance Optimization Driven by Telemetry Signals
seike460
PRO
2
270
AI-DLC 入門 〜AIコーディングの本質は「コード」ではなく「構造」〜 / Introduction to AI-DLC: The Essence of AI Coding Is Not “Code” but “Structure”
seike460
PRO
0
1.4k
今さら聞けないサーバーレスのいいところ 〜運用から解放される世界を目指して〜 / The Benefits of Serverless You Might Be Too Embarrassed to Ask About Now — Aiming for a World Free from Operational Burdens
seike460
PRO
0
100
AWS Lambda Durable Functions のユースケースを探る / Exploring Use Cases for AWS Lambda Durable Functions
seike460
PRO
0
93
歴史から学ぶ「Why PHP?」 PHPを書く理由を改めて理解する / Learning from History: “Why PHP?” Rediscovering the Reasons for Writing PHP
seike460
PRO
0
520
Team-First Serverless Platform Engineering Approach to PHP Applications with Laravel and Bref
seike460
PRO
1
160
Other Decks in Technology
See All in Technology
気軽に使える"情報のハブ"としてのNotion活用 〜フロー情報の集積点 と、 Claude Code × Notion AI〜
syucream
1
130
AIの性能が向上しても未解決な組織の重大問題は何か?/An Unsolved Organizational Problem in the Age of AI
moriyuya
4
680
データサイエンスを価値につなげるプロジェクト設計 〜 DS一年目が現場で得た気づき 〜
ysd113
1
250
白金鉱業Meetup_Vol.24_「AIエージェントは分けるほど良い」は本当か? / Is it true that “the more you divide AI agents, the better”?
brainpadpr
1
390
FinOps × AIエージェントで実現する コストインシデントの自動調査
oasis1994liveforever
0
140
SONiC Scale-Up Working Group から探る Scale-UpやUltraEthernet機能の実装方法
ebiken
PRO
2
340
就職⽀援サービスにおけるキャリアアドバイザーのシフトスケジューリング
recruitengineers
PRO
1
150
RAG を使わないという選択肢
tatsutaka
1
250
Claude Codeをどのように キャッチアップしているか
oikon48
13
8.1k
Claude Code の Sandbox 機能を Anthropic Sandbox Runtime(srt) で試そう!/lets-play-anthropic-sandbox-runtime
tomoki10
1
610
不要なレビューをAIにまかせて AIコーディングの環境改善を加速した
shoota
1
120
Oracle AI Database@AWS:サービス概要のご紹介
oracle4engineer
PRO
4
2.9k
Featured
See All Featured
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
430
AI: The stuff that nobody shows you
jnunemaker
PRO
8
710
RailsConf 2023
tenderlove
30
1.5k
Context Engineering - Making Every Token Count
addyosmani
9
960
HDC tutorial
michielstock
2
710
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
Odyssey Design
rkendrick25
PRO
2
700
The Illustrated Children's Guide to Kubernetes
chrisshort
51
52k
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
310
What's in a price? How to price your products and services
michaelherold
247
13k
Imperfection Machines: The Place of Print at Facebook
scottboms
270
14k
Docker and Python
trallard
47
3.9k
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/