01
03
04
05
07
08
09
10
What Is Serverless ?
Use cases
Patterns.
Communication Patterns.
Key Benefits of Serverless.
How does Functions-as-a-service
work?
Key Considerations and best practices.
Introduction
Agenda
02 Brief of Cloud Computing
06 Serverless Application & AWS Lambda
3
Traditional way to
provide the
infrastructure
Data
Center
Provides CLI or API to
manage
infrastructure(AWS
EC2)
IAAS
Provides infrastructure
bases on developed
application (AWS
Beanstalk)
PAAS
Provides infrastructure
on demand when the
FaaS provider receive
the request(AWS
Lambda)
Serverless
Brief History of Cloud computing.
4
No Server provision or manage
Scale with Usage
Never Pay for Idle
High Availability and fault tolerance built in
What is Serverless ?
Serverless is new set of emerging practices that'll change the way we build the application, it
brings more agility, cuts cost and enables more efficient application development. This seems like
a real fundamental shift the way we are building out application.
How does Functions-as-a-service Works?
/users
/orders
/catalogue
Host Instance Application
FaaS Platform
/users
/orders
/catalogue
/users
Traditional Computing Serverless Computing
Request: Many To One Instance
Instance
Request: One To One
6
01
02
03
04
05
06
New Feature
Product engineers can innovate rapidly as serverless architecture has alleviated the problems of system engineering.
Thus, you spend less time on operational issues and can release new feature faster.
Pay for Use
With serverless, you only pay for what you use, there are no hardware costs and no costs when your services are not in
use, and you get away not paying anything when the application is not in use.
Deployment Package
Simplifies deployment and packaging, which eliminates the complex build and deploy process.
Resilience and Flexibility
Because Serverless is stateless, it is highly resilient when under load and in sub-optimal execution conditions.
Developer productivity
Smaller code, agile development and enables the developers to concentrate on code and deliver quickly.
No Server to provision
Eliminates the need of estimating what type of, and how many, resources our application requires also the process of
acquiring machine instances and setting them up ready for deployment
Key Benefits of Serverless Computing
7
Serverless Application
Event Source Function Service
Changes in
data state
Changes in
Resources
state
Request to
end points
Node.js
Python
Java
C#
Go
Ruby
Runtime
API
Database
External endpoint
8
Anatomy of AWS Lambda Function
Handler Function Event Object Context Object
Function to be executed
upon invocation
Data sent during Lambda
function invocation
Method available to interact
with runtime
information(request ID, log
group, more)
exports.handler = (event, context, callback) => {
// TODO implement
console.log("context object details");
console.log(JSON.stringify(context));
callback(null, “test response');
};
10
Design Pattern : API implementation
{….} https Endpoint
CloudWatch
Cognito(IDM)
/booking
IDM
MDM
Booking
API Gateway Service Database
11
Design Pattern : Microservice Integration
{….} https Endpoint
Lambda
API Gateway
Amazon MQ
RDS
/payment
/orders
/loyalty
{….}
https private
Endpoint
{….} third party
https Endpoint
API Layer
Source System Message Broker & Listener Target System
12
Design Pattern : Batch Job
Cloud Watch
Alarm
(time based) Step Functions
S3
/sendMail
Sendgrid
Lambda invoked when
scheduled time occurs
Scheduled Processor Internal Service
13
BACKENDS
• Apps & services.
• Mobile
• IoT
DATA PROCESSING
• Real Time
• Map Reduce
• Batch
VOICE ENABLED SERVICES
• Powering Voice Enabled
Apps.
• Alexa Skill Kit
IT AUTOMATIONS
• Policy Engines
• Extending AWS
Services.
• Infrastructure
Management
WEB APPLICATIONS
• Static Web sites.
• API development
• API Integration
CHAT BOTS
• Powering chat bots.
Use cases
14
1. Mono Repo 2. Repo per function
3. Repo per Group
/users
/orders
1. Key Consideration : Repository Structure
One Group of repo
should not have more
then 25 to 30 function
No Repo per function and
pipeline
Group the application
in function close to
functionality.
No mono repo.
1
2
3
4
15
Download code
and
dependency
Create, setup
and start
new container
Runtime
Bootstrapped
Code execution
2.a Key Consideration : Cold Start
The Request Life Cycle
AWS Provider Optimization Dev team Optimization
Cold Start Time
Warm Start Time
Request Execution time
16
Memory size
If you increase the memory, you will also get
more CPU, this memory balancing approach
will help to faster the start up time.
Runtime
Scripting languages (Python, Java script) perform
a lot better in startup time in comparison to
compiled runtimes (Java, .NET, C#).
Code package size
The larger the size, the more time it takes to
spin up a new container, avoid unnecessary
third-party libraries
Application initialization
If application is performing any task at startup, it will
add to cold start, try to load the resources lazily.
2.b Key Consideration : Cold Start Improve Startup Latency
17
• Minimize your package
size.
• There is a hard limit of
50MB for compressed
deployment package.
Application Package Size
• Put your dependency(e.g.
jar files) in a separate
directory.
• An uncompressed(Layer)
AWS Lambda hard limit of
250MB.
Lambda Layer
• Stop reaching for 3rd
party dependencies and
rather build your own
serverless library.
3rd party dependencies
3. Key Consideration : Application Package and Dependency management
18
API Gateway should have
mapping of error code to avoid
CORS error.
API Gateway Error Mapping
Follow the proper HTTP error
code.
Http Error Code
AWS API Gateway has a 29
second hard limit of timeout. Use
short timeout limits. set them at
3-6 seconds for API calls
API Gateway Timeout
Use global exception handler in
your code and do not allow
exception to propagate outside
of Lambda handler.
Global Exception Handling
Request and response
(synchronous calls) body
payload size can be up
to 6 MB.
Pay Load Size
Lambda time out limit is 15
minute, so do not perform long
job.
Lambda Timeout
4. Key Consideration : Exception Handling and timeout
19
S
START UP
TIME
• Minimize the complexity of your
dependencies.
• Choose interpreted languages like Node.js or
Python over languages like Java and C# if
cold start time is affecting user experience.
M
MEMORY
BALANCING
• Lambda costing depends on both memory
allocation and execution time. If we need to
reduce the Lambda execution time, one can
try increasing memory (and by extension,
CPU) to process it faster
C
CODE
OPTAMIZATION
• Store and reference external configurations
and dependencies locally after first
execution.
• Avoid memory intensive or iteration of
large data set.
R
RE-USE LAMBDA
CONTAINERS
• Cache reusable resources.
• Limit the re-initialization of variables/objects
on every invocation. Instead use static
initialization/constructor, global/static
variables and singletons.
5. Key Consideration : Performance
20
• Do not store secrets in
application code, environment
variables or in a source code.
• For sensitive information,
utilize a secret storage that
enables both runtime access,
as well as easy and routine
key rotation.
Manage secrets in secure
storage
• Offloading authentication
concerns from your functions
core business logic
• DDOS protection, traffic
throttling and rate limiting.
API gateways as a
security buffer
• Avoid globally defined roles
and resource access
permissions for functions.
• Minimize access rights to
resources for functions using
fine-grained permissions for
each function
Adopt Least privilege
• Audit and monitor how and
what functions are accessing
to ensure no illegal
paths are taken, and monitor
security vulnerabilities in
functions.
• Implement central logging
system to gain better
observability.
Monitor and log functions
6. Key Consideration : Security