Introduction to Serverless PHP

A presentation at Romania PHP in June 2018 in Cluj-Napoca, Romania by Rob Allen

Slide 1

Slide 1

Introduction to Serverless PHP Rob Allen     June 2018

Slide 2

Slide 2

Deployment options 1. Physical servers 2. Virtual machines 3. Containers Rob Allen ~  @akrabat

Slide 3

Slide 3

Container deployments 1. Platform (e.g. Kubernetes) 2. Application (e.g. Cloud Foundry) 3. Serverless (e.g. OpenWhisk) Rob Allen ~  @akrabat

Slide 4

Slide 4

Serverless?   The first thing to know about serverless computing is that "serverless" is a pretty bad name to call it.

  • Brandon Butler, Network World Rob Allen ~  @akrabat

Slide 5

Slide 5

AKA: Functions as a Service • A runtime to execute your functions • No capacity planning or load balancing; just tasks being executed. • Pay for execution, not when idle Rob Allen ~  @akrabat

Slide 6

Slide 6

Use-cases Synchronous Service is invoked and provides immediate response (HTTP requests: APIs, chat bots) Asynchronous Push a message which drives an action later (web hooks, timed events, database changes) Streaming Continuous data flow to be processed Rob Allen ~  @akrabat

Slide 7

Slide 7

Benefits • No need to think about servers • Concentrate on application code • Pay only for what you use, when you use it • Language agnostic: NodeJS, Swift, Python, Java, C#, etc Rob Allen ~  @akrabat

Slide 8

Slide 8

Challenges • Start up latency • Time limit • State is external • DevOps is still a thing Rob Allen ~  @akrabat

Slide 9

Slide 9

It's about value Rob Allen ~  @akrabat

Slide 10

Slide 10

When should you use serverless? • Occasional server needs on a static site • Variable traffic levels • Additional compute without extending current platform • Responding to web hooks Rob Allen ~  @akrabat

Slide 11

Slide 11

Serverless providers Rob Allen ~  @akrabat

Slide 12

Slide 12

OpenWhisk Rob Allen ~  @akrabat

Slide 13

Slide 13

OpenWhisk OpenSource; multiple providers: IBM RedHat Adobe (for Adobe Cloud Platform APIs) & , of course, self-hosted Rob Allen ~  @akrabat

Slide 14

Slide 14

Invoking an action Rob Allen ~  @akrabat

Slide 15

Slide 15

Serverless PHP Rob Allen ~  @akrabat

Slide 16

Slide 16

Hello world in PHP Rob Allen ~  @akrabat

Slide 17

Slide 17

Hello world in PHP Rob Allen ~  @akrabat

Slide 18

Slide 18

Running your action $ wsk action update hello hello.php ok: updated action hello $ wsk action invoke hello --result { "msg": "Hello World" } Rob Allen ~  @akrabat

Slide 19

Slide 19

Dependencies Zip them up $ zip -r hello.zip hello.php vendor $ wsk action update hello hello.zip --kind php:7.1 Rob Allen ~  @akrabat

Slide 20

Slide 20

Web access Add the  --web  flag: $ wsk action update hello hello.php --web true $ curl https://openwhisk.ng.bluemix.net/api/v1/web/
19FT_demo/default/hello.json Rob Allen ~  @akrabat

Slide 21

Slide 21

What to do in your action • Compute! • Store to database • Make API calls to other services • Store to cloud storage (S3) • Trigger other actions Rob Allen ~  @akrabat

Slide 22

Slide 22

Demo time! Rob Allen ~  @akrabat

Slide 23

Slide 23

To sum up Rob Allen ~  @akrabat

Slide 24

Slide 24

Resources • http://www.openwhisk.org • https://medium.com/openwhisk • https://github.com/akrabat/ow-php-ftime • https://www.martinfowler.com/articles/serverless.html Rob Allen ~  @akrabat

Slide 25

Slide 25

Questions? Rob Allen ~  @akrabat

Slide 26

Slide 26

Thank you! Rob Allen ~  @akrabat