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
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
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
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