Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Fun With Serverless Javascript

Fun With Serverless Javascript

Some Amazon Lambda, some Apache OpenWhisk and a little bit of Alexa mixed in

Avatar for Lorna Mitchell

Lorna Mitchell

May 31, 2017
Tweet

More Decks by Lorna Mitchell

Other Decks in Technology

Transcript

  1. The Serverless Revolution The big secret is: there ARE servers!

    It's not actually NoOps, just awesome container-based ops done by someone else :) @lornajane
  2. The Serverless Revolution Faas: Functions As A Service You focus

    only on: • the inputs • the outputs • the logic in between Charges are usually per GB/sec @lornajane
  3. When To Go Serverless • For occasional server needs (contact

    form on static site) • For very variable traffic levels (millions of IoT sensors) • To provide extra compute resource without extending existing platform (classic example: PDF generation) @lornajane
  4. Serverless Providers • Amazon have AWS Lambda • OpenWhisk is

    open source, also available on Bluemix • Google have Google Cloud Functions • Iron.io have a good functions offering • Microsoft have Azure Functions @lornajane
  5. Amazon Lambda • Install awscli command line tool (there is

    also a web interface) • Set up permissions via IAM and then use aws configure to get that set up • Write some JS, and zip it (for me: index.js -> hello.zip) @lornajane
  6. Amazon Lambda Create your lambda function by supplying the zip

    file and some options: aws lambda create-function \ --function-name hello1 \ --runtime nodejs6.10 \ --role "arn:aws:iam::283476131276:role/service-role/Alexa" --description "A demo first Lambda function" \ --handler index.handler \ --zip-file fileb://hello.zip @lornajane
  7. Amazon Lambda (if you want to edit your code and

    redeploy it) aws lambda update-function-code \ --function-name hello1 \ --zip-file fileb://hello.zip Run your lambda function: aws lambda invoke --function-name hello1 output.txt @lornajane
  8. Bluemix OpenWhisk Get the wsk CLI tool, and log it

    in using copied command from web interface Zip and deploy/update your code zip hello.zip index.js wsk action update --kind nodejs:6 \ demo/hello1 hello.zip @lornajane
  9. Bluemix OpenWhisk Run your action from the CLI: wsk action

    invoke --blocking demo/hello1 Enable web access, and web request your action: wsk action update demo/hello1 --web true curl https://openwhisk.ng.bluemix.net/api/v1/web/ \ Lorna.Mitchell_Working/demo/hello1.json @lornajane
  10. Alexa: Amazon Echo You speak, the device sends the sound

    to the cloud and speaks back the response it gets. @lornajane
  11. Example: Project Codename Based on: https://www.npmjs.com/package/project-name-generator "Alexa, ask Project Codename

    for a new project name" https://github.com/lornajane/alexa-project-codename @lornajane
  12. Project Codename: the Code function main(args) { var generate =

    require('project-name-generator'); var random = generate().spaced; var response = { "version": "1.0", "response" :{ "shouldEndSession": true, "outputSpeech": { "type": "PlainText", "text": "project codename. " + random } } } return(response); } exports.main = main; @lornajane
  13. Resources • Blog post: http://lrnja.net/2l9t1bX • Serverless framework: https://github.com/serverless/serverless •

    OpenWhisk on Bluemix: https://www.ibm.com/cloud-computing/bluemix/openwhisk • Serverless Architecture article: https://martinfowler.com/articles/serverless.html @lornajane