Skip to main content

☁️ Serverless

A taxi instead of owning a car

The Taxi Analogy

Owning a car:

  • Pay for car, insurance, gas, maintenance
  • Car sits idle most of the time
  • Still paying when not using it

Using a taxi/rideshare:

  • Pay when riding
  • No maintenance worries
  • Scale up instantly (order more cars)

Serverless is like using taxis. Run code without managing servers. Pay based on execution time and usage.


What Is Serverless?

You write function. Cloud runs it.

You don't:
  - Provision servers
  - Scale servers
  - Pay for idle time

You do:
  - Write code
  - Deploy code
  - Pay per execution

Cloud handles everything else.

The Name Is Misleading

"Serverless" doesn't mean no servers.
Servers exist, but YOU don't manage them.

Provider handles:
  - Hardware
  - OS patches
  - Scaling
  - Availability

You focus on code.

Key Characteristics

Event-Driven

Functions triggered by events:
  - HTTP request
  - File uploaded
  - Database change
  - Scheduled time
  - Message from queue

No event = Function not running = No cost.
No event often means no execution.

Auto-Scaling

1 request? 1 instance.
1000 requests? 1000 instances.

Automatically, instantly.
No configuration needed.

Pay Per Use

Traditional: Pay for server 24/7
  $100/month even if used 1 hour

Serverless: Pay for execution time
  Cost depends on provider, runtime, memory, and request volume

Huge savings for bursty workloads.

Serverless Providers

ProviderProductLanguage Support
AWSLambdaMany
Google CloudCloud FunctionsMany
AzureFunctionsMany
CloudflareWorkersJavaScript
VercelEdge FunctionsJavaScript

Use Cases

Great Fit

✓ APIs and webhooks
✓ Data processing (ETL)
✓ Scheduled tasks (cron)
✓ Event processing
✓ Bots and automation
✓ Variable traffic patterns

Not Great Fit

✗ Long-running processes
✗ High-performance computing
✗ Stateful applications
✗ Constant high traffic (becomes expensive)

Benefits

1. No Server Management

No patching. No scaling. No monitoring servers.
Focus on code, not infrastructure.

2. Cost Efficiency

Idle time = Free.
Low traffic apps become very cheap.

3. Instant Scaling

Spike from 10 to 10,000 users?
Handled automatically.
No planning required.

4. Faster Development

Deploy a function in minutes.
No infrastructure setup.
Rapid iteration.

Challenges

Cold Starts

Function hasn't run recently?
Cloud spins up new instance.
Takes time (from barely noticeable to a couple of seconds).

First request is slower.

Mitigating Cold Starts

- Keep functions warm (scheduled pings)
- Use provisioned concurrency
- Choose faster runtimes (Go, Rust)
- Reduce package size

Execution Limits

Typical limits:
  - Timeout: capped (varies by provider and configuration)
  - Memory: capped (varies by provider and configuration)
  - Payload: capped (varies by provider and trigger type)

Not for long-running processes.

Vendor Lock-In

Functions use provider-specific APIs.
Moving to another cloud requires changes.

Mitigate: Use abstraction frameworks (Serverless Framework).

Debugging

Can't SSH into a server.
Distributed execution.
Harder to trace issues.

Use: CloudWatch, distributed tracing.

Architecture Pattern

           ┌──────────────┐
           │   Trigger    │
           │  (HTTP/Event)│
           └──────┬───────┘
                  │
           ┌──────▼───────┐
           │   Function   │
           │  (Lambda)    │
           └──────┬───────┘
                  │
     ┌────────────┼────────────┐
     │            │            │
     ▼            ▼            ▼
┌─────────┐ ┌─────────┐ ┌─────────┐
│Database │ │ Storage │ │ Queue   │
│(DynamoDB)│ │  (S3)   │ │ (SQS)   │
└─────────┘ └─────────┘ └─────────┘

Serverless vs Containers

AspectServerlessContainers
ManagementNoneSome
ScalingAutomaticConfigure
ExecutionStatelessCan be stateful
StartupCold startTypically already running
PricingPer executionPer resource
Serverless: Maximum simplicity
Containers: More control

Often used together!

Common Mistakes

1. Too Large Functions

One function doing everything.
Slow deploys, hard to maintain.

Keep functions small and focused.

2. Ignoring Cold Starts

User-facing API with cold starts?
Bad user experience.

Warm critical functions.

3. Not Thinking Async

Waiting synchronously for slow operations.
Function timeout!

Use async patterns, queues.

4. Overusing for Everything

High, consistent traffic = Expensive.
Long-running processes = Timeout.

Choose right tool for job.

FAQ

Q: How much does serverless cost?

Depends on usage. Often nearly free for small projects. Calculate for your traffic.

Q: Can I run existing apps on serverless?

Sometimes. Usually requires refactoring to stateless, event-driven architecture.

Q: What about databases?

Use serverless databases: DynamoDB, Fauna, PlanetScale. Or: Manage connections carefully with traditional DBs.

Q: How do I test locally?

Tools like SAM (AWS), Docker emulation, or mock frameworks.


Summary

Serverless runs code without server management, scaling automatically, and typically charging based on execution (and sometimes other factors, depending on the provider).

Key Takeaways:

  • No server management
  • Event-driven execution
  • Auto-scaling
  • Pay per use (execution time)
  • Cold starts can affect latency
  • Often a good fit for event-driven, variable workloads
  • Not for long-running or high-constant-load

Serverless: Focus on code, not infrastructure!

Leave a Comment

Comments (0)

Be the first to comment on this concept.

Comments are approved automatically.