SlideShare a Scribd company logo
1 of 62
Download to read offline
OpenWhisk
Under the Hood
Stephen Fink
What is OpenWhisk?
a cloud-native platform
for
short-running, stateless computation
and
event-driven applications
which
scales up and down instantly and automatically
and
charges for actual usage at a millisecond granularity
event
handlersevents
What is Serverless?
What is OpenWhisk?
an open Beta offering in IBM’s Bluemix cloud
What is OpenWhisk?
an open-source project on github
What is OpenWhisk?
a high-level serverless programming model
Trigger
Rule
Action
Package
What is OpenWhisk?
a high-level serverless programming model
Trigger
Rule
Action
Package
language support to
encapsulate, share, extend code
first-class
event-driven
programming
constructs
first-class functions
compose via sequences
docker
containers as
actions
all constructs first-class
— powerful extensible
language
What is OpenWhisk
under the hood?
http://fordmustanglover.blogspot.com/
• Basic Runtime
• Meta-programming
github.com
openwhisk/openwhisk
core
runtime
CLIpackages
security
features
persistent
store
loggingmonitoring billing
authentication
Edge
VMEdge
VM
Edge VM
Edge
VM
Edge
VM
Master VM
controller
Edge
VM
Edge
VM
Slave VM
invoker
• microservices deployed in docker containers
• open-source system middleware
• NoSQL (CouchDB) persistence
action
container
action
containeraction
container
action
containeraction
containeraction
container
action
containeraction
container
Why ?
Why ?
controller
invoker
Deploying and managing
traditional microservices
1
Slave VM
Why ?
Lightweight isolated execution environment
for arbitrary user code
action container
action container
action container
action container
action container
action container
action container
action container
2
Why ?
Portable description of arbitrary
binary user actions (Dockerfile)
Docker file
3
% wsk action invoke hello
in 8 easy steps
Step 1. Entering the system
Edge
VMEdge
VM
Edge VM
Edge
VM
Edge
VM
Master VM
controller
Why
POST /api/v1/namespaces/myNamespace/actions/myAction
?
• SSL termination
• Load Balancing
• Blue/Green continuous delivery
Master VM
controller
Step 2. Handle the request
Master VM
kafka
SDK
couchDB
SDK
spray
DSL
load
balancer
consul
SDK
data
models
authcaching
Why scala ?
Step 2. Handle the request
• original prototype node.js: abandoned and rewrote
• static typing
• makes refactoring much easier
• whole classes of bugs went away
• nice concurrency features (actors/futures)
• kafka libraries more stable on JVM
actors
controller
Step 3. Authentication + Authorization
scala
kafka
SDK
couchDB
SDK
spray
DSL
load
balancer
consul
SDK
data
models
authcaching
external
auth
• Cloudant: hosted CouchDB
• plug-in structure for custom
authentication module
actors
controller
Authorization: Basic QWxhZGRpbjpPcGVuU2VzYW1l
Step 4. Get the action
scala
kafka
SDK
couchDB
SDK
spray
DSL
load
balancer
consul
SDK
data
models
authcaching
• check resource limits
• actions stored as documents in CouchDB
• binaries as objects (attachments)
actors
controller
Step 5. Looking for a home
scala
kafka
SDK
couchDB
SDK
spray
DSL
load
balancer
consul
SDK
data
models
authcaching
controller
Load balancer: find a slave to execute
Slave health, load stored in consul
• Sequentially consistent KV store
• Replication, Fault Tolerance
• Health Check / Monitoring utilities
Why ?
actors
Step 6. Get in line!
scala
kafka
SDK
couchDB
SDK
spray
DSL
load
balancer
consul
SDK
data
models
authcaching
invoker
Why ?
• High throughput fault-tolerant queues
• Point-to-point messages via topics
• explicit load balancing
Post request to execute to queue in
actors
Master VM
Master VM Slave VM
controller
Slave VM
invoker
Step7. Get to Work!
Slave VM
Step 7. Get to work!
scala
kafka
SDK
couchDB
SDK
docker
utilities
container
pool
consul
SDK
data
models
caching
invoker
bound to
user action
• each user action gets it own container (isolation)
• containers may be reused
• container pool allocates and garbage collects containers
stem cell
actors
User action containers
invoker
container
pool
cold start stem cell
container
docker
run
HTTP
POST
/init
HTTP
POST
/run
warm
container
Step 8. Store the results.
scala
kafka
SDK
couchDB
SDK
docker
utilities
container
pool
consul
SDK
data
models
caching
invoker
action
container
HTTPResponse
logs on filesystem
actors
median ~45 ms latency end-to-end
(unloaded system, hello world)
Implementing feeds
Trigger
Action
Action
Action
custom feed example
push, fork, comment, ..
using OpenWhisk feeds
wsk package bind /whisk.system/github myGit --param username
myGitUser --param repository myGitRepo --param accessToken
aaaaa1111a1a1a1a1a111111aaaaaa1111aa1a1a
1 Bind a Package with your credentials (parameters)
using OpenWhisk feeds
wsk package bind /whisk.system/github myGit --param username
myGitUser --param repository myGitRepo --param accessToken
aaaaa1111a1a1a1a1a111111aaaaaa1111aa1a1a
wsk trigger create myGitTrigger --feed myGit/webhook --param
events push
1 Bind a Package with your credentials (parameters)
2 Create a Trigger (instantiate a stream of events)
using OpenWhisk feeds
wsk package bind /whisk.system/github myGit --param username
myGitUser --param repository myGitRepo --param accessToken
aaaaa1111a1a1a1a1a111111aaaaaa1111aa1a1a
wsk trigger create myGitTrigger --feed myGit/webhook --param
events push
wsk rule create R myGitTrigger myAction
1 Bind a Package with your credentials (parameters)
2 Create a Trigger (instantiate a stream of events)
3 Create a Rule (hook trigger to an action)
anybody can create a Package with a feed
/whisk.system/github /mynamespace/github
logical architecture of a github feed service
REST API
Create feed
POST /feeds
Read feed
GET /feeds/{id}
Update Feed
PUT /feeds/{id}
Delete feed
DELETE /feeds/{id}
wsk trigger create
what’s the easiest way to implement a service?
REST API
Create feed
POST /feeds
Read feed
GET /feeds/{id}
Update Feed
PUT /feeds/{id}
Delete feed
DELETE /feeds/{id}
what’s the easiest way to implement a service?
REST API
Create feed
POST /feeds
Read feed
GET /feeds/{id}
Update Feed
PUT /feeds/{id}
Delete feed
DELETE /feeds/{id}
logical architecture of a github feed service
serverless feed action
main(params) {
…
params.lifecycle ==
Create
Read
Update
Delete
}
wsk trigger create
feed action: an OpenWhisk action which
manages a feed
wsk trigger create myGitTrigger --feed myGit/webhook --param
events push
-> wsk action invoke myGit/webhook
--param events push
—-param lifecyleEvent ‘CREATE’
—-param triggerName myNamespace/myGitTrigger
—-param auth myAuthKey …
wsk package create myGitPackage
wsk action create myGitPackage/myFeedAction action.js
wsk package update myGitPackage --shared
Create your own package and share it
/yourNamespace/myGitPackage
More Meta-Programming
Building an OpenWhisk debugger in
OpenWhisk
T A B C
sequence
R
cloud
T A B C
sequence
R
cloud
debug> break on B
…
debug> inspect ..
developer
laptop
T A B C
sequence
R
cloud
debug> break on B
…
debug> inspect ..
developer
laptop
But how ?
• Serverless runtime is stateless, short-running
• debugging tools (Chrome, lldb, ..) are local
OpenWhisk Under the Hood -- London Oct 16 2016
Implementing a breakpoint
ld
push
store
add
jmp
sub
ld
push
debug:
push
…
ret
T A B C
R
% (wskdb) attach b
T A B C
R
% (wskdb) attach b
create jump action Bj% wsk action create Bj ..
T A B C
R
% (wskdb) attach b
create jump action Bj
Bccreate continue action
% wsk action create Bj ..
% wsk action create Bc ..
T A B C
R
% (wskdb) attach b
T A Bj
Rj
create jump action Bj
Bccreate continue action
create jump rule
% wsk action create Bj ..
% wsk action create Bc ..
% wsk rule create Rj A Bj
T A B C
R
% (wskdb) attach b
T A Bj
Rj
T2 Bc C
Rc
create jump action Bj
Bccreate continue action
create continue rule
create jump rule
% wsk action create Bj ..
% wsk action create Bc ..
% wsk rule create Rj A Bj
% wsk rule create Rc Bc C
T A B C
R
% (wskdb) attach b
T A Bj
Rj
T2 Bc C
Rc
create jump action Bj
Bccreate continue action
create continue rule
create jump rule
start up local debug broker
% wsk action create Bj ..
% wsk action create Bc ..
% wsk rule create Rj A Bj
% wsk rule create Rc Rc C
T A Bj
Rj
cloud
debugging
broker
(wskdb)
T2 Bc C
Rc
developer
laptop
T A Bj
Rj
cloud
debugging
broker
(wskdb)
T2 Bc C
Rc
developer
laptop
T A Bj
Rj
cloud
debugging
broker
(wskdb)
T2 Bc C
Rc
developer
laptop
T A Bj
Rj
cloud
debugging
broker
(wskdb)
T2 Bc C
Rc
developer
laptop
T A Bj
Rj
cloud
debugging
broker
(wskdb)
T2 Bc C
Rc
developer
laptop
All the debugger components are unprivileged user code
debugging
broker
(wskdb)
T A Bj
Rj
T2 Bc C
Rc
Bj Bc
Uses OpenWhisk introspection to examine and rewrite the user
code using actions, triggers, rules.
https://github.com/openwhisk/openwhisk-debugger
Future directions
What’s coming next?
What are you going to do next?
What are you going to do next?
Backup
Edge
VMEdge
VMEdge
VM
Edge
VMEdge
VMMaster
VM
Edge
VMEdge
VMSlave
VM
REST
client
CLI
UI
core runtime
foundation: virtual machines
(IaaS, vagrant, …)
Why virtual machines?
• direct access to host OS for some container functions
• OS support for security, networking, resource control
• infrastructure, stability, tools

More Related Content

What's hot

Serverless apps with OpenWhisk
Serverless apps with OpenWhiskServerless apps with OpenWhisk
Serverless apps with OpenWhiskDaniel Krook
 
Cloud Native Architectures with an Open Source, Event Driven, Serverless Plat...
Cloud Native Architectures with an Open Source, Event Driven, Serverless Plat...Cloud Native Architectures with an Open Source, Event Driven, Serverless Plat...
Cloud Native Architectures with an Open Source, Event Driven, Serverless Plat...Daniel Krook
 
IBM Bluemix OpenWhisk: Interconnect 2016, Las Vegas: CCD-1088: The Future of ...
IBM Bluemix OpenWhisk: Interconnect 2016, Las Vegas: CCD-1088: The Future of ...IBM Bluemix OpenWhisk: Interconnect 2016, Las Vegas: CCD-1088: The Future of ...
IBM Bluemix OpenWhisk: Interconnect 2016, Las Vegas: CCD-1088: The Future of ...OpenWhisk
 
IBM Bluemix OpenWhisk: Cloud Foundry Summit 2016, Frankfurt, Germany: The Fut...
IBM Bluemix OpenWhisk: Cloud Foundry Summit 2016, Frankfurt, Germany: The Fut...IBM Bluemix OpenWhisk: Cloud Foundry Summit 2016, Frankfurt, Germany: The Fut...
IBM Bluemix OpenWhisk: Cloud Foundry Summit 2016, Frankfurt, Germany: The Fut...OpenWhisk
 
Taking the Next Hot Mobile Game Live with Docker and IBM SoftLayer
Taking the Next Hot Mobile Game Live with Docker and IBM SoftLayerTaking the Next Hot Mobile Game Live with Docker and IBM SoftLayer
Taking the Next Hot Mobile Game Live with Docker and IBM SoftLayerDaniel Krook
 
Build a cloud native app with OpenWhisk
Build a cloud native app with OpenWhiskBuild a cloud native app with OpenWhisk
Build a cloud native app with OpenWhiskDaniel Krook
 
Serverless in production (O'Reilly Software Architecture)
Serverless in production (O'Reilly Software Architecture)Serverless in production (O'Reilly Software Architecture)
Serverless in production (O'Reilly Software Architecture)Yan Cui
 
2015 03-11_todd-fritz_devnexus_2015
2015 03-11_todd-fritz_devnexus_20152015 03-11_todd-fritz_devnexus_2015
2015 03-11_todd-fritz_devnexus_2015Todd Fritz
 
Building serverless applications with Apache OpenWhisk and IBM Cloud Functions
Building serverless applications with Apache OpenWhisk and IBM Cloud FunctionsBuilding serverless applications with Apache OpenWhisk and IBM Cloud Functions
Building serverless applications with Apache OpenWhisk and IBM Cloud FunctionsDaniel Krook
 
Containers vs serverless - Navigating application deployment options
Containers vs serverless - Navigating application deployment optionsContainers vs serverless - Navigating application deployment options
Containers vs serverless - Navigating application deployment optionsDaniel Krook
 
IBM Bluemix OpenWhisk: Serverless Conference 2017, Austin, USA: Keynote
IBM Bluemix OpenWhisk: Serverless Conference 2017, Austin, USA: KeynoteIBM Bluemix OpenWhisk: Serverless Conference 2017, Austin, USA: Keynote
IBM Bluemix OpenWhisk: Serverless Conference 2017, Austin, USA: KeynoteOpenWhisk
 
IBM Bluemix OpenWhisk: IBM InterConnect 2017, Las Vegas, USA: Technical Strategy
IBM Bluemix OpenWhisk: IBM InterConnect 2017, Las Vegas, USA: Technical StrategyIBM Bluemix OpenWhisk: IBM InterConnect 2017, Las Vegas, USA: Technical Strategy
IBM Bluemix OpenWhisk: IBM InterConnect 2017, Las Vegas, USA: Technical StrategyOpenWhisk
 
IBM Bluemix OpenWhisk: Serverless Conference 2017, Austin, USA: The journey c...
IBM Bluemix OpenWhisk: Serverless Conference 2017, Austin, USA: The journey c...IBM Bluemix OpenWhisk: Serverless Conference 2017, Austin, USA: The journey c...
IBM Bluemix OpenWhisk: Serverless Conference 2017, Austin, USA: The journey c...OpenWhisk
 
Serverless APIs with Apache OpenWhisk
Serverless APIs with Apache OpenWhiskServerless APIs with Apache OpenWhisk
Serverless APIs with Apache OpenWhiskDaniel Krook
 
Learning the Alphabet: A/B, CD and [E-Z] in the Docker Datacenter by Brett Ti...
Learning the Alphabet: A/B, CD and [E-Z] in the Docker Datacenter by Brett Ti...Learning the Alphabet: A/B, CD and [E-Z] in the Docker Datacenter by Brett Ti...
Learning the Alphabet: A/B, CD and [E-Z] in the Docker Datacenter by Brett Ti...Docker, Inc.
 
Mihai Criveti - PyCon Ireland - Automate Everything
Mihai Criveti - PyCon Ireland - Automate EverythingMihai Criveti - PyCon Ireland - Automate Everything
Mihai Criveti - PyCon Ireland - Automate EverythingMihai Criveti
 
Overseeing Ship's Surveys and Surveyors Globally Using IoT and Docker by Jay ...
Overseeing Ship's Surveys and Surveyors Globally Using IoT and Docker by Jay ...Overseeing Ship's Surveys and Surveyors Globally Using IoT and Docker by Jay ...
Overseeing Ship's Surveys and Surveyors Globally Using IoT and Docker by Jay ...Docker, Inc.
 
Serverless architectures built on an open source platform
Serverless architectures built on an open source platformServerless architectures built on an open source platform
Serverless architectures built on an open source platformDaniel Krook
 
ADDO 2020: "The past, present, and future of cloud native API gateways"
ADDO 2020: "The past, present, and future of cloud native API gateways"ADDO 2020: "The past, present, and future of cloud native API gateways"
ADDO 2020: "The past, present, and future of cloud native API gateways"Daniel Bryant
 

What's hot (19)

Serverless apps with OpenWhisk
Serverless apps with OpenWhiskServerless apps with OpenWhisk
Serverless apps with OpenWhisk
 
Cloud Native Architectures with an Open Source, Event Driven, Serverless Plat...
Cloud Native Architectures with an Open Source, Event Driven, Serverless Plat...Cloud Native Architectures with an Open Source, Event Driven, Serverless Plat...
Cloud Native Architectures with an Open Source, Event Driven, Serverless Plat...
 
IBM Bluemix OpenWhisk: Interconnect 2016, Las Vegas: CCD-1088: The Future of ...
IBM Bluemix OpenWhisk: Interconnect 2016, Las Vegas: CCD-1088: The Future of ...IBM Bluemix OpenWhisk: Interconnect 2016, Las Vegas: CCD-1088: The Future of ...
IBM Bluemix OpenWhisk: Interconnect 2016, Las Vegas: CCD-1088: The Future of ...
 
IBM Bluemix OpenWhisk: Cloud Foundry Summit 2016, Frankfurt, Germany: The Fut...
IBM Bluemix OpenWhisk: Cloud Foundry Summit 2016, Frankfurt, Germany: The Fut...IBM Bluemix OpenWhisk: Cloud Foundry Summit 2016, Frankfurt, Germany: The Fut...
IBM Bluemix OpenWhisk: Cloud Foundry Summit 2016, Frankfurt, Germany: The Fut...
 
Taking the Next Hot Mobile Game Live with Docker and IBM SoftLayer
Taking the Next Hot Mobile Game Live with Docker and IBM SoftLayerTaking the Next Hot Mobile Game Live with Docker and IBM SoftLayer
Taking the Next Hot Mobile Game Live with Docker and IBM SoftLayer
 
Build a cloud native app with OpenWhisk
Build a cloud native app with OpenWhiskBuild a cloud native app with OpenWhisk
Build a cloud native app with OpenWhisk
 
Serverless in production (O'Reilly Software Architecture)
Serverless in production (O'Reilly Software Architecture)Serverless in production (O'Reilly Software Architecture)
Serverless in production (O'Reilly Software Architecture)
 
2015 03-11_todd-fritz_devnexus_2015
2015 03-11_todd-fritz_devnexus_20152015 03-11_todd-fritz_devnexus_2015
2015 03-11_todd-fritz_devnexus_2015
 
Building serverless applications with Apache OpenWhisk and IBM Cloud Functions
Building serverless applications with Apache OpenWhisk and IBM Cloud FunctionsBuilding serverless applications with Apache OpenWhisk and IBM Cloud Functions
Building serverless applications with Apache OpenWhisk and IBM Cloud Functions
 
Containers vs serverless - Navigating application deployment options
Containers vs serverless - Navigating application deployment optionsContainers vs serverless - Navigating application deployment options
Containers vs serverless - Navigating application deployment options
 
IBM Bluemix OpenWhisk: Serverless Conference 2017, Austin, USA: Keynote
IBM Bluemix OpenWhisk: Serverless Conference 2017, Austin, USA: KeynoteIBM Bluemix OpenWhisk: Serverless Conference 2017, Austin, USA: Keynote
IBM Bluemix OpenWhisk: Serverless Conference 2017, Austin, USA: Keynote
 
IBM Bluemix OpenWhisk: IBM InterConnect 2017, Las Vegas, USA: Technical Strategy
IBM Bluemix OpenWhisk: IBM InterConnect 2017, Las Vegas, USA: Technical StrategyIBM Bluemix OpenWhisk: IBM InterConnect 2017, Las Vegas, USA: Technical Strategy
IBM Bluemix OpenWhisk: IBM InterConnect 2017, Las Vegas, USA: Technical Strategy
 
IBM Bluemix OpenWhisk: Serverless Conference 2017, Austin, USA: The journey c...
IBM Bluemix OpenWhisk: Serverless Conference 2017, Austin, USA: The journey c...IBM Bluemix OpenWhisk: Serverless Conference 2017, Austin, USA: The journey c...
IBM Bluemix OpenWhisk: Serverless Conference 2017, Austin, USA: The journey c...
 
Serverless APIs with Apache OpenWhisk
Serverless APIs with Apache OpenWhiskServerless APIs with Apache OpenWhisk
Serverless APIs with Apache OpenWhisk
 
Learning the Alphabet: A/B, CD and [E-Z] in the Docker Datacenter by Brett Ti...
Learning the Alphabet: A/B, CD and [E-Z] in the Docker Datacenter by Brett Ti...Learning the Alphabet: A/B, CD and [E-Z] in the Docker Datacenter by Brett Ti...
Learning the Alphabet: A/B, CD and [E-Z] in the Docker Datacenter by Brett Ti...
 
Mihai Criveti - PyCon Ireland - Automate Everything
Mihai Criveti - PyCon Ireland - Automate EverythingMihai Criveti - PyCon Ireland - Automate Everything
Mihai Criveti - PyCon Ireland - Automate Everything
 
Overseeing Ship's Surveys and Surveyors Globally Using IoT and Docker by Jay ...
Overseeing Ship's Surveys and Surveyors Globally Using IoT and Docker by Jay ...Overseeing Ship's Surveys and Surveyors Globally Using IoT and Docker by Jay ...
Overseeing Ship's Surveys and Surveyors Globally Using IoT and Docker by Jay ...
 
Serverless architectures built on an open source platform
Serverless architectures built on an open source platformServerless architectures built on an open source platform
Serverless architectures built on an open source platform
 
ADDO 2020: "The past, present, and future of cloud native API gateways"
ADDO 2020: "The past, present, and future of cloud native API gateways"ADDO 2020: "The past, present, and future of cloud native API gateways"
ADDO 2020: "The past, present, and future of cloud native API gateways"
 

Viewers also liked

ContainerDays NYC 2016: "OpenWhisk: A Serverless Computing Platform" (Rodric ...
ContainerDays NYC 2016: "OpenWhisk: A Serverless Computing Platform" (Rodric ...ContainerDays NYC 2016: "OpenWhisk: A Serverless Computing Platform" (Rodric ...
ContainerDays NYC 2016: "OpenWhisk: A Serverless Computing Platform" (Rodric ...DynamicInfraDays
 
How to build a Distributed Serverless Polyglot Microservices IoT Platform us...
How to build a Distributed Serverless Polyglot Microservices IoT Platform us...How to build a Distributed Serverless Polyglot Microservices IoT Platform us...
How to build a Distributed Serverless Polyglot Microservices IoT Platform us...Animesh Singh
 
ServerlessPresentation
ServerlessPresentationServerlessPresentation
ServerlessPresentationRohit Kumar
 
Combining OpenWhisk (serverless), Open API (swagger) and API Connect to build...
Combining OpenWhisk (serverless), Open API (swagger) and API Connect to build...Combining OpenWhisk (serverless), Open API (swagger) and API Connect to build...
Combining OpenWhisk (serverless), Open API (swagger) and API Connect to build...Joe Sepi
 
Openstack taskflow 簡介
Openstack taskflow 簡介Openstack taskflow 簡介
Openstack taskflow 簡介kao kuo-tung
 
Architecture of a Kafka camus infrastructure
Architecture of a Kafka camus infrastructureArchitecture of a Kafka camus infrastructure
Architecture of a Kafka camus infrastructuremattlieber
 
Open stack ocata summit enabling aws lambda-like functionality with openstac...
Open stack ocata summit  enabling aws lambda-like functionality with openstac...Open stack ocata summit  enabling aws lambda-like functionality with openstac...
Open stack ocata summit enabling aws lambda-like functionality with openstac...Shaun Murakami
 
How to build an event-driven, polyglot serverless microservices framework on ...
How to build an event-driven, polyglot serverless microservices framework on ...How to build an event-driven, polyglot serverless microservices framework on ...
How to build an event-driven, polyglot serverless microservices framework on ...Animesh Singh
 
BEEVA | Introducción a Docker
BEEVA | Introducción a DockerBEEVA | Introducción a Docker
BEEVA | Introducción a DockerBEEVA_es
 
AWS Lambda from the Trenches
AWS Lambda from the TrenchesAWS Lambda from the Trenches
AWS Lambda from the TrenchesYan Cui
 
Announcing Amazon Athena - Instantly Analyze Your Data in S3 Using SQL
Announcing Amazon Athena - Instantly Analyze Your Data in S3 Using SQLAnnouncing Amazon Athena - Instantly Analyze Your Data in S3 Using SQL
Announcing Amazon Athena - Instantly Analyze Your Data in S3 Using SQLAmazon Web Services
 
Building Serverless APIs on AWS
Building Serverless APIs on AWSBuilding Serverless APIs on AWS
Building Serverless APIs on AWSJulien SIMON
 
Build reactive systems on lambda
Build reactive systems on lambdaBuild reactive systems on lambda
Build reactive systems on lambdaYan Cui
 
JustGiving – Serverless Data Pipelines, API, Messaging and Stream Processing
JustGiving – Serverless Data Pipelines,  API, Messaging and Stream ProcessingJustGiving – Serverless Data Pipelines,  API, Messaging and Stream Processing
JustGiving – Serverless Data Pipelines, API, Messaging and Stream ProcessingLuis Gonzalez
 
Building Serverless APIs (January 2017)
Building Serverless APIs (January 2017)Building Serverless APIs (January 2017)
Building Serverless APIs (January 2017)Julien SIMON
 

Viewers also liked (20)

ContainerDays NYC 2016: "OpenWhisk: A Serverless Computing Platform" (Rodric ...
ContainerDays NYC 2016: "OpenWhisk: A Serverless Computing Platform" (Rodric ...ContainerDays NYC 2016: "OpenWhisk: A Serverless Computing Platform" (Rodric ...
ContainerDays NYC 2016: "OpenWhisk: A Serverless Computing Platform" (Rodric ...
 
IBM Bluemix Openwhisk
IBM Bluemix OpenwhiskIBM Bluemix Openwhisk
IBM Bluemix Openwhisk
 
How to build a Distributed Serverless Polyglot Microservices IoT Platform us...
How to build a Distributed Serverless Polyglot Microservices IoT Platform us...How to build a Distributed Serverless Polyglot Microservices IoT Platform us...
How to build a Distributed Serverless Polyglot Microservices IoT Platform us...
 
ServerlessPresentation
ServerlessPresentationServerlessPresentation
ServerlessPresentation
 
Combining OpenWhisk (serverless), Open API (swagger) and API Connect to build...
Combining OpenWhisk (serverless), Open API (swagger) and API Connect to build...Combining OpenWhisk (serverless), Open API (swagger) and API Connect to build...
Combining OpenWhisk (serverless), Open API (swagger) and API Connect to build...
 
Openstack taskflow 簡介
Openstack taskflow 簡介Openstack taskflow 簡介
Openstack taskflow 簡介
 
Task flow
Task flowTask flow
Task flow
 
Apache kafka big data track
Apache kafka   big data trackApache kafka   big data track
Apache kafka big data track
 
Serverless Realtime Backup
Serverless Realtime BackupServerless Realtime Backup
Serverless Realtime Backup
 
[AWSKRUG&JAWS-UG Meetup #1] Serverless Real-Time Analysis
[AWSKRUG&JAWS-UG Meetup #1]  Serverless  Real-Time Analysis[AWSKRUG&JAWS-UG Meetup #1]  Serverless  Real-Time Analysis
[AWSKRUG&JAWS-UG Meetup #1] Serverless Real-Time Analysis
 
Architecture of a Kafka camus infrastructure
Architecture of a Kafka camus infrastructureArchitecture of a Kafka camus infrastructure
Architecture of a Kafka camus infrastructure
 
Open stack ocata summit enabling aws lambda-like functionality with openstac...
Open stack ocata summit  enabling aws lambda-like functionality with openstac...Open stack ocata summit  enabling aws lambda-like functionality with openstac...
Open stack ocata summit enabling aws lambda-like functionality with openstac...
 
How to build an event-driven, polyglot serverless microservices framework on ...
How to build an event-driven, polyglot serverless microservices framework on ...How to build an event-driven, polyglot serverless microservices framework on ...
How to build an event-driven, polyglot serverless microservices framework on ...
 
BEEVA | Introducción a Docker
BEEVA | Introducción a DockerBEEVA | Introducción a Docker
BEEVA | Introducción a Docker
 
AWS Lambda from the Trenches
AWS Lambda from the TrenchesAWS Lambda from the Trenches
AWS Lambda from the Trenches
 
Announcing Amazon Athena - Instantly Analyze Your Data in S3 Using SQL
Announcing Amazon Athena - Instantly Analyze Your Data in S3 Using SQLAnnouncing Amazon Athena - Instantly Analyze Your Data in S3 Using SQL
Announcing Amazon Athena - Instantly Analyze Your Data in S3 Using SQL
 
Building Serverless APIs on AWS
Building Serverless APIs on AWSBuilding Serverless APIs on AWS
Building Serverless APIs on AWS
 
Build reactive systems on lambda
Build reactive systems on lambdaBuild reactive systems on lambda
Build reactive systems on lambda
 
JustGiving – Serverless Data Pipelines, API, Messaging and Stream Processing
JustGiving – Serverless Data Pipelines,  API, Messaging and Stream ProcessingJustGiving – Serverless Data Pipelines,  API, Messaging and Stream Processing
JustGiving – Serverless Data Pipelines, API, Messaging and Stream Processing
 
Building Serverless APIs (January 2017)
Building Serverless APIs (January 2017)Building Serverless APIs (January 2017)
Building Serverless APIs (January 2017)
 

Similar to OpenWhisk Under the Hood -- London Oct 16 2016

Containerizing your Security Operations Center
Containerizing your Security Operations CenterContainerizing your Security Operations Center
Containerizing your Security Operations CenterJimmy Mesta
 
Being serverless and Swift... Is that allowed?
Being serverless and Swift... Is that allowed? Being serverless and Swift... Is that allowed?
Being serverless and Swift... Is that allowed? Dev_Events
 
FrenchKit 2017: Server(less) Swift
FrenchKit 2017: Server(less) SwiftFrenchKit 2017: Server(less) Swift
FrenchKit 2017: Server(less) SwiftChris Bailey
 
Apache OpenWhisk Serverless Computing
Apache OpenWhisk Serverless ComputingApache OpenWhisk Serverless Computing
Apache OpenWhisk Serverless ComputingUpkar Lidder
 
Server(less) Swift at SwiftCloudWorkshop 3
Server(less) Swift at SwiftCloudWorkshop 3Server(less) Swift at SwiftCloudWorkshop 3
Server(less) Swift at SwiftCloudWorkshop 3kognate
 
Building Mobile Friendly APIs in Rails
Building Mobile Friendly APIs in RailsBuilding Mobile Friendly APIs in Rails
Building Mobile Friendly APIs in RailsJim Jeffers
 
Build pipelines with TeamCity and Kotlin DSL
Build pipelines with TeamCity and Kotlin DSLBuild pipelines with TeamCity and Kotlin DSL
Build pipelines with TeamCity and Kotlin DSLAnton Arhipov
 
Building event-driven (Micro)Services with Apache Kafka Ecosystem
Building event-driven (Micro)Services with Apache Kafka EcosystemBuilding event-driven (Micro)Services with Apache Kafka Ecosystem
Building event-driven (Micro)Services with Apache Kafka EcosystemGuido Schmutz
 
Running Microservices on AWS Elastic Beanstalk
Running Microservices on AWS Elastic BeanstalkRunning Microservices on AWS Elastic Beanstalk
Running Microservices on AWS Elastic BeanstalkAmazon Web Services
 
Application Lifecycle Management in a Serverless World
Application Lifecycle Management in a Serverless WorldApplication Lifecycle Management in a Serverless World
Application Lifecycle Management in a Serverless WorldAmazon Web Services
 
Continuous Delivery, Continuous Integration
Continuous Delivery, Continuous Integration Continuous Delivery, Continuous Integration
Continuous Delivery, Continuous Integration Amazon Web Services
 
Running Microservices and Docker on AWS Elastic Beanstalk - August 2016 Month...
Running Microservices and Docker on AWS Elastic Beanstalk - August 2016 Month...Running Microservices and Docker on AWS Elastic Beanstalk - August 2016 Month...
Running Microservices and Docker on AWS Elastic Beanstalk - August 2016 Month...Amazon Web Services
 
Aws Lambda in Swift - NSLondon - 3rd December 2020
Aws Lambda in Swift - NSLondon - 3rd December 2020Aws Lambda in Swift - NSLondon - 3rd December 2020
Aws Lambda in Swift - NSLondon - 3rd December 2020Andrea Scuderi
 
Microsoft Windows Server AppFabric
Microsoft Windows Server AppFabricMicrosoft Windows Server AppFabric
Microsoft Windows Server AppFabricMark Ginnebaugh
 
DevOPS training - Day 2/2
DevOPS training - Day 2/2DevOPS training - Day 2/2
DevOPS training - Day 2/2Vincent Mercier
 
Release with confidence
Release with confidenceRelease with confidence
Release with confidenceJohn Congdon
 
Docker presentasjon java bin
Docker presentasjon java binDocker presentasjon java bin
Docker presentasjon java binOlve Hansen
 
Puppet Camp Melbourne Nov 2014 - A Build Engineering Team’s Journey of Infras...
Puppet Camp Melbourne Nov 2014 - A Build Engineering Team’s Journey of Infras...Puppet Camp Melbourne Nov 2014 - A Build Engineering Team’s Journey of Infras...
Puppet Camp Melbourne Nov 2014 - A Build Engineering Team’s Journey of Infras...Peter Leschev
 
Camel on Cloud by Christina Lin
Camel on Cloud by Christina LinCamel on Cloud by Christina Lin
Camel on Cloud by Christina LinTadayoshi Sato
 

Similar to OpenWhisk Under the Hood -- London Oct 16 2016 (20)

AWS Code Services
AWS Code ServicesAWS Code Services
AWS Code Services
 
Containerizing your Security Operations Center
Containerizing your Security Operations CenterContainerizing your Security Operations Center
Containerizing your Security Operations Center
 
Being serverless and Swift... Is that allowed?
Being serverless and Swift... Is that allowed? Being serverless and Swift... Is that allowed?
Being serverless and Swift... Is that allowed?
 
FrenchKit 2017: Server(less) Swift
FrenchKit 2017: Server(less) SwiftFrenchKit 2017: Server(less) Swift
FrenchKit 2017: Server(less) Swift
 
Apache OpenWhisk Serverless Computing
Apache OpenWhisk Serverless ComputingApache OpenWhisk Serverless Computing
Apache OpenWhisk Serverless Computing
 
Server(less) Swift at SwiftCloudWorkshop 3
Server(less) Swift at SwiftCloudWorkshop 3Server(less) Swift at SwiftCloudWorkshop 3
Server(less) Swift at SwiftCloudWorkshop 3
 
Building Mobile Friendly APIs in Rails
Building Mobile Friendly APIs in RailsBuilding Mobile Friendly APIs in Rails
Building Mobile Friendly APIs in Rails
 
Build pipelines with TeamCity and Kotlin DSL
Build pipelines with TeamCity and Kotlin DSLBuild pipelines with TeamCity and Kotlin DSL
Build pipelines with TeamCity and Kotlin DSL
 
Building event-driven (Micro)Services with Apache Kafka Ecosystem
Building event-driven (Micro)Services with Apache Kafka EcosystemBuilding event-driven (Micro)Services with Apache Kafka Ecosystem
Building event-driven (Micro)Services with Apache Kafka Ecosystem
 
Running Microservices on AWS Elastic Beanstalk
Running Microservices on AWS Elastic BeanstalkRunning Microservices on AWS Elastic Beanstalk
Running Microservices on AWS Elastic Beanstalk
 
Application Lifecycle Management in a Serverless World
Application Lifecycle Management in a Serverless WorldApplication Lifecycle Management in a Serverless World
Application Lifecycle Management in a Serverless World
 
Continuous Delivery, Continuous Integration
Continuous Delivery, Continuous Integration Continuous Delivery, Continuous Integration
Continuous Delivery, Continuous Integration
 
Running Microservices and Docker on AWS Elastic Beanstalk - August 2016 Month...
Running Microservices and Docker on AWS Elastic Beanstalk - August 2016 Month...Running Microservices and Docker on AWS Elastic Beanstalk - August 2016 Month...
Running Microservices and Docker on AWS Elastic Beanstalk - August 2016 Month...
 
Aws Lambda in Swift - NSLondon - 3rd December 2020
Aws Lambda in Swift - NSLondon - 3rd December 2020Aws Lambda in Swift - NSLondon - 3rd December 2020
Aws Lambda in Swift - NSLondon - 3rd December 2020
 
Microsoft Windows Server AppFabric
Microsoft Windows Server AppFabricMicrosoft Windows Server AppFabric
Microsoft Windows Server AppFabric
 
DevOPS training - Day 2/2
DevOPS training - Day 2/2DevOPS training - Day 2/2
DevOPS training - Day 2/2
 
Release with confidence
Release with confidenceRelease with confidence
Release with confidence
 
Docker presentasjon java bin
Docker presentasjon java binDocker presentasjon java bin
Docker presentasjon java bin
 
Puppet Camp Melbourne Nov 2014 - A Build Engineering Team’s Journey of Infras...
Puppet Camp Melbourne Nov 2014 - A Build Engineering Team’s Journey of Infras...Puppet Camp Melbourne Nov 2014 - A Build Engineering Team’s Journey of Infras...
Puppet Camp Melbourne Nov 2014 - A Build Engineering Team’s Journey of Infras...
 
Camel on Cloud by Christina Lin
Camel on Cloud by Christina LinCamel on Cloud by Christina Lin
Camel on Cloud by Christina Lin
 

Recently uploaded

AI Fame Rush Review – Virtual Influencer Creation In Just Minutes
AI Fame Rush Review – Virtual Influencer Creation In Just MinutesAI Fame Rush Review – Virtual Influencer Creation In Just Minutes
AI Fame Rush Review – Virtual Influencer Creation In Just MinutesMd Hossain Ali
 
UiPath Platform: The Backend Engine Powering Your Automation - Session 1
UiPath Platform: The Backend Engine Powering Your Automation - Session 1UiPath Platform: The Backend Engine Powering Your Automation - Session 1
UiPath Platform: The Backend Engine Powering Your Automation - Session 1DianaGray10
 
Computer 10: Lesson 10 - Online Crimes and Hazards
Computer 10: Lesson 10 - Online Crimes and HazardsComputer 10: Lesson 10 - Online Crimes and Hazards
Computer 10: Lesson 10 - Online Crimes and HazardsSeth Reyes
 
UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8DianaGray10
 
Linked Data in Production: Moving Beyond Ontologies
Linked Data in Production: Moving Beyond OntologiesLinked Data in Production: Moving Beyond Ontologies
Linked Data in Production: Moving Beyond OntologiesDavid Newbury
 
Empowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership BlueprintEmpowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership BlueprintMahmoud Rabie
 
AI You Can Trust - Ensuring Success with Data Integrity Webinar
AI You Can Trust - Ensuring Success with Data Integrity WebinarAI You Can Trust - Ensuring Success with Data Integrity Webinar
AI You Can Trust - Ensuring Success with Data Integrity WebinarPrecisely
 
Secure your environment with UiPath and CyberArk technologies - Session 1
Secure your environment with UiPath and CyberArk technologies - Session 1Secure your environment with UiPath and CyberArk technologies - Session 1
Secure your environment with UiPath and CyberArk technologies - Session 1DianaGray10
 
How Accurate are Carbon Emissions Projections?
How Accurate are Carbon Emissions Projections?How Accurate are Carbon Emissions Projections?
How Accurate are Carbon Emissions Projections?IES VE
 
NIST Cybersecurity Framework (CSF) 2.0 Workshop
NIST Cybersecurity Framework (CSF) 2.0 WorkshopNIST Cybersecurity Framework (CSF) 2.0 Workshop
NIST Cybersecurity Framework (CSF) 2.0 WorkshopBachir Benyammi
 
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdf
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdfIaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdf
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdfDaniel Santiago Silva Capera
 
VoIP Service and Marketing using Odoo and Asterisk PBX
VoIP Service and Marketing using Odoo and Asterisk PBXVoIP Service and Marketing using Odoo and Asterisk PBX
VoIP Service and Marketing using Odoo and Asterisk PBXTarek Kalaji
 
Building Your Own AI Instance (TBLC AI )
Building Your Own AI Instance (TBLC AI )Building Your Own AI Instance (TBLC AI )
Building Your Own AI Instance (TBLC AI )Brian Pichman
 
Igniting Next Level Productivity with AI-Infused Data Integration Workflows
Igniting Next Level Productivity with AI-Infused Data Integration WorkflowsIgniting Next Level Productivity with AI-Infused Data Integration Workflows
Igniting Next Level Productivity with AI-Infused Data Integration WorkflowsSafe Software
 
COMPUTER 10 Lesson 8 - Building a Website
COMPUTER 10 Lesson 8 - Building a WebsiteCOMPUTER 10 Lesson 8 - Building a Website
COMPUTER 10 Lesson 8 - Building a Websitedgelyza
 
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPA
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPAAnypoint Code Builder , Google Pub sub connector and MuleSoft RPA
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPAshyamraj55
 
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...Will Schroeder
 
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019IES VE
 
UiPath Community: AI for UiPath Automation Developers
UiPath Community: AI for UiPath Automation DevelopersUiPath Community: AI for UiPath Automation Developers
UiPath Community: AI for UiPath Automation DevelopersUiPathCommunity
 
Designing A Time bound resource download URL
Designing A Time bound resource download URLDesigning A Time bound resource download URL
Designing A Time bound resource download URLRuncy Oommen
 

Recently uploaded (20)

AI Fame Rush Review – Virtual Influencer Creation In Just Minutes
AI Fame Rush Review – Virtual Influencer Creation In Just MinutesAI Fame Rush Review – Virtual Influencer Creation In Just Minutes
AI Fame Rush Review – Virtual Influencer Creation In Just Minutes
 
UiPath Platform: The Backend Engine Powering Your Automation - Session 1
UiPath Platform: The Backend Engine Powering Your Automation - Session 1UiPath Platform: The Backend Engine Powering Your Automation - Session 1
UiPath Platform: The Backend Engine Powering Your Automation - Session 1
 
Computer 10: Lesson 10 - Online Crimes and Hazards
Computer 10: Lesson 10 - Online Crimes and HazardsComputer 10: Lesson 10 - Online Crimes and Hazards
Computer 10: Lesson 10 - Online Crimes and Hazards
 
UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8
 
Linked Data in Production: Moving Beyond Ontologies
Linked Data in Production: Moving Beyond OntologiesLinked Data in Production: Moving Beyond Ontologies
Linked Data in Production: Moving Beyond Ontologies
 
Empowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership BlueprintEmpowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership Blueprint
 
AI You Can Trust - Ensuring Success with Data Integrity Webinar
AI You Can Trust - Ensuring Success with Data Integrity WebinarAI You Can Trust - Ensuring Success with Data Integrity Webinar
AI You Can Trust - Ensuring Success with Data Integrity Webinar
 
Secure your environment with UiPath and CyberArk technologies - Session 1
Secure your environment with UiPath and CyberArk technologies - Session 1Secure your environment with UiPath and CyberArk technologies - Session 1
Secure your environment with UiPath and CyberArk technologies - Session 1
 
How Accurate are Carbon Emissions Projections?
How Accurate are Carbon Emissions Projections?How Accurate are Carbon Emissions Projections?
How Accurate are Carbon Emissions Projections?
 
NIST Cybersecurity Framework (CSF) 2.0 Workshop
NIST Cybersecurity Framework (CSF) 2.0 WorkshopNIST Cybersecurity Framework (CSF) 2.0 Workshop
NIST Cybersecurity Framework (CSF) 2.0 Workshop
 
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdf
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdfIaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdf
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdf
 
VoIP Service and Marketing using Odoo and Asterisk PBX
VoIP Service and Marketing using Odoo and Asterisk PBXVoIP Service and Marketing using Odoo and Asterisk PBX
VoIP Service and Marketing using Odoo and Asterisk PBX
 
Building Your Own AI Instance (TBLC AI )
Building Your Own AI Instance (TBLC AI )Building Your Own AI Instance (TBLC AI )
Building Your Own AI Instance (TBLC AI )
 
Igniting Next Level Productivity with AI-Infused Data Integration Workflows
Igniting Next Level Productivity with AI-Infused Data Integration WorkflowsIgniting Next Level Productivity with AI-Infused Data Integration Workflows
Igniting Next Level Productivity with AI-Infused Data Integration Workflows
 
COMPUTER 10 Lesson 8 - Building a Website
COMPUTER 10 Lesson 8 - Building a WebsiteCOMPUTER 10 Lesson 8 - Building a Website
COMPUTER 10 Lesson 8 - Building a Website
 
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPA
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPAAnypoint Code Builder , Google Pub sub connector and MuleSoft RPA
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPA
 
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
 
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
 
UiPath Community: AI for UiPath Automation Developers
UiPath Community: AI for UiPath Automation DevelopersUiPath Community: AI for UiPath Automation Developers
UiPath Community: AI for UiPath Automation Developers
 
Designing A Time bound resource download URL
Designing A Time bound resource download URLDesigning A Time bound resource download URL
Designing A Time bound resource download URL
 

OpenWhisk Under the Hood -- London Oct 16 2016

  • 3. a cloud-native platform for short-running, stateless computation and event-driven applications which scales up and down instantly and automatically and charges for actual usage at a millisecond granularity event handlersevents What is Serverless?
  • 4. What is OpenWhisk? an open Beta offering in IBM’s Bluemix cloud
  • 5. What is OpenWhisk? an open-source project on github
  • 6. What is OpenWhisk? a high-level serverless programming model Trigger Rule Action Package
  • 7. What is OpenWhisk? a high-level serverless programming model Trigger Rule Action Package language support to encapsulate, share, extend code first-class event-driven programming constructs first-class functions compose via sequences docker containers as actions all constructs first-class — powerful extensible language
  • 8. What is OpenWhisk under the hood? http://fordmustanglover.blogspot.com/ • Basic Runtime • Meta-programming
  • 10. Edge VMEdge VM Edge VM Edge VM Edge VM Master VM controller Edge VM Edge VM Slave VM invoker • microservices deployed in docker containers • open-source system middleware • NoSQL (CouchDB) persistence action container action containeraction container action containeraction containeraction container action containeraction container
  • 11. Why ?
  • 12. Why ? controller invoker Deploying and managing traditional microservices 1
  • 13. Slave VM Why ? Lightweight isolated execution environment for arbitrary user code action container action container action container action container action container action container action container action container 2
  • 14. Why ? Portable description of arbitrary binary user actions (Dockerfile) Docker file 3
  • 15. % wsk action invoke hello in 8 easy steps
  • 16. Step 1. Entering the system Edge VMEdge VM Edge VM Edge VM Edge VM Master VM controller Why POST /api/v1/namespaces/myNamespace/actions/myAction ? • SSL termination • Load Balancing • Blue/Green continuous delivery
  • 17. Master VM controller Step 2. Handle the request
  • 18. Master VM kafka SDK couchDB SDK spray DSL load balancer consul SDK data models authcaching Why scala ? Step 2. Handle the request • original prototype node.js: abandoned and rewrote • static typing • makes refactoring much easier • whole classes of bugs went away • nice concurrency features (actors/futures) • kafka libraries more stable on JVM actors controller
  • 19. Step 3. Authentication + Authorization scala kafka SDK couchDB SDK spray DSL load balancer consul SDK data models authcaching external auth • Cloudant: hosted CouchDB • plug-in structure for custom authentication module actors controller Authorization: Basic QWxhZGRpbjpPcGVuU2VzYW1l
  • 20. Step 4. Get the action scala kafka SDK couchDB SDK spray DSL load balancer consul SDK data models authcaching • check resource limits • actions stored as documents in CouchDB • binaries as objects (attachments) actors controller
  • 21. Step 5. Looking for a home scala kafka SDK couchDB SDK spray DSL load balancer consul SDK data models authcaching controller Load balancer: find a slave to execute Slave health, load stored in consul • Sequentially consistent KV store • Replication, Fault Tolerance • Health Check / Monitoring utilities Why ? actors
  • 22. Step 6. Get in line! scala kafka SDK couchDB SDK spray DSL load balancer consul SDK data models authcaching invoker Why ? • High throughput fault-tolerant queues • Point-to-point messages via topics • explicit load balancing Post request to execute to queue in actors Master VM Master VM Slave VM controller
  • 24. Slave VM Step 7. Get to work! scala kafka SDK couchDB SDK docker utilities container pool consul SDK data models caching invoker bound to user action • each user action gets it own container (isolation) • containers may be reused • container pool allocates and garbage collects containers stem cell actors User action containers
  • 25. invoker container pool cold start stem cell container docker run HTTP POST /init HTTP POST /run warm container
  • 26. Step 8. Store the results. scala kafka SDK couchDB SDK docker utilities container pool consul SDK data models caching invoker action container HTTPResponse logs on filesystem actors
  • 27. median ~45 ms latency end-to-end (unloaded system, hello world)
  • 30. using OpenWhisk feeds wsk package bind /whisk.system/github myGit --param username myGitUser --param repository myGitRepo --param accessToken aaaaa1111a1a1a1a1a111111aaaaaa1111aa1a1a 1 Bind a Package with your credentials (parameters)
  • 31. using OpenWhisk feeds wsk package bind /whisk.system/github myGit --param username myGitUser --param repository myGitRepo --param accessToken aaaaa1111a1a1a1a1a111111aaaaaa1111aa1a1a wsk trigger create myGitTrigger --feed myGit/webhook --param events push 1 Bind a Package with your credentials (parameters) 2 Create a Trigger (instantiate a stream of events)
  • 32. using OpenWhisk feeds wsk package bind /whisk.system/github myGit --param username myGitUser --param repository myGitRepo --param accessToken aaaaa1111a1a1a1a1a111111aaaaaa1111aa1a1a wsk trigger create myGitTrigger --feed myGit/webhook --param events push wsk rule create R myGitTrigger myAction 1 Bind a Package with your credentials (parameters) 2 Create a Trigger (instantiate a stream of events) 3 Create a Rule (hook trigger to an action)
  • 33. anybody can create a Package with a feed /whisk.system/github /mynamespace/github
  • 34. logical architecture of a github feed service REST API Create feed POST /feeds Read feed GET /feeds/{id} Update Feed PUT /feeds/{id} Delete feed DELETE /feeds/{id} wsk trigger create
  • 35. what’s the easiest way to implement a service? REST API Create feed POST /feeds Read feed GET /feeds/{id} Update Feed PUT /feeds/{id} Delete feed DELETE /feeds/{id}
  • 36. what’s the easiest way to implement a service? REST API Create feed POST /feeds Read feed GET /feeds/{id} Update Feed PUT /feeds/{id} Delete feed DELETE /feeds/{id}
  • 37. logical architecture of a github feed service serverless feed action main(params) { … params.lifecycle == Create Read Update Delete } wsk trigger create
  • 38. feed action: an OpenWhisk action which manages a feed wsk trigger create myGitTrigger --feed myGit/webhook --param events push -> wsk action invoke myGit/webhook --param events push —-param lifecyleEvent ‘CREATE’ —-param triggerName myNamespace/myGitTrigger —-param auth myAuthKey …
  • 39. wsk package create myGitPackage wsk action create myGitPackage/myFeedAction action.js wsk package update myGitPackage --shared Create your own package and share it /yourNamespace/myGitPackage
  • 40. More Meta-Programming Building an OpenWhisk debugger in OpenWhisk
  • 41. T A B C sequence R cloud
  • 42. T A B C sequence R cloud debug> break on B … debug> inspect .. developer laptop
  • 43. T A B C sequence R cloud debug> break on B … debug> inspect .. developer laptop But how ? • Serverless runtime is stateless, short-running • debugging tools (Chrome, lldb, ..) are local
  • 46. T A B C R % (wskdb) attach b
  • 47. T A B C R % (wskdb) attach b create jump action Bj% wsk action create Bj ..
  • 48. T A B C R % (wskdb) attach b create jump action Bj Bccreate continue action % wsk action create Bj .. % wsk action create Bc ..
  • 49. T A B C R % (wskdb) attach b T A Bj Rj create jump action Bj Bccreate continue action create jump rule % wsk action create Bj .. % wsk action create Bc .. % wsk rule create Rj A Bj
  • 50. T A B C R % (wskdb) attach b T A Bj Rj T2 Bc C Rc create jump action Bj Bccreate continue action create continue rule create jump rule % wsk action create Bj .. % wsk action create Bc .. % wsk rule create Rj A Bj % wsk rule create Rc Bc C
  • 51. T A B C R % (wskdb) attach b T A Bj Rj T2 Bc C Rc create jump action Bj Bccreate continue action create continue rule create jump rule start up local debug broker % wsk action create Bj .. % wsk action create Bc .. % wsk rule create Rj A Bj % wsk rule create Rc Rc C
  • 57. All the debugger components are unprivileged user code debugging broker (wskdb) T A Bj Rj T2 Bc C Rc Bj Bc Uses OpenWhisk introspection to examine and rewrite the user code using actions, triggers, rules. https://github.com/openwhisk/openwhisk-debugger
  • 59. What are you going to do next?
  • 60. What are you going to do next?
  • 62. Edge VMEdge VMEdge VM Edge VMEdge VMMaster VM Edge VMEdge VMSlave VM REST client CLI UI core runtime foundation: virtual machines (IaaS, vagrant, …) Why virtual machines? • direct access to host OS for some container functions • OS support for security, networking, resource control • infrastructure, stability, tools