Introduction to
Serverless PHP
Rob Allen
June 2018
Slide 2
Deployment options
1.
Physical servers
2.
Virtual machines
3.
Containers
Rob Allen ~ @akrabat
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
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
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
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
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
Challenges
•
Start up latency
•
Time limit
•
State is external
•
DevOps is still a thing
Rob Allen ~ @akrabat
Slide 9
It's about value
Rob Allen ~ @akrabat
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
Serverless providers
Rob Allen ~ @akrabat
Slide 12
OpenWhisk
Rob Allen ~ @akrabat
Slide 13
OpenWhisk
OpenSource; multiple providers:
IBM
RedHat
Adobe (for Adobe Cloud Platform APIs)
&
, of course, self-hosted
Rob Allen ~ @akrabat
Slide 14
Invoking an action
Rob Allen ~ @akrabat
Slide 15
Serverless PHP
Rob Allen ~ @akrabat
Slide 16
Hello world in PHP
Rob Allen ~ @akrabat
Slide 17
Hello world in PHP
Rob Allen ~ @akrabat
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
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
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
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
Demo time!
Rob Allen ~ @akrabat
Slide 23
To sum up
Rob Allen ~ @akrabat
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