Slide 1

Slide 1 text

PHP Conference Japan 2 0 23 2 0 23 . 10 . 8 @seike 4 60 1 - PHP -

Slide 2

Slide 2 text

自己 @seike 46 0 - - @seike 46 0 - AWS Community Builder Serverless - Fusic - / 門 - / - - PHP - PHP - PHP - - Fukuoka.php - PHP 2023 行 長 2

Slide 3

Slide 3 text

Agenda 1 .AWS Lambda 2 .Web AWS Lambda 3 . 一 4 . 自 用 5 . 小 方 用 6 . 3

Slide 4

Slide 4 text

01 AWS Lambda

Slide 5

Slide 5 text

AWS Lambda AWS 自 支 用 支 5

Slide 6

Slide 6 text

AWS Lambda 小 Lambda 生 行 生 小 小 行 小 Lambda 行 長 行 VPC 力 用 ⾒ Lambda VPC 行 VPC Lambda 行 生 用 Lambda SecretManager 用 AWS CloudWatch Logs CloudWatch Metrics 用 Lambda 6

Slide 7

Slide 7 text

02 Web AWS Lambda

Slide 8

Slide 8 text

Bref Bref PHP OSS 一 AWS Lambda PHP AWS Lambda PHP PHP 大 PHP 用 Bref PHP PHP   AWS Lambda 用 Developer Community   Laravel Symfony 人 PHP   CLI 8

Slide 9

Slide 9 text

Developer Community AWS Lambda PHP 用 PHP PHPer 辛 Bref Serverless Framework 力 9 service: app-php-serverless provider: name: aws region: ap-northeast- 1 plugins: - ./vendor/bref/bref functions: api: handler: index.php description: '' runtime: php- 8 2 -fpm timeout: 28 events: - httpApi: '*' # Exclude files from deployment package: patterns: - '!node_modules/**' - '!tests/**' $ composer require bref/bref $ vendor/bin/bref init $ serverless deploy

Slide 10

Slide 10 text

10 Bref AWS Lambda API Gateway 行 Bref API Gateway AWS Lambda Bref Laravel Bridge Laravel Bref Lambda

Slide 11

Slide 11 text

AWS Lambda PHP Bref by 11

Slide 12

Slide 12 text

Laravel Bref 12 Laravel Bref PHP 用 AWS Lambda PHP 用 AWS Lambda AWS Lambda Laravel PHPer 大

Slide 13

Slide 13 text

No content

Slide 14

Slide 14 text

AWS Lambda 14 小 Lambda 生 行 生 大 小 小   入 行 小 Lambda 行 長 行 PHP 長 VPC 力 用 ⾒ Lambda VPC 行 VPC Lambda 行 生 用 Lambda SecretManager 用 AWS CloudWatch Logs CloudWatch Metrics 用 Lambda

Slide 15

Slide 15 text

Lambda Amazon Web Services Operating Lambda: – Part 3 -Lambda - - 小 用 - - - - 用 - 15 URL:https://aws.amazon.com/jp/blogs/news/compute-operating-lambda-anti-patterns-in-event-driven-architectures-part- 3 / Operating Lambda: – Part 3

Slide 16

Slide 16 text

自 自身

Slide 17

Slide 17 text

Point

Slide 18

Slide 18 text

03 一

Slide 19

Slide 19 text

Point 目 入 用

Slide 20

Slide 20 text

一 Laravel 用 言 用 力 生 行 生 力 生 高 一 Laravel 一 文 文 Laravel Web 言 文 非 文 20

Slide 21

Slide 21 text

PHP AWS Lambda PHP 入 2018 PHP Conference 201 9 AWS Lambda PHP 21

Slide 22

Slide 22 text

AWS Dev Day 2 022 AWS Dev Day 2 02 2 Amazon S 3 Select で バ 高 https://speakerdeck.com/seike 460 /serverless-high-load-site-realized-with-amazon-s 3 -select 22

Slide 23

Slide 23 text

AWS Lambda x Bref x Laravel 23 用 大 行 - AWS Lambda - AWS S 3 Select - S 3 JSON SQL 用 大 行 PHP AWS Lambda 行 一 入 Laravel

Slide 24

Slide 24 text

AWS Lambda x Bref x Laravel 用 24 Web AWS Lambda Bref Laravel ⾒ 手 0 Laravel Laravel 行 自 Laravel 用 AWS ⾒

Slide 25

Slide 25 text

Point AWS Lambda

Slide 26

Slide 26 text

用   用 26

Slide 27

Slide 27 text

用 立 用 27 用

Slide 28

Slide 28 text

AWS ⾒ AWS Lambda 大 28

Slide 29

Slide 29 text

心 心 用 非 大 29

Slide 30

Slide 30 text

Laravel 30 Web 非 高 AWS Lambda   用   文 入 Laravel 用

Slide 31

Slide 31 text

Web AWS Lambda 一見 二   AWS Lambda         用 一 31

Slide 32

Slide 32 text

Slide 33

Slide 33 text

04 自 用

Slide 34

Slide 34 text

ChatGPT ・ ORM ・ ・ ・ API 生 RESTful API GraphQL HTTP 34 CI/CD ⾒ API ⾒ Webhook OAuth (RBAC) API (XSS) (CSRF) SQL (CSP) HTTPS/SSL (SSO)

Slide 35

Slide 35 text

API ・ 35

Slide 36

Slide 36 text

@o 0 h_ 36 URL https://speakerdeck.com/o 0 h/phperkaigi- 20 23

Slide 37

Slide 37 text

PHP 37

Slide 38

Slide 38 text

Request GET POST URL Router URL Response DbManager DBRepository DbRepository Controller 行 View 示 Session Application ClassLoader 自 PHP P. 202 38

Slide 39

Slide 39 text

Request Router Response DbManager DbRepository Controller View Session Application ClassLoader PHP P. 202 39

Slide 40

Slide 40 text

API Gateway 40 - Client Cognito ID - Client ID API Gateway Request - API Gateway Authorizer Cognito - API 用 API Gateway CORS 行

Slide 41

Slide 41 text

DB Request Router Response Controller Application ClassLoader 41

Slide 42

Slide 42 text

Model 方 42 URL https://speakerdeck.com/seike 4 6 0 /aws-lambda-in-production-with-bref

Slide 43

Slide 43 text

Model 方 43 URL https://speakerdeck.com/seike 4 6 0 /aws-lambda-in-production-with-bref

Slide 44

Slide 44 text

DynamoDB 用 44 URL https://github.com/baopham/laravel-dynamodb

Slide 45

Slide 45 text

ThinApi

Slide 46

Slide 46 text

46 ├ ─ ─ ThinApiApplication.php ├ ─ ─ bootstrap.php ├ ─ ─ composer.json ├ ─ ─ composer.lock ├ ─ ─ controllers │ └ ─ ─ ApiController.php ├ ─ ─ core │ ├ ─ ─ Application.php │ ├ ─ ─ ClassLoader.php │ ├ ─ ─ Controller.php │ ├ ─ ─ HttpNotFoundException.php │ ├ ─ ─ Request.php │ ├ ─ ─ Response.php │ └ ─ ─ Router.php ├ ─ ─ serverless.yml └ ─ ─ web └ ─ ─ index.php API ThinApiApplication 比 行 示 非 小

Slide 47

Slide 47 text

web/index.php 47 serverless.yml handler web/index.php

Slide 48

Slide 48 text

bootstrap.php 48 bootstrap Model core registerDir ClassLoader

Slide 49

Slide 49 text

core/ClassLoader.php 49 ClassLoader spl_autoload_register 用

Slide 50

Slide 50 text

web/index.php 50 ThinApiApplication Application Core 用 Application ThinApiApplication->run(); 行

Slide 51

Slide 51 text

ThinApiApplication.php 51 ThinApiApplication Routing Application run DB 用 ⾒ configure 行

Slide 52

Slide 52 text

Application 52 run Router 行 runAction 行 response

Slide 53

Slide 53 text

Application 53 run Router 行 runAction 行 response

Slide 54

Slide 54 text

Response 54 Response Response send Client Core 用 Application

Slide 55

Slide 55 text

ApiController 55 ApiController 用 API ThinApi 用

Slide 56

Slide 56 text

deploy 自 56 Deploying app-bref-thin to stage dev (ap-northeast-1) ✔ Service deployed to stack app-bref-thin-dev (28s) endpoint: ANY - https://zzzzzzzzzz.execute-api.ap-northeast-1.amazonaws.com functions: api: app-bref-thin-dev-api (275 kB) Want a better experience than the AWS console? Try out https://dashboard.bref.sh 28 27 5 kB

Slide 57

Slide 57 text

deploy Laravel 57 Deploying bref-laravel to stage dev (ap-northeast-1) ✔ Service deployed to stack bref-laravel-dev (52s) endpoint: ANY - https://yyyyyyyyyy.execute-api.ap-northeast-1.amazonaws.com functions: web: bref-laravel-dev-web (32 MB) artisan: bref-laravel-dev-artisan (32 MB) Want a better experience than the AWS console? Try out https://dashboard.bref.sh 28 -> 52 275kB -> 3 2 M Laravel 入 ⾒ 小

Slide 58

Slide 58 text

[#/sec] 自 58 Requests per second: 285.36 [#/sec] (mean) Requests per second: 347.26 [#/sec] (mean) Requests per second: 328.23 [#/sec] (mean) EC 2 Apache Bench 347 . 26 [#/sec] Response index.php 351.97[#/sec] 3

Slide 59

Slide 59 text

[#/sec] Laravel 59 $ ab -n 20000 -c 10 https://yyyyyyyyyy.execute-api.ap-northeast-1.amazonaws.com/ ~ Requests per second: 295.31 [#/sec] (mean) Requests per second: 303.91 [#/sec] (mean) Requests per second: 307.67 [#/sec] (mean) ~ EC 2 Apache Bench 347 . 26 [#/sec] -> 307 . 67 [#/sec] Laravel 言 3

Slide 60

Slide 60 text

Web 大 用  手 Laravel Web     用 一   60

Slide 61

Slide 61 text

Point Monolith First Serverless Development

Slide 62

Slide 62 text

Monolith First Serverless Development 62 URL : https://speakerdeck.com/_kensh/monolith-first-serverless-development?slide= 55 @_kensh Monolith First Serverless Development

Slide 63

Slide 63 text

用 Role APIGateway ⾒ 示 63 functions: web: handler: public/index.php runtime: php- 82 -fpm timeout: 28 events: - httpApi: '*' admin-web: handler: public/index.php runtime: php- 82 -fpm timeout: 28 role: api-admin-role events: - httpApi: method: '*' path: /admin $ serverless deploy function --function admin-web Deploying function admin-web to stage dev (ap-northeast- 1 ) ✔ Function code deployed ( 42 s) Function configuration did not change, and the update was skipped. If you made changes to the service configuration and expected them to be deployed, it most likely means that they can only be applied with a full service deployment. ( 42 s)

Slide 64

Slide 64 text

Lambda Web Adapter Bref ⾒ Lambda Web Adapter Parse HTTP HTTP 64

Slide 65

Slide 65 text

Lambda Web Adapter 65

Slide 66

Slide 66 text

Amazon Web Services - Labs OSS Amazon Web Services Labs OSS 非 OSS 自 用 人 Runtime Bref 用 66

Slide 67

Slide 67 text

05 小 方 用

Slide 68

Slide 68 text

小 小   : 人   :   用 :   : 用   : AWS 68

Slide 69

Slide 69 text

小 小   : 人   :   用 :   : 用   : AWS 69

Slide 70

Slide 70 text

方 方   : 人   :   用 :   : 用   : AWS 70

Slide 71

Slide 71 text

Web 非 Laravel 71

Slide 72

Slide 72 text

72 入 目 用 Point 1 力 Point 2 Monolith First Serverless Development 方 Laravel Point 3 方 小 Laravel Point 4

Slide 73

Slide 73 text

Thank You We are Hiring ! https://recruit.fusic.co.jp/