Cloud computing has evolved dramatically over the last decade.
The journey looked something like this:
Physical Servers
↓
Virtual Machines
↓
Containers
↓
Serverless Computing
One of the biggest innovations in cloud computing is AWS Lambda.
Instead of managing:
- Servers
- Operating Systems
- Patching
- Scaling
- Capacity Planning
You simply upload code and AWS runs it.
This is the foundation of Serverless Computing.
What is AWS Lambda?
AWS Lambda is a serverless compute service that allows you to run code without provisioning or managing servers.
You upload a function and AWS executes it whenever an event occurs.
Example:
User Uploads Image
↓
S3 Event Triggered
↓
Lambda Function Runs
↓
Image Processed
You only pay for execution time.
No execution means:
No Cost
Why AWS Introduced Lambda
Before Lambda, deploying applications looked like this:
Provision EC2
↓
Install Runtime
↓
Deploy Application
↓
Monitor Servers
↓
Scale Infrastructure
↓
Patch OS
Even small applications required infrastructure management.
AWS wanted developers to focus on:
Business Logic
Instead of:
Infrastructure Management
Thus Lambda was introduced in 2014.
What is Serverless?
Serverless does NOT mean servers don't exist.
Servers still exist.
AWS manages them for you.
Instead of:
You Manage Servers
Lambda provides:
AWS Manages Servers
You Manage Code
Example:
API Gateway
↓
Lambda
↓
DynamoDB
Benefits of AWS Lambda
1. No Server Management
No:
- EC2
- OS updates
- Capacity planning
2. Automatic Scaling
AWS automatically scales functions.
1 Request
↓
1 Lambda Instance
1000 Requests
↓
1000 Lambda Instances
3. Pay Per Use
You only pay for:
Requests
+
Execution Duration
4. Event Driven
Lambda reacts to events.
Examples:
- API requests
- S3 uploads
- SNS notifications
- SQS messages
- DynamoDB streams
5. High Availability
AWS automatically distributes Lambda execution across Availability Zones.
Supported Programming Languages
AWS Lambda supports multiple runtimes.
Python
Popular for:
- Automation
- AI/ML
- Data processing
Example:
import json
def lambda_handler(event, context):
# TODO implement
return {
'statusCode': 200,
'body': json.dumps('Hello from Lambda!')
}
Node.js
Popular for:
- APIs
- Web applications
Java
Popular for:
- Enterprise workloads
.NET
Popular for:
- Microsoft environments
Go
Popular for:
- High performance
- Fast startup
Custom Runtime
Using Custom Runtime API, you can run:
- Rust
- PHP
- Other languages
Lambda Function Components
Every Lambda contains:
Function Code
Your business logic.
Runtime
Language execution environment.
Example:
Python 3.12
Node.js 20
Java 21
Handler
Entry point of Lambda.
Example:
lambda_handler(event, context)
AWS invokes this function.
Event
Input to the Lambda.
Example:
{
"bucket": "images"
}
Context
Runtime information.
Contains:
- Request ID
- Timeout
- Memory
Lambda Execution Lifecycle
Request Arrives
↓
Environment Created
↓
Function Runs
↓
Response Returned
Understanding Cold Starts
One of the most important Lambda concepts.
Cold Start
When Lambda has no running execution environment:
Request Arrives
↓
Create Environment
↓
Load Runtime
↓
Execute Function
Extra startup time occurs.
Warm Start
If environment already exists:
Request Arrives
↓
Execute Function Immediately
Faster response.
What is Concurrency?
Concurrency means:
How Many Functions
Can Run Simultaneously
Example:
100 Requests
↓
100 Concurrent Executions
Reserved Concurrency
Reserve capacity for critical workloads.
Example:
Payment Function
Reserved = 100
Always guaranteed.
Provisioned Concurrency
Used to eliminate cold starts.
AWS keeps execution environments warm.
Useful for:
- APIs
- User-facing workloads
What is Lambda Scaling?
Lambda automatically scales horizontally.
1 Request
↓
1 Environment
10000 Requests
↓
10000 Environments
No manual scaling required.
What is a Lambda Layer?
One of the most important Lambda concepts.
Lambda Layers allow sharing code across multiple functions.
Without Layers:
Function A
└─ boto3
Function B
└─ boto3
Function C
└─ boto3
Duplication occurs.
With Layers
Layer
└─ boto3
Function A
Function B
Function C
All functions share the same dependency.
Why Lambda Layers Matter
Benefits:
- Smaller deployment packages
- Reusability
- Easier maintenance
- Faster deployments
Common Layer Use Cases
Python Libraries
numpy
pandas
requests
Monitoring Agents
Datadog
New Relic
OpenTelemetry
Lambda Storage Options
Temporary Storage
/tmp
Default:
512 MB
Can be increased.
Amazon S3
Persistent object storage.
Used for:
- Files
- Images
- Backups
Amazon EFS
Network file system for Lambda.
Useful for:
- Shared storage
- Large datasets
Event Sources for Lambda
API Gateway
User Request
↓
API Gateway
↓
Lambda
Most common pattern.
Amazon S3
File Uploaded
↓
Lambda Triggered
Lambda and VPC
By default:
Lambda
↓
AWS Managed Network
For private resources:
Lambda
↓
VPC
↓
RDS
Lambda can connect to:
- RDS
- ElastiCache
- Private APIs
Lambda with RDS
Common architecture:
API Gateway
↓
Lambda
↓
Aurora MySQL
Challenges:
- Connection management
- Database scaling
Solution:
RDS Proxy
Lambda Monitoring
CloudWatch Logs
Automatically captures:
- stdout
- stderr
