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

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