Build A Serverless Data Pipeline Lorna Mitchell, IBM
Slide 2
Stackoverflow Dashboard
@lornajane
Slide 3
Pipeline To Shift Data Bringing data from StackOverflow into the dashboard my advocate team uses
@lornajane
Slide 4
What is Serverless? Backend functions, deployed to the cloud, scaling on demand. Pay as you go.
@lornajane
Slide 5
The Serverless Revolution FaaS: Functions as a Service Developer focus: • the outputs • the inputs • the logic in between Charges are usually per GBsec @lornajane
Slide 6
Why Go Serverless? • Costs nothing when idle • Small application, simple architecture • Bursty usage since it runs from a cron • No real-time requirement • Easily within free tier
@lornajane
Slide 7
An Aside About Databases
@lornajane
Slide 8
Document Databases Store collections of schemaless documents, in JSON
@lornajane
Slide 9
Apache CouchDB Cluster of Unreliable Commodity Hardware • Modern, robust, scalable document database • HTTP API • JSON data format • Best replication on the planet (probably)
@lornajane
Slide 10
OfflineFirst Applications This app is OfflineFirst: • Client side JS • Client side copy of DB using PouchDB • Background sync to serverside CouchDB
@lornajane
Slide 11
Writing Serverless Functions
@lornajane
Slide 12
Serverless Platforms • Amazon Lambda • IBM Cloud Functions (aka OpenWhisk) • Twilio Functions • Azure Functions • Google Cloud Functions • … and more every week
@lornajane
Slide 13
Hello World in JS All the platforms are slightly different, this is for OpenWhisk exports.main = function(args) { return({“message”: “Hello, World!”}); };
Function must return an object or a Promise
@lornajane
Slide 14
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
Slide 15
Working With Actions Deploy code: zip hello.zip index.js bx wsk action update —kind nodejs:6 demo/hello1 hello.zip
Then run it: bx wsk action invoke —blocking demo/hello1
@lornajane
Designing for Serverless • Independent functions • single purpose • testable • distributable
@lornajane
Slide 19
Start with Security Need an API key or user creds for bx wsk tool Web actions: we know how to secure HTTP connections, so do it! • Auth standards e.g. JWT • Security in transmission: use HTTPS
@lornajane
Slide 20
Logging Considerations • Standard, configurable logging setup • Use a trace_id to link requests between services • Aggregate logs to a central place, ensure search functionality • Collect metrics (invocations, execution time, error rates) • display metrics on a dashboard • have appropriate, configurable alerting
@lornajane
Slide 21
Pipeline Actions Sequence socron • collector makes an API call, passes on data • invoker fires many actions: one for each item Sequence qhandler • storer inserts or updates the record • notifier sends a webhook to slack or a bot
@lornajane