SlideShare a Scribd company logo
1 of 24
Download to read offline
OpenWhisk Deep	
  Dive
The	
  action	
  container	
  model
Philippe	
  Suter
OpenWhisk Meetup,	
  July	
  21st,	
  NYC
@psuter
Please	
  Note
• IBM’s  statements  regarding  its  plans,  directions,  and  intent  are  subject  to  change  or  withdrawal  without  notice  at  IBM’s  sole discretion.
• Information  regarding  potential  future  products  is  intended  to  outline  our  general  product  direction  and  it  should  not  be  relied on  in  
making  a  purchasing  decision.  
• The  information  mentioned  regarding  potential  future  products  is  not  a  commitment,   promise,  or  legal  obligation  to  deliver  any  
material,  code  or  functionality.  Information  about  potential  future  products  may  not  be  incorporated  into  any  contract.  
• The  development,  release,  and  timing  of  any  future  features  or  functionality  described  for  our  products  remains  at  our  sole  discretion.  
• Performance  is  based  on  measurements  and  projections  using  standard  IBM  benchmarks  in  a  controlled  environment.  The  actual  
throughput  or  performance  that  any  user  will  experience  will  vary  depending  upon  many  factors,  including  considerations  such  as  the  
amount  of  multiprogramming   in  the  user’s  job  stream,  the  I/O  configuration,  the  storage  configuration,  and  the  workload  processed.  
Therefore,  no  assurance  can  be  given  that  an  individual  user  will  achieve  results  similar  to  those  stated  here.  
On	
  the	
  menu	
  tonight
1. “What	
  happens	
  when	
  I	
  create	
  and	
  invoke	
  actions?”
• Action	
  containers
• Lifecycle
• (Internal)	
  action	
  API
2. Hands-­‐on!	
  Adding	
  new	
  language	
  support	
  to	
  OpenWhisk.
• (in	
  addition	
  to	
  JavaScript,	
  Swift,	
  Java,	
  Python,	
  Docker containers)
OpenWhisk Core	
  – System	
  Architecture
4
Edge
Proxy
Log  
Forwarder
UI
Consul
Registrator
Log  Forwarder
EntitlementController
Slave
ESlave
Execution
Engine
E
Registrator
Log  Forwarder
Invoker Executor
Executor
Executor
Master
System	
  Architecture	
  -­‐ simplified
Controller Invoker
DB
/$
Action	
  creation
Controller Invoker
DB
/$
PUT  /api/v1/…/hello
{  …  “exec”:  “…”  } PUT
OK
OK
/$  wsk -­‐v  action  create  hello-­‐js hello.js
Action	
  invocation	
  (blocking)
Controller Invoker
DB
/$
POST  /api/v1/…/hello
{  “name”:  “…”  }
OK
{  “greeting”:  …  }
Invoke:  user:hello
Params:  {  “name”:  “…”  }
GET OK
{  …  “exec”:  “…”  }
• Locate	
  or	
  initialize	
  
container	
  for	
  action
• Run	
  container	
  with	
  
input	
  parameters
PUT
{  “greeting”  :  “hello”  }
Result:  {  “greeting”:  …  }
/$  wsk -­‐v  action  invoke  –b  hello-­‐js -­‐p  ...
Action	
  invocation	
  (non-­‐blocking)
Controller Invoker
DB
/$
POST  /api/v1/…/hello
{  “name”:  “…”  }
OK
Invoke:  user:hello
Params:  {  “name”:  “…”  }
GET OK
{  …  “exec”:  “…”  }
• Locate	
  or	
  initialize	
  
container	
  for	
  action
• Run	
  container	
  with	
  
input	
  parameters
PUT
{  “greeting”  :  “hello”  }
/$  wsk -­‐v  action  invoke  hello-­‐js -­‐p  ...
Action	
  containers
input	
  (JSON	
  object) output	
  (JSON	
  object)
stdout(strings)
stderr(strings)
Function
Action	
  container
• Host	
  user-­‐written	
  function
• Maintain	
  the	
  illusion	
  that
“action	
  ≈	
  function”
• Provide	
  a	
  simple	
  REST	
  API	
  to:
• Initialize	
  the	
  container
• Run	
  the	
  function
Action	
  container	
  lifecycle
docker run POST  /init
POST  /run
(Additionally:	
   docker unpause /	
  docker pause before	
  /	
  after	
  each	
  POST.)
docker rm
Action	
  container	
  API
POST  /init POST  /run
Input
{
“value”  :  {
“name”  :  “action-­‐name”,
“code” :  “function  main  …”
“main”  :  “main”
}
}
OK
(status code	
  should	
  be	
  200,	
  output	
  is	
  ignored)
Output
{
“value”  :  {
“name”  :  ”Mike”,
...
}
}
{
“greeting”  :  “hello...”,
...
}
Not	
  publicly	
  documented,	
  may	
  and	
  will	
  change	
  without	
  notice.
Action	
  containers	
  implementation	
  overview
HTTP	
  proxy JSON /init /run
Node.js Express Native
eval(…) script, keep	
  
function	
  object	
  in	
  memory.
Function	
  invocation.
Swift Flask	
  (Python)
Implicit:
Foundation
(NSJSONSerialization)
Compile	
  script,
store	
  binary.
Run binary	
  with	
  
subprocess.
Java
com.sun.net.httpserver.
HttpServer
Explicit:
Google	
  GSON
Dynamic	
  classloading,
reflection	
  to	
  get	
  handle	
  to	
  
main.
Reflective invoke.
Python Flask Implicit:	
  stdlib
(import  json)
Store	
  script	
  in	
  memory.
Evaluatescript	
  with	
  
exec(…).
Hands	
  on!
• Let’s	
  add	
  support	
  for	
  PHP	
  to	
  OpenWhisk.
• Steps:
1. Build	
  a	
  PHP	
  action	
  container
2. Unit-­‐test	
  the	
  action	
  container
3. Add	
  CLI	
  support	
  for	
  PHP	
  action	
  creation
4. Add	
  internal	
  representation	
  of	
  PHP	
  actions
5. Add	
  invoker	
  support
Carpe	
  Diem
• OpenWhisk evolves:	
  these	
  slides	
  may	
  be	
  outdated	
  at	
  any	
  time
• Works	
  as	
  of	
  28fd62a3 (07/21/2016,	
  10am	
  Eastern)
• All code	
  is	
  available at:
• https://github.com/psuter/openwhiskbranch meetup-­‐0721
Action	
  containers	
  overview
HTTP	
  proxy JSON /init /run
Node.js Express Native
eval(…) script, keep	
  
function	
  object	
  in	
  memory.
Function	
  invocation.
Swift Flask	
  (Python)
Implicit:
Foundation
(NSJSONSerialization)
Compile	
  script,
store	
  binary.
Run binary	
  with	
  
subprocess.
Java
com.sun.net.httpserver.
HttpServer
Explicit:
Google	
  GSON
Dynamic	
  classloading,
reflection	
  to	
  get	
  handle	
  to	
  
main.
Reflective invoke.
Python Flask Implicit:	
  stdlib
(import  json)
Store	
  script	
  in	
  memory.
Evaluatescript	
  with	
  
exec(…).
PHP
Built-­‐in	
  web	
  server
(php –S  …)
Implicit:	
  stdlib
(json_decode/json_encode)
Store	
  script	
  in file.
Evaluate	
  script	
  with	
  
eval(…).
PHP	
  Action	
  Container
FROM php:latest
ADD router.php /
EXPOSE 8080
CMD [  "php",  "-­‐S",  "0.0.0.0:8080",  "/router.php"  ]
PHP	
  Router
<?php
$ACTION_SRC =  'action.php';
switch ($_SERVER["REQUEST_URI"])  {
case "/init":
$post_body =  file_get_contents('php://input');
$data =  json_decode($post_body,  true);
file_put_contents(
$ACTION_SRC,  $data["value"]["code"]);
//  Nothing  to  return.
echo "OKn";
return true;
case "/run":
//  Load  action  code.
$action_code =  file_get_contents($ACTION_SRC);
ob_start();
eval('  ?>  '  .  $action_code);  //  wtf
ob_end_clean();
//  Load  action  params.
$post_body =  file_get_contents('php://input');
$data =  json_decode($post_body,  true);
//  Run.
$res =  main($data["value"]);
//  Return.
header('Content-­‐Type:  application/json');
echo  json_encode($res)  .  "n";
return true;
default:
return true;
}
?>
http://php.net/manual/en/features.commandline.webserver.php
http://php.net/manual/en/function.eval.php
CLI	
  support
• Auto-­‐detect	
  action	
  kind	
  based	
  on	
  file	
  extension
• Same	
  technique	
  as	
  for	
  JavaScript,	
  Swift,	
  Python
Controller	
  &	
  invoker	
  changes
• Support	
  php kind	
  in	
  whisk.core.entity.Exec
• Internal	
  Scala	
  representation	
  +	
  JSON	
  (de)serialization	
  for	
  REST	
  API	
  and	
  DB
• Lets	
  the	
  controller	
  accept	
  PHP	
  action	
  creations
• Lets	
  the	
  invoker	
  accept	
  PHP	
  action	
  invocation	
  requests
• Add	
  PHP	
  case	
  in	
  whisk.core.entity.WhiskAction
• Tells	
  the	
  invoker	
  how	
  to	
  craft	
  the	
  /init payload	
  for	
  PHP	
  actions.
Running
/$	
  wsk action	
  create	
  hello-­‐php ./actions/hello.php
ok:	
  created	
  action	
  hello-­‐php
/$	
  wsk action	
  invoke	
  -­‐br hello-­‐php -­‐p	
  name	
  "Meetup attendees"
{
"greeting":	
  "Hello	
  Meetup attendees!"
}
Thanks!
Notices	
  and	
  Disclaimers
Copyright  ©  2016  by  International  Business  Machines  Corporation  (IBM).    No  part  of  this  document  may  be  reproduced  or  transmitted  in  any  form  without  written  permission  
from  IBM.  
U.S.  Government  Users  Restricted  Rights  -­ Use,  duplication   or  disclosure  restricted  by  GSA  ADP  Schedule  Contract  with  IBM.
Information  in  these  presentations  (including  information  relating  to  products  that  have  not  yet  been  announced  by  IBM)  has  been reviewed  for  accuracy  as  of  the  date  of  initial  
publication  and  could  include  unintentional  technical  or  typographical  errors.  IBM  shall  have  no  responsibility  to  update  this  information.  THIS  DOCUMENT  IS  DISTRIBUTED  
"AS  IS"  WITHOUT  ANY  WARRANTY,  EITHER  EXPRESS  OR  IMPLIED.    IN  NO  EVENT  SHALL  IBM  BE  LIABLE  FOR  ANY  DAMAGE  ARISING  FROM  THE  USE OF THIS  
INFORMATION,  INCLUDING  BUT  NOT  LIMITED  TO,  LOSS  OF  DATA,  BUSINESS  INTERRUPTION,  LOSS  OF  PROFIT  OR  LOSS  OF  OPPORTUNITY.    IBM  products  and  
services  are  warranted  according  to  the  terms  and  conditions  of  the  agreements  under  which  they  are  provided.  
Any  statements  regarding  IBM's  future  direction,  intent  or  product  plans  are  subject  to  change  or  withdrawal  without  notice.
Performance  data  contained  herein  was  generally  obtained  in  a  controlled,  isolated  environments.    Customer  examples  are  presented  as  illustrations  of  how  those  customers  
have  used  IBM  products  and  the  results  they  may  have  achieved.    Actual  performance,  cost,  savings  or  other  results  in  other  operating  environments  may  vary.    
References  in  this  document  to  IBM  products,  programs,  or  services  does  not  imply  that  IBM  intends  to  make  such  products,  programs  or  services  available  in  all  countries  in  
which  IBM  operates  or  does  business.    
Workshops,  sessions  and  associated  materials  may  have  been  prepared  by  independent  session  speakers,  and  do  not  necessarily  reflect  the  views  of  IBM.    All  materials  and  
discussions  are  provided  for  informational  purposes  only,  and  are  neither  intended  to,  nor  shall  constitute  legal  or  other  guidance  or  advice  to  any  individual  participant  or  their  
specific  situation.  
It  is  the  customer’s    responsibility  to  insure  its  own  compliance  with  legal  requirements  and  to  obtain  advice  of  competent  legal  counsel  as  to  the identification  and  
interpretation  of  any  relevant  laws  and  regulatory  requirements  that  may  affect  the  customer’s  business  and  any  actions  the  customer  may  need  to  take  to  comply  with  such  
laws.    IBM does  not  provide  legal  advice  or  represent  or  warrant  that  its  services  or  products  will  ensure  that  the  customer  is  in  compliance  with  any  law
Notices	
  and	
  Disclaimers	
  Continued	
  
Information  concerning  non-­IBM  products  was  obtained  from  the  suppliers  of  those  products,  their  published  announcements  or  other  publicly  available  sources.    IBM  has  not  
tested  those  products  in  connection  with  this  publication  and  cannot  confirm  the  accuracy  of  performance,  compatibility  or  any  other  claims  related  to  non-­IBM  products.    
Questions  on  the  capabilities  of  non-­IBM  products  should  be  addressed  to  the  suppliers  of  those  products.  IBM  does  not  warrant  the  quality  of  any  third-­party  products,  or  the  
ability  of  any  such  third-­party  products  to  interoperate  with  IBM’s  products.    IBM  EXPRESSLY  DISCLAIMS  ALL  WARRANTIES,  EXPRESSED  OR  IMPLIED,  INCLUDING  BUT  
NOT  LIMITED  TO,  THE  IMPLIED  WARRANTIES  OF  MERCHANTABILITY  AND  FITNESS  FOR  A  PARTICULAR  PURPOSE.  
The  provision  of  the  information  contained  h  erein is  not  intended  to,  and  does  not,  grant  any  right  or  license  under  any  IBM  patents,  copyrights,  trademarks  or  other  intellectual  
property  right.  
IBM,  the  IBM  logo,  ibm.com,  Aspera®,  Bluemix,  Blueworks Live,  CICS,  Clearcase,  Cognos®,  DOORS®,  Emptoris®,  Enterprise  Document  Management  System™,  FASP®,  
FileNet®,  Global  Business  Services  ®,  Global  Technology  Services  ®,  IBM  ExperienceOne™,  IBM  SmartCloud®,  IBM  Social  Business®,  Information  on  Demand,  ILOG,  
Maximo®,  MQIntegrator®,  MQSeries®,  Netcool®,  OMEGAMON,  OpenPower,  PureAnalytics™,  PureApplication®,  pureCluster™,  PureCoverage®,  PureData®,  
PureExperience®,  PureFlex®,  pureQuery®,  pureScale®,  PureSystems®,  QRadar®,  Rational®,  Rhapsody®,  Smarter  Commerce®,  SoDA,  SPSS,  Sterling  Commerce®,  
StoredIQ,  Tealeaf®,  Tivoli®,  Trusteer®,  Unica®,  urban{code}®,  Watson,  WebSphere®,  Worklight®,  X-­Force®  and  System  z®  Z/OS,  are  trademarks  of  International  Business  
Machines  Corporation,  registered  in  many  jurisdictions  worldwide.  Other  product  and  service  names  might  be  trademarks  of  IBM  or  other  companies.  A  current  list  of  IBM  
trademarks  is  available  on  the  Web  at  "Copyright  and  trademark  information"  at:    www.ibm.com/legal/copytrade.shtml.

More Related Content

What's hot

Serverless apps with OpenWhisk
Serverless apps with OpenWhiskServerless apps with OpenWhisk
Serverless apps with OpenWhiskDaniel Krook
 
OpenWhisk: Event-driven Design
OpenWhisk: Event-driven DesignOpenWhisk: Event-driven Design
OpenWhisk: Event-driven DesignAltoros
 
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
 
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
 
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
 
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
 
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
 
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
 
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
 
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
 
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
 
Serverless APIs with Apache OpenWhisk
Serverless APIs with Apache OpenWhiskServerless APIs with Apache OpenWhisk
Serverless APIs with Apache OpenWhiskDaniel Krook
 
Building serverless applications with Apache OpenWhisk
Building serverless applications with Apache OpenWhiskBuilding serverless applications with Apache OpenWhisk
Building serverless applications with Apache OpenWhiskDaniel Krook
 
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
 
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
 
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
 
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
 
Apache OpenWhisk - KRnet 2017
Apache OpenWhisk - KRnet 2017Apache OpenWhisk - KRnet 2017
Apache OpenWhisk - KRnet 2017Jin Gi Kong
 
Containers & Cloud Native Ops Cloud Foundry Approach
Containers & Cloud Native Ops Cloud Foundry ApproachContainers & Cloud Native Ops Cloud Foundry Approach
Containers & Cloud Native Ops Cloud Foundry ApproachCodeOps Technologies LLP
 

What's hot (19)

Serverless apps with OpenWhisk
Serverless apps with OpenWhiskServerless apps with OpenWhisk
Serverless apps with OpenWhisk
 
OpenWhisk: Event-driven Design
OpenWhisk: Event-driven DesignOpenWhisk: Event-driven Design
OpenWhisk: Event-driven Design
 
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 ...
 
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
 
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...
 
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
 
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...
 
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)
 
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
 
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
 
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
 
Serverless APIs with Apache OpenWhisk
Serverless APIs with Apache OpenWhiskServerless APIs with Apache OpenWhisk
Serverless APIs with Apache OpenWhisk
 
Building serverless applications with Apache OpenWhisk
Building serverless applications with Apache OpenWhiskBuilding serverless applications with Apache OpenWhisk
Building serverless applications with Apache OpenWhisk
 
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...
 
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
 
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
 
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"
 
Apache OpenWhisk - KRnet 2017
Apache OpenWhisk - KRnet 2017Apache OpenWhisk - KRnet 2017
Apache OpenWhisk - KRnet 2017
 
Containers & Cloud Native Ops Cloud Foundry Approach
Containers & Cloud Native Ops Cloud Foundry ApproachContainers & Cloud Native Ops Cloud Foundry Approach
Containers & Cloud Native Ops Cloud Foundry Approach
 

Viewers also liked

How to deploy PHP projects with docker
How to deploy PHP projects with dockerHow to deploy PHP projects with docker
How to deploy PHP projects with dockerRuoshi Ling
 
Domain-driven Design
Domain-driven DesignDomain-driven Design
Domain-driven DesignAltoros
 
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
 
Open whisk quick start guide
Open whisk quick start guideOpen whisk quick start guide
Open whisk quick start guideJoseph Chang
 
The White Rose of Athens
The White Rose of AthensThe White Rose of Athens
The White Rose of AthensJohn *
 
雲南東川紅土地
雲南東川紅土地雲南東川紅土地
雲南東川紅土地Jaing Lai
 
SME2: Social Media Excellence x Social Media Expertise
SME2: Social Media Excellence x Social Media ExpertiseSME2: Social Media Excellence x Social Media Expertise
SME2: Social Media Excellence x Social Media ExpertiseRichard Binhammer
 
Dynamic processors w4_3_imp
Dynamic processors w4_3_impDynamic processors w4_3_imp
Dynamic processors w4_3_impJan Zurcher
 
TheCrowdCafe: Global Crowdinvesting Industry Presentation
TheCrowdCafe: Global Crowdinvesting Industry Presentation  TheCrowdCafe: Global Crowdinvesting Industry Presentation
TheCrowdCafe: Global Crowdinvesting Industry Presentation Jonathan Sandlund
 
Museums Give Teachers Control to Create
Museums Give Teachers  Control to CreateMuseums Give Teachers  Control to Create
Museums Give Teachers Control to CreateDarren Milligan
 

Viewers also liked (15)

How to deploy PHP projects with docker
How to deploy PHP projects with dockerHow to deploy PHP projects with docker
How to deploy PHP projects with docker
 
Domain-driven Design
Domain-driven DesignDomain-driven Design
Domain-driven Design
 
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
 
Open whisk quick start guide
Open whisk quick start guideOpen whisk quick start guide
Open whisk quick start guide
 
The White Rose of Athens
The White Rose of AthensThe White Rose of Athens
The White Rose of Athens
 
Zaragoza turismo 233
Zaragoza turismo 233Zaragoza turismo 233
Zaragoza turismo 233
 
Zaragoza Turismo 44
Zaragoza Turismo 44Zaragoza Turismo 44
Zaragoza Turismo 44
 
TLC Services
TLC ServicesTLC Services
TLC Services
 
雲南東川紅土地
雲南東川紅土地雲南東川紅土地
雲南東川紅土地
 
SME2: Social Media Excellence x Social Media Expertise
SME2: Social Media Excellence x Social Media ExpertiseSME2: Social Media Excellence x Social Media Expertise
SME2: Social Media Excellence x Social Media Expertise
 
Dynamic processors w4_3_imp
Dynamic processors w4_3_impDynamic processors w4_3_imp
Dynamic processors w4_3_imp
 
2
22
2
 
TheCrowdCafe: Global Crowdinvesting Industry Presentation
TheCrowdCafe: Global Crowdinvesting Industry Presentation  TheCrowdCafe: Global Crowdinvesting Industry Presentation
TheCrowdCafe: Global Crowdinvesting Industry Presentation
 
Museums Give Teachers Control to Create
Museums Give Teachers  Control to CreateMuseums Give Teachers  Control to Create
Museums Give Teachers Control to Create
 

Similar to OpenWhisk Deep Dive: the action container model

Dev ops tools and was liberty profile
Dev ops tools and was liberty profileDev ops tools and was liberty profile
Dev ops tools and was liberty profilesflynn073
 
Dev ops tools and was liberty profile
Dev ops tools and was liberty profileDev ops tools and was liberty profile
Dev ops tools and was liberty profilesflynn073
 
Technical Introduction to IBM Integration Bus
Technical Introduction to IBM Integration BusTechnical Introduction to IBM Integration Bus
Technical Introduction to IBM Integration BusGeza Geleji
 
Tips for Developing and Testing IBM HATS Applications
Tips for Developing and Testing IBM HATS ApplicationsTips for Developing and Testing IBM HATS Applications
Tips for Developing and Testing IBM HATS ApplicationsStrongback Consulting
 
How to Containerize WebSphere Application Server Traditional, and Why You Mig...
How to Containerize WebSphere Application Server Traditional, and Why You Mig...How to Containerize WebSphere Application Server Traditional, and Why You Mig...
How to Containerize WebSphere Application Server Traditional, and Why You Mig...David Currie
 
Java Tech & Tools | Deploying Java & Play Framework Apps to the Cloud | Sande...
Java Tech & Tools | Deploying Java & Play Framework Apps to the Cloud | Sande...Java Tech & Tools | Deploying Java & Play Framework Apps to the Cloud | Sande...
Java Tech & Tools | Deploying Java & Play Framework Apps to the Cloud | Sande...JAX London
 
Saving Time And Effort With QuickBase Api - Sergio Haro
Saving Time And Effort With QuickBase Api - Sergio HaroSaving Time And Effort With QuickBase Api - Sergio Haro
Saving Time And Effort With QuickBase Api - Sergio HaroQuickBase, Inc.
 
Creating Scalable JVM/Java Apps on Heroku
Creating Scalable JVM/Java Apps on HerokuCreating Scalable JVM/Java Apps on Heroku
Creating Scalable JVM/Java Apps on HerokuJoe Kutner
 
Heroku for team collaboration
Heroku for team collaborationHeroku for team collaboration
Heroku for team collaborationJohn Stevenson
 
Heroku for-team-collaboration
Heroku for-team-collaborationHeroku for-team-collaboration
Heroku for-team-collaborationJohn Stevenson
 
Google App Engine for Java
Google App Engine for JavaGoogle App Engine for Java
Google App Engine for JavaLars Vogel
 
JavaOne 2015 CON7547 "Beyond the Coffee Cup: Leveraging Java Runtime Technolo...
JavaOne 2015 CON7547 "Beyond the Coffee Cup: Leveraging Java Runtime Technolo...JavaOne 2015 CON7547 "Beyond the Coffee Cup: Leveraging Java Runtime Technolo...
JavaOne 2015 CON7547 "Beyond the Coffee Cup: Leveraging Java Runtime Technolo...0xdaryl
 
WebSphere Technical University: Introduction to the Java Diagnostic Tools
WebSphere Technical University: Introduction to the Java Diagnostic ToolsWebSphere Technical University: Introduction to the Java Diagnostic Tools
WebSphere Technical University: Introduction to the Java Diagnostic ToolsChris Bailey
 
IBM Connect 2014 - AD205: Creating State-of-the-Art Web Applications with Dom...
IBM Connect 2014 - AD205: Creating State-of-the-Art Web Applications with Dom...IBM Connect 2014 - AD205: Creating State-of-the-Art Web Applications with Dom...
IBM Connect 2014 - AD205: Creating State-of-the-Art Web Applications with Dom...Dave Delay
 
JMP103 : Extending Your App Arsenal With OpenSocial
JMP103 : Extending Your App Arsenal With OpenSocialJMP103 : Extending Your App Arsenal With OpenSocial
JMP103 : Extending Your App Arsenal With OpenSocialRyan Baxter
 
IBM Connect 2014 - JMP103: Extending Your Application Arsenal With OpenSocial
IBM Connect 2014 - JMP103: Extending Your Application Arsenal With OpenSocialIBM Connect 2014 - JMP103: Extending Your Application Arsenal With OpenSocial
IBM Connect 2014 - JMP103: Extending Your Application Arsenal With OpenSocialIBM Connections Developers
 
Tutorial 1: Your First Science App - Araport Developer Workshop
Tutorial 1: Your First Science App - Araport Developer WorkshopTutorial 1: Your First Science App - Araport Developer Workshop
Tutorial 1: Your First Science App - Araport Developer WorkshopVivek Krishnakumar
 
Java Development on Bluemix
Java Development on BluemixJava Development on Bluemix
Java Development on BluemixRam Vennam
 
Big Data: Getting off to a fast start with Big SQL (World of Watson 2016 sess...
Big Data: Getting off to a fast start with Big SQL (World of Watson 2016 sess...Big Data: Getting off to a fast start with Big SQL (World of Watson 2016 sess...
Big Data: Getting off to a fast start with Big SQL (World of Watson 2016 sess...Cynthia Saracco
 
IBM Pulse session 2727: Continuous delivery -accelerated with DevOps
IBM Pulse session 2727: Continuous delivery -accelerated with DevOpsIBM Pulse session 2727: Continuous delivery -accelerated with DevOps
IBM Pulse session 2727: Continuous delivery -accelerated with DevOpsSanjeev Sharma
 

Similar to OpenWhisk Deep Dive: the action container model (20)

Dev ops tools and was liberty profile
Dev ops tools and was liberty profileDev ops tools and was liberty profile
Dev ops tools and was liberty profile
 
Dev ops tools and was liberty profile
Dev ops tools and was liberty profileDev ops tools and was liberty profile
Dev ops tools and was liberty profile
 
Technical Introduction to IBM Integration Bus
Technical Introduction to IBM Integration BusTechnical Introduction to IBM Integration Bus
Technical Introduction to IBM Integration Bus
 
Tips for Developing and Testing IBM HATS Applications
Tips for Developing and Testing IBM HATS ApplicationsTips for Developing and Testing IBM HATS Applications
Tips for Developing and Testing IBM HATS Applications
 
How to Containerize WebSphere Application Server Traditional, and Why You Mig...
How to Containerize WebSphere Application Server Traditional, and Why You Mig...How to Containerize WebSphere Application Server Traditional, and Why You Mig...
How to Containerize WebSphere Application Server Traditional, and Why You Mig...
 
Java Tech & Tools | Deploying Java & Play Framework Apps to the Cloud | Sande...
Java Tech & Tools | Deploying Java & Play Framework Apps to the Cloud | Sande...Java Tech & Tools | Deploying Java & Play Framework Apps to the Cloud | Sande...
Java Tech & Tools | Deploying Java & Play Framework Apps to the Cloud | Sande...
 
Saving Time And Effort With QuickBase Api - Sergio Haro
Saving Time And Effort With QuickBase Api - Sergio HaroSaving Time And Effort With QuickBase Api - Sergio Haro
Saving Time And Effort With QuickBase Api - Sergio Haro
 
Creating Scalable JVM/Java Apps on Heroku
Creating Scalable JVM/Java Apps on HerokuCreating Scalable JVM/Java Apps on Heroku
Creating Scalable JVM/Java Apps on Heroku
 
Heroku for team collaboration
Heroku for team collaborationHeroku for team collaboration
Heroku for team collaboration
 
Heroku for-team-collaboration
Heroku for-team-collaborationHeroku for-team-collaboration
Heroku for-team-collaboration
 
Google App Engine for Java
Google App Engine for JavaGoogle App Engine for Java
Google App Engine for Java
 
JavaOne 2015 CON7547 "Beyond the Coffee Cup: Leveraging Java Runtime Technolo...
JavaOne 2015 CON7547 "Beyond the Coffee Cup: Leveraging Java Runtime Technolo...JavaOne 2015 CON7547 "Beyond the Coffee Cup: Leveraging Java Runtime Technolo...
JavaOne 2015 CON7547 "Beyond the Coffee Cup: Leveraging Java Runtime Technolo...
 
WebSphere Technical University: Introduction to the Java Diagnostic Tools
WebSphere Technical University: Introduction to the Java Diagnostic ToolsWebSphere Technical University: Introduction to the Java Diagnostic Tools
WebSphere Technical University: Introduction to the Java Diagnostic Tools
 
IBM Connect 2014 - AD205: Creating State-of-the-Art Web Applications with Dom...
IBM Connect 2014 - AD205: Creating State-of-the-Art Web Applications with Dom...IBM Connect 2014 - AD205: Creating State-of-the-Art Web Applications with Dom...
IBM Connect 2014 - AD205: Creating State-of-the-Art Web Applications with Dom...
 
JMP103 : Extending Your App Arsenal With OpenSocial
JMP103 : Extending Your App Arsenal With OpenSocialJMP103 : Extending Your App Arsenal With OpenSocial
JMP103 : Extending Your App Arsenal With OpenSocial
 
IBM Connect 2014 - JMP103: Extending Your Application Arsenal With OpenSocial
IBM Connect 2014 - JMP103: Extending Your Application Arsenal With OpenSocialIBM Connect 2014 - JMP103: Extending Your Application Arsenal With OpenSocial
IBM Connect 2014 - JMP103: Extending Your Application Arsenal With OpenSocial
 
Tutorial 1: Your First Science App - Araport Developer Workshop
Tutorial 1: Your First Science App - Araport Developer WorkshopTutorial 1: Your First Science App - Araport Developer Workshop
Tutorial 1: Your First Science App - Araport Developer Workshop
 
Java Development on Bluemix
Java Development on BluemixJava Development on Bluemix
Java Development on Bluemix
 
Big Data: Getting off to a fast start with Big SQL (World of Watson 2016 sess...
Big Data: Getting off to a fast start with Big SQL (World of Watson 2016 sess...Big Data: Getting off to a fast start with Big SQL (World of Watson 2016 sess...
Big Data: Getting off to a fast start with Big SQL (World of Watson 2016 sess...
 
IBM Pulse session 2727: Continuous delivery -accelerated with DevOps
IBM Pulse session 2727: Continuous delivery -accelerated with DevOpsIBM Pulse session 2727: Continuous delivery -accelerated with DevOps
IBM Pulse session 2727: Continuous delivery -accelerated with DevOps
 

Recently uploaded

Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CVKhem
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUK Journal
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?Antenna Manufacturer Coco
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessPixlogix Infotech
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 

Recently uploaded (20)

Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 

OpenWhisk Deep Dive: the action container model

  • 1. OpenWhisk Deep  Dive The  action  container  model Philippe  Suter OpenWhisk Meetup,  July  21st,  NYC @psuter
  • 2. Please  Note • IBM’s  statements  regarding  its  plans,  directions,  and  intent  are  subject  to  change  or  withdrawal  without  notice  at  IBM’s  sole discretion. • Information  regarding  potential  future  products  is  intended  to  outline  our  general  product  direction  and  it  should  not  be  relied on  in   making  a  purchasing  decision.   • The  information  mentioned  regarding  potential  future  products  is  not  a  commitment,   promise,  or  legal  obligation  to  deliver  any   material,  code  or  functionality.  Information  about  potential  future  products  may  not  be  incorporated  into  any  contract.   • The  development,  release,  and  timing  of  any  future  features  or  functionality  described  for  our  products  remains  at  our  sole  discretion.   • Performance  is  based  on  measurements  and  projections  using  standard  IBM  benchmarks  in  a  controlled  environment.  The  actual   throughput  or  performance  that  any  user  will  experience  will  vary  depending  upon  many  factors,  including  considerations  such  as  the   amount  of  multiprogramming   in  the  user’s  job  stream,  the  I/O  configuration,  the  storage  configuration,  and  the  workload  processed.   Therefore,  no  assurance  can  be  given  that  an  individual  user  will  achieve  results  similar  to  those  stated  here.  
  • 3. On  the  menu  tonight 1. “What  happens  when  I  create  and  invoke  actions?” • Action  containers • Lifecycle • (Internal)  action  API 2. Hands-­‐on!  Adding  new  language  support  to  OpenWhisk. • (in  addition  to  JavaScript,  Swift,  Java,  Python,  Docker containers)
  • 4. OpenWhisk Core  – System  Architecture 4 Edge Proxy Log   Forwarder UI Consul Registrator Log  Forwarder EntitlementController Slave ESlave Execution Engine E Registrator Log  Forwarder Invoker Executor Executor Executor Master
  • 5. System  Architecture  -­‐ simplified Controller Invoker DB /$
  • 6. Action  creation Controller Invoker DB /$ PUT  /api/v1/…/hello {  …  “exec”:  “…”  } PUT OK OK /$  wsk -­‐v  action  create  hello-­‐js hello.js
  • 7. Action  invocation  (blocking) Controller Invoker DB /$ POST  /api/v1/…/hello {  “name”:  “…”  } OK {  “greeting”:  …  } Invoke:  user:hello Params:  {  “name”:  “…”  } GET OK {  …  “exec”:  “…”  } • Locate  or  initialize   container  for  action • Run  container  with   input  parameters PUT {  “greeting”  :  “hello”  } Result:  {  “greeting”:  …  } /$  wsk -­‐v  action  invoke  –b  hello-­‐js -­‐p  ...
  • 8. Action  invocation  (non-­‐blocking) Controller Invoker DB /$ POST  /api/v1/…/hello {  “name”:  “…”  } OK Invoke:  user:hello Params:  {  “name”:  “…”  } GET OK {  …  “exec”:  “…”  } • Locate  or  initialize   container  for  action • Run  container  with   input  parameters PUT {  “greeting”  :  “hello”  } /$  wsk -­‐v  action  invoke  hello-­‐js -­‐p  ...
  • 9. Action  containers input  (JSON  object) output  (JSON  object) stdout(strings) stderr(strings) Function Action  container • Host  user-­‐written  function • Maintain  the  illusion  that “action  ≈  function” • Provide  a  simple  REST  API  to: • Initialize  the  container • Run  the  function
  • 10. Action  container  lifecycle docker run POST  /init POST  /run (Additionally:   docker unpause /  docker pause before  /  after  each  POST.) docker rm
  • 11. Action  container  API POST  /init POST  /run Input { “value”  :  { “name”  :  “action-­‐name”, “code” :  “function  main  …” “main”  :  “main” } } OK (status code  should  be  200,  output  is  ignored) Output { “value”  :  { “name”  :  ”Mike”, ... } } { “greeting”  :  “hello...”, ... } Not  publicly  documented,  may  and  will  change  without  notice.
  • 12. Action  containers  implementation  overview HTTP  proxy JSON /init /run Node.js Express Native eval(…) script, keep   function  object  in  memory. Function  invocation. Swift Flask  (Python) Implicit: Foundation (NSJSONSerialization) Compile  script, store  binary. Run binary  with   subprocess. Java com.sun.net.httpserver. HttpServer Explicit: Google  GSON Dynamic  classloading, reflection  to  get  handle  to   main. Reflective invoke. Python Flask Implicit:  stdlib (import  json) Store  script  in  memory. Evaluatescript  with   exec(…).
  • 13. Hands  on! • Let’s  add  support  for  PHP  to  OpenWhisk. • Steps: 1. Build  a  PHP  action  container 2. Unit-­‐test  the  action  container 3. Add  CLI  support  for  PHP  action  creation 4. Add  internal  representation  of  PHP  actions 5. Add  invoker  support
  • 14. Carpe  Diem • OpenWhisk evolves:  these  slides  may  be  outdated  at  any  time • Works  as  of  28fd62a3 (07/21/2016,  10am  Eastern) • All code  is  available at: • https://github.com/psuter/openwhiskbranch meetup-­‐0721
  • 15. Action  containers  overview HTTP  proxy JSON /init /run Node.js Express Native eval(…) script, keep   function  object  in  memory. Function  invocation. Swift Flask  (Python) Implicit: Foundation (NSJSONSerialization) Compile  script, store  binary. Run binary  with   subprocess. Java com.sun.net.httpserver. HttpServer Explicit: Google  GSON Dynamic  classloading, reflection  to  get  handle  to   main. Reflective invoke. Python Flask Implicit:  stdlib (import  json) Store  script  in  memory. Evaluatescript  with   exec(…). PHP Built-­‐in  web  server (php –S  …) Implicit:  stdlib (json_decode/json_encode) Store  script  in file. Evaluate  script  with   eval(…).
  • 16. PHP  Action  Container FROM php:latest ADD router.php / EXPOSE 8080 CMD [  "php",  "-­‐S",  "0.0.0.0:8080",  "/router.php"  ]
  • 17. PHP  Router <?php $ACTION_SRC =  'action.php'; switch ($_SERVER["REQUEST_URI"])  { case "/init": $post_body =  file_get_contents('php://input'); $data =  json_decode($post_body,  true); file_put_contents( $ACTION_SRC,  $data["value"]["code"]); //  Nothing  to  return. echo "OKn"; return true; case "/run": //  Load  action  code. $action_code =  file_get_contents($ACTION_SRC); ob_start(); eval('  ?>  '  .  $action_code);  //  wtf ob_end_clean(); //  Load  action  params. $post_body =  file_get_contents('php://input'); $data =  json_decode($post_body,  true); //  Run. $res =  main($data["value"]); //  Return. header('Content-­‐Type:  application/json'); echo  json_encode($res)  .  "n"; return true; default: return true; } ?>
  • 19. CLI  support • Auto-­‐detect  action  kind  based  on  file  extension • Same  technique  as  for  JavaScript,  Swift,  Python
  • 20. Controller  &  invoker  changes • Support  php kind  in  whisk.core.entity.Exec • Internal  Scala  representation  +  JSON  (de)serialization  for  REST  API  and  DB • Lets  the  controller  accept  PHP  action  creations • Lets  the  invoker  accept  PHP  action  invocation  requests • Add  PHP  case  in  whisk.core.entity.WhiskAction • Tells  the  invoker  how  to  craft  the  /init payload  for  PHP  actions.
  • 21. Running /$  wsk action  create  hello-­‐php ./actions/hello.php ok:  created  action  hello-­‐php /$  wsk action  invoke  -­‐br hello-­‐php -­‐p  name  "Meetup attendees" { "greeting":  "Hello  Meetup attendees!" }
  • 23. Notices  and  Disclaimers Copyright  ©  2016  by  International  Business  Machines  Corporation  (IBM).    No  part  of  this  document  may  be  reproduced  or  transmitted  in  any  form  without  written  permission   from  IBM.   U.S.  Government  Users  Restricted  Rights  -­ Use,  duplication   or  disclosure  restricted  by  GSA  ADP  Schedule  Contract  with  IBM. Information  in  these  presentations  (including  information  relating  to  products  that  have  not  yet  been  announced  by  IBM)  has  been reviewed  for  accuracy  as  of  the  date  of  initial   publication  and  could  include  unintentional  technical  or  typographical  errors.  IBM  shall  have  no  responsibility  to  update  this  information.  THIS  DOCUMENT  IS  DISTRIBUTED   "AS  IS"  WITHOUT  ANY  WARRANTY,  EITHER  EXPRESS  OR  IMPLIED.    IN  NO  EVENT  SHALL  IBM  BE  LIABLE  FOR  ANY  DAMAGE  ARISING  FROM  THE  USE OF THIS   INFORMATION,  INCLUDING  BUT  NOT  LIMITED  TO,  LOSS  OF  DATA,  BUSINESS  INTERRUPTION,  LOSS  OF  PROFIT  OR  LOSS  OF  OPPORTUNITY.    IBM  products  and   services  are  warranted  according  to  the  terms  and  conditions  of  the  agreements  under  which  they  are  provided.   Any  statements  regarding  IBM's  future  direction,  intent  or  product  plans  are  subject  to  change  or  withdrawal  without  notice. Performance  data  contained  herein  was  generally  obtained  in  a  controlled,  isolated  environments.    Customer  examples  are  presented  as  illustrations  of  how  those  customers   have  used  IBM  products  and  the  results  they  may  have  achieved.    Actual  performance,  cost,  savings  or  other  results  in  other  operating  environments  may  vary.     References  in  this  document  to  IBM  products,  programs,  or  services  does  not  imply  that  IBM  intends  to  make  such  products,  programs  or  services  available  in  all  countries  in   which  IBM  operates  or  does  business.     Workshops,  sessions  and  associated  materials  may  have  been  prepared  by  independent  session  speakers,  and  do  not  necessarily  reflect  the  views  of  IBM.    All  materials  and   discussions  are  provided  for  informational  purposes  only,  and  are  neither  intended  to,  nor  shall  constitute  legal  or  other  guidance  or  advice  to  any  individual  participant  or  their   specific  situation.   It  is  the  customer’s    responsibility  to  insure  its  own  compliance  with  legal  requirements  and  to  obtain  advice  of  competent  legal  counsel  as  to  the identification  and   interpretation  of  any  relevant  laws  and  regulatory  requirements  that  may  affect  the  customer’s  business  and  any  actions  the  customer  may  need  to  take  to  comply  with  such   laws.    IBM does  not  provide  legal  advice  or  represent  or  warrant  that  its  services  or  products  will  ensure  that  the  customer  is  in  compliance  with  any  law
  • 24. Notices  and  Disclaimers  Continued   Information  concerning  non-­IBM  products  was  obtained  from  the  suppliers  of  those  products,  their  published  announcements  or  other  publicly  available  sources.    IBM  has  not   tested  those  products  in  connection  with  this  publication  and  cannot  confirm  the  accuracy  of  performance,  compatibility  or  any  other  claims  related  to  non-­IBM  products.     Questions  on  the  capabilities  of  non-­IBM  products  should  be  addressed  to  the  suppliers  of  those  products.  IBM  does  not  warrant  the  quality  of  any  third-­party  products,  or  the   ability  of  any  such  third-­party  products  to  interoperate  with  IBM’s  products.    IBM  EXPRESSLY  DISCLAIMS  ALL  WARRANTIES,  EXPRESSED  OR  IMPLIED,  INCLUDING  BUT   NOT  LIMITED  TO,  THE  IMPLIED  WARRANTIES  OF  MERCHANTABILITY  AND  FITNESS  FOR  A  PARTICULAR  PURPOSE.   The  provision  of  the  information  contained  h  erein is  not  intended  to,  and  does  not,  grant  any  right  or  license  under  any  IBM  patents,  copyrights,  trademarks  or  other  intellectual   property  right.   IBM,  the  IBM  logo,  ibm.com,  Aspera®,  Bluemix,  Blueworks Live,  CICS,  Clearcase,  Cognos®,  DOORS®,  Emptoris®,  Enterprise  Document  Management  System™,  FASP®,   FileNet®,  Global  Business  Services  ®,  Global  Technology  Services  ®,  IBM  ExperienceOne™,  IBM  SmartCloud®,  IBM  Social  Business®,  Information  on  Demand,  ILOG,   Maximo®,  MQIntegrator®,  MQSeries®,  Netcool®,  OMEGAMON,  OpenPower,  PureAnalytics™,  PureApplication®,  pureCluster™,  PureCoverage®,  PureData®,   PureExperience®,  PureFlex®,  pureQuery®,  pureScale®,  PureSystems®,  QRadar®,  Rational®,  Rhapsody®,  Smarter  Commerce®,  SoDA,  SPSS,  Sterling  Commerce®,   StoredIQ,  Tealeaf®,  Tivoli®,  Trusteer®,  Unica®,  urban{code}®,  Watson,  WebSphere®,  Worklight®,  X-­Force®  and  System  z®  Z/OS,  are  trademarks  of  International  Business   Machines  Corporation,  registered  in  many  jurisdictions  worldwide.  Other  product  and  service  names  might  be  trademarks  of  IBM  or  other  companies.  A  current  list  of  IBM   trademarks  is  available  on  the  Web  at  "Copyright  and  trademark  information"  at:    www.ibm.com/legal/copytrade.shtml.