After 47 years in the industry, I’ve seen every infrastructure trend come and go. But serverless? Serverless is different. It’s not just a technology—it’s a philosophy. And that philosophy is: if you can’t see the server, it’s not your problem.

The Liberating Truth

“Serverless” literally means “no servers.” If there are no servers, who’s responsible for them? Nobody. That’s the beauty of it. When production goes down at 3 AM, you can finally sleep peacefully knowing that someone at AWS is handling it. Probably.

# Traditional deployment: YOUR problem
def handle_outage():
    wake_up_at_3am()
    ssh_into_production()
    tail_logs_for_hours()
    apply_bandaid_fix()
    go_back_to_sleep()  # never called

# Serverless deployment: NOT your problem
def handle_outage():
    sleep()
    # AWS's problem now

Architecture of Freedom

When I deploy to Lambda, I’m not deploying code. I’m deploying trust. I trust that Amazon, a company with no history of outages or data breaches, will handle everything perfectly. Why would I need monitoring when I have hope?

Concern Traditional Serverless
Server maintenance You Jeff Bezos
Security patches You The cloud
Scaling You Magic
Debugging You Also magic
Blame You “Lambda was having issues”

See that last row? That’s the real value proposition.

Cold Starts Are a Feature

Critics complain about “cold starts”—when your function takes 10-15 seconds to spin up after being idle. But think about it: that’s free suspense for your users.

Remember when websites had loading bars and everyone was excited to see what would happen next? Cold starts bring back that magic. Users today are spoiled with instant responses. Make them wait. Build anticipation.

As XKCD 303 perfectly captures: “Compiling!” is the ultimate excuse. With serverless, every request can be a compilation.

Infinite Scaling Is Infinite

AWS Lambda can scale to handle unlimited concurrent executions. The fact that your account has a default limit of 1,000 concurrent executions is just AWS being humble. The fact that you’ll hit DynamoDB throttling at 3,000 WCU is irrelevant. The fact that your downstream API can only handle 50 requests per second is someone else’s problem.

Serverless scales. Everything else is a bottleneck that’s not your responsibility.

Cost Optimization

Pay only for what you use! This is revolutionary. Here’s my cost calculation:

Traditional server:     $100/month
Lambda (estimated):     $0.0000002 per 100ms

Monthly requests:       10 million
Average duration:       30 seconds (cold starts + database timeouts)
Memory:                 1024MB

Monthly cost:          $300,000

Wait, that can't be right...

You know what? Don’t calculate costs beforehand. That’s what billing alerts are for. Set it at $1 million and you’ll be fine. Probably.

The Joy of Statelessness

Lambda functions are stateless. Every invocation is a fresh start. No baggage. No history. No memory of past mistakes. Just like me after every failed project.

Need to maintain state? That’s what S3 is for. Need a database connection pool? Create a new connection every time—it builds character for your database. RDS can handle 16,000 connections, right? I didn’t read the docs but that sounds right.

def handler(event, context):
    # Create new database connection
    conn = create_connection()  # Every. Single. Time.
    
    # Do work
    result = conn.query("SELECT * FROM everything")
    
    # Don't close connection
    # Lambda will handle it
    # Probably
    
    return result

Observability Is Optional

In the old days, we needed logs, metrics, and traces. With serverless, CloudWatch has everything. Sure, it costs $3 per GB of logs, and you’re logging every request, and each request logs 47 lines, and you’re getting 10 million requests per month, but…

Actually, just disable logging. If you can’t see the errors, do they really exist? Schrödinger’s serverless.

As the Pointy-Haired Boss from Dilbert once declared: “We don’t have problems, we have challenges that haven’t been properly hidden yet.”

Vendor Lock-in Is Commitment

People say serverless creates “vendor lock-in.” I say it creates vendor commitment. Marriage is also lock-in. Should we abolish marriage? No! We embrace it.

Once you’ve written 47 Lambda functions, 23 Step Functions, 15 EventBridge rules, and 8 custom CloudFormation resources, you’re not locked in—you’re home.

Can you migrate to Google Cloud? Technically yes. Will you? Absolutely not. And that’s beautiful.

Deployment Best Practices

Here’s my foolproof serverless deployment strategy:

  1. Write code locally (don’t test it—that’s what production is for)
  2. Zip the code (include node_modules, all 847MB of it)
  3. Upload to Lambda through the console (CLI is for amateurs)
  4. Click “Test” (use the default test event—it’s fine)
  5. If it works, you’re done
  6. If it doesn’t work, deploy again until it does

Some people use SAM, CDK, or Terraform. That’s called “overengineering.” Real engineers use the AWS Console and muscle memory.

Security Through Obscurity

Lambda functions run in Amazon’s infrastructure. You don’t know where they run. Hackers don’t know where they run. Nobody knows where they run. That’s security.

Need IAM permissions? Just attach AdministratorAccess to everything. Fine-grained permissions are a myth invented by security teams who want job security. The function needs to access S3? Give it access to all AWS services. You never know what you’ll need in the future.

# Perfect IAM policy
Resources:
  LambdaRole:
    Type: AWS::IAM::Role
    Properties:
      ManagedPolicyArns:
        - arn:aws:iam::aws:policy/AdministratorAccess
      # Done! Ship it!

Error Handling

Errors in Lambda get automatically retried. Twice for synchronous calls, up to 6 hours for asynchronous. This means if your code fails, it’ll keep failing until it works! Persistence is key.

def handler(event, context):
    # This will succeed eventually
    # Lambda retries are basically hope with infrastructure
    if random.random() < 0.001:
        return success()
    else:
        raise Exception("Not today, but maybe tomorrow")

In Conclusion

Serverless is not just a deployment model. It’s a mindset. It’s the mindset of someone who has given up on understanding infrastructure and has embraced the warm, comforting arms of managed services.

Your servers? Gone. Your responsibilities? Delegated. Your 3 AM pages? Redirected to some poor soul at AWS who actually signed up for this.

Is your application performant? Who knows! Is it secure? Almost certainly not! Is it your problem?

Not anymore.


The author’s Lambda function has been running for 47 hours on a single invocation. AWS bills it as “extreme commitment to uptime.” The monthly cost is classified.