Slide 1

Slide 1 text

Serverless PHP Sebastian Grodzicki @ 4Developers 2019 @sebgrodzicki

Slide 2

Slide 2 text

phpinfo() Sebastian Grodzicki
 • CTO at SHOWROOM • PHP developer for 15+ years • #serverless @sebgrodzicki

Slide 3

Slide 3 text

SHOWROOM

Slide 4

Slide 4 text

SHOWROOM

Slide 5

Slide 5 text

Serverless • storage as a service (e.g. Amazon S3), • database as a service (e.g. Amazon Aurora), • message queue as a service (e.g. Amazon SQS), • etc.

Slide 6

Slide 6 text

Serverless replaces the traditional approaches to running applications.

Slide 7

Slide 7 text

Platform options Physical servers Virtual machines Containers Platform Serverless Abstraction Control

Slide 8

Slide 8 text

Why serverless? • We don't manage, update, configure, provision servers or containers, • We don't reserve or scale servers or containers, instead they are scaled automatically and transparently for us, • We don't pay for fixed resources, instead we pay for what we actually use (e.g. execution time).

Slide 9

Slide 9 text

Serverless can provide more scalable, affordable and reliable architectures for less effort.

Slide 10

Slide 10 text

Data center evolution DC

Slide 11

Slide 11 text

Data center evolution DC VM VM VM VM VM VM VM VM VM VM VM VM

Slide 12

Slide 12 text

Data center evolution DC VM C C C C C C VM C C C C C C VM C C C C C C VM C C C C C C VM C C C C C C VM C C C C C C VM C C C C C C VM C C C C C C VM C C C C C C VM C C C C C C VM C C C C C C VM C C C C C C

Slide 13

Slide 13 text

Data center evolution 
 DNS 
 CDN

Slide 14

Slide 14 text

Data center evolution PaaS IaaS SaaS

Slide 15

Slide 15 text

Function as a Service (FaaS)

Slide 16

Slide 16 text

FaaS AWS Lambda Microsoft Azure Functions Google Cloud Functions

Slide 17

Slide 17 text

Bref

Slide 18

Slide 18 text

$ composer require mnapoli/bref CLI

Slide 19

Slide 19 text

$ composer require mnapoli/bref $ vendor/bin/bref init CLI

Slide 20

Slide 20 text

Slide 21

Slide 21 text

$ composer require mnapoli/bref $ vendor/bin/bref init $ aws s3 mb s3://4developers CLI

Slide 22

Slide 22 text

$ composer require mnapoli/bref $ vendor/bin/bref init $ aws s3 mb s3://4developers $ sam package \
 --output-template-file .stack.yaml \
 --s3-bucket 4developers CLI

Slide 23

Slide 23 text

$ composer require mnapoli/bref $ vendor/bin/bref init $ aws s3 mb s3://4developers $ sam package \
 --output-template-file .stack.yaml \
 --s3-bucket 4developers $ sam deploy \
 --template-file .stack.yaml \
 --capabilities CAPABILITY_IAM \
 --stack-name php4developers CLI

Slide 24

Slide 24 text

No content

Slide 25

Slide 25 text

Slide 26

Slide 26 text

$ sam package \
 --output-template-file .stack.yaml \
 --s3-bucket 4developers $ sam deploy \
 --template-file .stack.yaml \
 --capabilities CAPABILITY_IAM \
 --stack-name php4developers CLI

Slide 27

Slide 27 text

No content

Slide 28

Slide 28 text

Slide 29

Slide 29 text

$ sam package \
 --output-template-file .stack.yaml \
 --s3-bucket 4developers $ sam deploy \
 --template-file .stack.yaml \
 --capabilities CAPABILITY_IAM \
 --stack-name php4developers CLI

Slide 30

Slide 30 text

No content

Slide 31

Slide 31 text

No content

Slide 32

Slide 32 text

No content

Slide 33

Slide 33 text

No content

Slide 34

Slide 34 text

No content

Slide 35

Slide 35 text

No content

Slide 36

Slide 36 text

Benchmarks: Cold starts 128 512 1024 2048 PHP function 600 ms 280 ms 225 ms 215 ms HTTP application 500 ms 270 ms 270 ms 215 ms Symfony 5.6 s 1.7 s 850 ms 550 ms

Slide 37

Slide 37 text

Benchmarks: Average (warm) execution time 128 512 1024 2048 PHP function 130 ms 32 ms 20 ms 17 ms HTTP application 13 ms 5 ms 3 ms 2 ms Symfony 56 ms 12 ms 6 ms 5 ms

Slide 38

Slide 38 text

Benchmarks: CPU performance 128 512 1024 2048 bench.php 6 s 1.8 s 0.8 s 0.4 s

Slide 39

Slide 39 text

Simplicity Performances Reliability Jobs, Cron ⬤ ⬤ ⬤ API ⬤ ⬤ ⬤ API with MySQL / PostgreSQL ⬤ ⬤ ⬤ Website ⬤ ⬤ ⬤ Website with MySQL / PostgreSQL ⬤ ⬤ ⬤ Legacy application ⬤ ⬤ ⬤

Slide 40

Slide 40 text

PrettyCI

Slide 41

Slide 41 text

PrettyCI

Slide 42

Slide 42 text

PrettyCI

Slide 43

Slide 43 text

PrettyCI

Slide 44

Slide 44 text

Questions?

Slide 45

Slide 45 text

OPcache

Slide 46

Slide 46 text

Thank you!