Slide 1

Slide 1 text

Get Going with Serverless @goserverless serverless.com a walkthrough building serverless apps using the Serverless Framework Atlanta

Slide 2

Slide 2 text

Rupak Ganguly enterprise solutions architect [email protected] @rupakg

Slide 3

Slide 3 text

Serverless Inc. serverless.com

Slide 4

Slide 4 text

the serverless team

Slide 5

Slide 5 text

Get Going with Serverless a walkthrough building serverless apps using the Serverless Framework • Introduction to serverless computing • What is the Serverless Framework? • Setting up the Serverless Framework • Deploying your first app with Lambda & API Gateway • Anatomy of a Serverless App We will look at:

Slide 6

Slide 6 text

Serverless Computing myths, benefits and qualities

Slide 7

Slide 7 text

serverless definition serverless: though servers exists, the developer does not have to think about them

Slide 8

Slide 8 text

faas providers AWS Lambda Azure Functions Google Cloud Functions IBM Cloud Functions

Slide 9

Slide 9 text

microservices zero administration FaaS pay-per-execution ecosystem auto-scaling event-driven serverless computing FaaS qualities

Slide 10

Slide 10 text

zero administration • no servers to maintain • no OS upgrades, no patches • renewed role of devops teams • paradigm shift, no ssh • no control over infrastructure

Slide 11

Slide 11 text

pay-per-execution • no paying for idle • upfront cost savings • micro-billing, per 100 ms * • 1 million requests free tier * • $0.20 per million requests post free tier * * AWS Lambda pricing

Slide 12

Slide 12 text

microservices • promotes single responsibility principle based services • no more death stars, monolithic apps • varied language support • small, autonomous, polygot teams • agility, quick & frequent deployments

Slide 13

Slide 13 text

ecosystem • use provider services • use of third-party services • S3, Kinesis, SNS, SQS • DynamoDB, Firebase, GraphQL • Cognito, Auth0, Synk, PureSec • CloudWatch, X-Ray, IOPipe

Slide 14

Slide 14 text

auto-scaling • auto scaling Lambda • auto scaling DynamoDB • based on load, throughput consumption • no need for auto-scaling group policies • enables high-availability

Slide 15

Slide 15 text

event-driven • trigger & respond to events • http events (API Gateway) • webhook events • scheduled events • rich ecosystem of event sources

Slide 16

Slide 16 text

serverless architecture

Slide 17

Slide 17 text

security • Scrutinize and research before attaching new input/event sources • Keep the functions’ permissions least privileged and maintain a least privileged build system • Amount of code that can access sensitive data be reduced, exceptions are handled and input is validated • Avoid embedding secrets and access keys in code • Do not store access keys or credentials in source code repositories • Throttle and define quotas on the amount of requests that go through • Keep data encrypted that is stored at rest • Scrutinize and keep tab on third party API services for vulnerabilities • Scan third party libraries for potential vulnerabilities and try to keep them up-to-date • Carefully examine granting permissions that allow creation, modification or removal of the resources guidelines & recommendations

Slide 18

Slide 18 text

serverless use cases • real-time/streaming, batch processing: kinesis -> lambda • REST APIs, Graph APIs: lambda -> API Gateway endpoint • event-driven workflows, scheduled tasks, data transforms • web, mobile & IoT backends • form processing • authentication • devops automation • chatbots • file manipulation • voice apps (Alexa) • ETL workloads • image resizing • video transcoding • security audits • dynamic websites • web hook listeners • CRON jobs • CI/CD pipelines • log analytics what are others building

Slide 19

Slide 19 text

serverless challenges • cold start latency, more with VPC • price at high volumes • developer experience • limitations • fear of vendor lock-in • application lifecycle management • metrics and monitoring • service discovery • team collaboration • standardization it’s not all rosy

Slide 20

Slide 20 text

What is Serverless Framework? an easy way of packaging, deploying and managing serverless applications

Slide 21

Slide 21 text

the serverless framework • open-source cli, written in nodejs, used by many • provider agnostic, abstraction layer • serverless.yml: configuration file, maps handlers to functions to events • provider, functions, events, code and resource mgmt. • plugin system to extend and hook into life-cycle events the easiest way to serverless

Slide 22

Slide 22 text

app creation using AWS web UI

Slide 23

Slide 23 text

easy workflow using the serverless framework write functions code package & deploy cloud provider of choice via serverless framework (cli)

Slide 24

Slide 24 text

Introducing The Serverless Framework

Slide 25

Slide 25 text

pre-requisites • Node Package Manager (npm) • NodeJS 6.10 or later installed

Slide 26

Slide 26 text

installing $ npm install -g serverless installs the serverless framework package globally the serverless framework * NodeJS 6.10 or later needs to be installed $ serverless version $ serverless (displays the help screen with list of commands)

Slide 27

Slide 27 text

configuring $ serverless config credentials -p aws -k -s where, -p, specifies ‘aws’ as the provider -k, specifies the AWS access key -s, specifies the AWS secret provider credentials

Slide 28

Slide 28 text

Building a Serverless App creating & deploying your first hello world app from scratch

Slide 29

Slide 29 text

creating $ serverless create --template hello-world --path atl-hello—sls Serverless: Generating boilerplate... Serverless: Generating boilerplate in "/Users/rupakg/projects/usergroups/atl-hello-sls" _______ __ | _ .-----.----.--.--.-----.----| .-----.-----.-----. | |___| -__| _| | | -__| _| | -__|__ --|__ --| |____ |_____|__| \___/|_____|__| |__|_____|_____|_____| | | | The Serverless Application Framework | | serverless.com, v1.23.0 -------' Serverless: Successfully generated boilerplate for template: "hello-world" the hello world project

Slide 30

Slide 30 text

deploying the hello world app Serverless: Packaging service... Serverless: Excluding development dependencies... Serverless: Creating Stack... Serverless: Checking Stack create progress... ..... Serverless: Stack create finished... Serverless: Uploading CloudFormation file to S3... Serverless: Uploading artifacts... Serverless: Uploading service .zip file to S3 (404 B)... Serverless: Validating template... Serverless: Updating Stack... Serverless: Checking Stack update progress... ................................. Serverless: Stack update finished... Service Information service: atl-hello-sls stage: dev region: us-east-1 stack: atl-hello-sls-dev api keys: None endpoints: GET - https://js19nmdaa0.execute-api.us-east-1.amazonaws.com/dev/hello-world functions: helloWorld: atl-hello-sls-dev-helloWorld Serverless: Publish service to Serverless Platform... Service successfully published! Your service details are available at: https://platform.serverless.com/services/rupakg/atl-hello-sls $ sls deploy

Slide 31

Slide 31 text

Anatomy of a Serverless App deep dive into a serverless app

Slide 32

Slide 32 text

listing the project files $ cd atl-hello-sls handler.js serverless.yml where, handler.js, contains the code for functions serverless.yml, contains the configuration

Slide 33

Slide 33 text

analyzing serverless.yml config file

Slide 34

Slide 34 text

analyzing handler.js code file

Slide 35

Slide 35 text

automagic deployment behind the scenes • package code into a zip file • create CloudFormation template from configuration for deployment • upload zip file and CloudFormation to S3 • validate CloudFormation template • create API Gateway endpoints and resources • finish deploying app and return app url

Slide 36

Slide 36 text

Development Workflow steps to developing a serverless app

Slide 37

Slide 37 text

features $ serverless --help create deploy | deploy function deploy list | deploy list functions info invoke | invoke local remove | rollback | rollback function logs | metrics common cli commands

Slide 38

Slide 38 text

workflows $ sls create # write code $ sls deploy # update function code $ sls deploy function $ sls info $ sls deploy list functions $ sls logs $ sls metrics common scenarios # add new functions $ sls invoke local $ sls deploy function $ sls invoke $ sls deploy list $ sls rollback $ sls logs $ sls metrics $ sls remove * sls --help, to see all available commands

Slide 39

Slide 39 text

resources • Serverless Framework: https://github.com/serverless/serverless • Blog: https://serverless.com/blog • Serverless Guide: https://github.com/serverless/guide • Plugins: https://github.com/serverless/plugins • Examples: https://github.com/serverless/examples • Companion Post: https://serverless.com/blog/anatomy-of-a-serverless-app/ @goserverless serverless.com further reading

Slide 40

Slide 40 text

Q & A

Slide 41

Slide 41 text

Raffle https://raffle.serverless.com/a07e8f52 sign up to win Amazon Gift Certificate(s) * Need to be present to win prizes

Slide 42

Slide 42 text

it’s a wrap thank you for coming @goserverless serverless.com