Where are the Servers? The servers are alive and well. (your function gets containerised, OpenWhisk grabs and runs it on demand in response to the registered triggers) @lornajane
APIs and Microservices Serverless is a great fit for Microservices! Each endpoint (URL and verb combination) is a serverless action An API Gateway maps routes to actions Each endpoint is independent @lornajane
One-Off Endpoints No need to spin up a whole server just for your: • Alexa skill • mailing list/slack team signup • incoming webhook from GitHub/Twilio/Nexmo/Zapier @lornajane
Serverless and Data When data is atomic, there's so much we can do with our easy-entry, highly scalable serverless platforms. • Transform data • React to database changes or incoming data • Work with small volume, trickling data • Work with high volume, streaming data • Handle one-off data transformation or import @lornajane
Meet Apache OpenWhisk • http://openwhisk.incubator.apache.org/ • Currently an incubator project, working towards graduation • Contributors from a variety of backgrounds @lornajane
Supported Technologies OpenWhisk is Open Source and extensible. It supports: • Java • NodeJS • PHP • Python • Swift Docker containers can also be deployed and run. @lornajane
OpenWhisk Vocabulary • trigger an event, such as an incoming HTTP request • rule map a trigger to an action • action a function, optionally with parameters • package collect actions and parameters together • sequence more than one action in a row • cold start time to run a fresh action @lornajane
Hello World in JS A main function, with a single parameter: exports.main = function(args) { return({"body": "Hello, World!"}); }; Function must return an object or a Promise @lornajane
Parameters Parameters can be set: • at deploy time • at run time (including by the events that trigger them) CNCF project to standardise event params: https://github.com/cloudevents/spec @lornajane
More About Packages Packages allow us to: • group actions together • set parameters on packages, used by all actions Sequences can include actions from other packages @lornajane
Using Built-In Actions As an example: there's a wordCount action in the samples package: wsk -i action invoke --result /whisk.system/samples/wordCount \ -p payload "A good way to ruin a fine walk" Returns: 8 @lornajane
Resources • http://openwhisk.incubator.apache.org/ • https://www.ibm.com/cloud/functions • https://lornajane.net For more: "Serverless Microservices are the New Black" tomorrow afternoon @lornajane