
Serverless and the Loss of Control
The seductive promise of zero maintenance masks the catastrophic reality of cold starts and vendor lock-in.
The Seduction of Zero Maintenance
The promise of serverless architecture is intoxicating.
You write a function, deploy it, and never think about infrastructure again. No servers to provision, no operating systems to patch, no auto-scaling groups to configure. You only pay for the exact milliseconds your code is executing. It sounds like the ultimate evolution of cloud computing.
And for many workloads, it is. But serverless comes with a massive, often unstated cost: the total abdication of control.
"When you adopt serverless, you are not eliminating servers. You are simply renting a fraction of someone else's server, on their schedule, under their rules."
The Cold Start Reality
The most famous drawback of serverless is the "cold start." When a function hasn't been invoked recently, the cloud provider spins down the underlying container to save resources. When the next request hits, the provider must spin up a new container, load the runtime, and execute your code.
A request that normally takes 50 milliseconds suddenly takes 3 seconds.
For a background data processing job, a 3-second delay is irrelevant. For a user-facing API responding to a button click, a 3-second delay is a catastrophic failure of the user experience. You can mitigate cold starts with "provisioned concurrency" (paying to keep instances warm), but this immediately destroys the cost-saving premise of serverless.
The State Conundrum
Serverless functions are fundamentally stateless. They spin up, execute, and die.
If your application requires persistent connections—like WebSockets for a real-time chat application, or maintaining connection pools to a relational database—serverless becomes incredibly hostile. Every function invocation creates a new database connection. Under high load, 10,000 serverless functions will instantly exhaust your database connection pool, crashing your entire persistence layer.
The Vendor Lock-In
When you build a monolithic application in a Docker container, you can run that container on AWS, GCP, Azure, or a Raspberry Pi in your closet. You own the execution environment.
When you build a serverless architecture heavily reliant on AWS Lambda, DynamoDB, EventBridge, and API Gateway, you are permanently tethered to the AWS ecosystem. Moving to a different provider requires a total rewrite of your deployment architecture.
Serverless is a powerful tool for event-driven glue code and asynchronous processing. But treating it as the default architecture for core application logic is a dangerous surrender of control.

Kai Cyrus
Founder, Builder, Investor