Cold starts are real. But they're often blamed for performance problems they didn't cause, and fixed with solutions that create bigger problems.
Cold starts are one of the most discussed serverless trade-offs. They're also one of the most misunderstood. In production systems, we've seen Lambda cold starts blamed for latency problems that turned out to be unoptimized database queries, and we've seen teams spend weeks on provisioned concurrency for workloads where cold starts weren't the bottleneck.
When Lambda has no warm execution environment available, it must: download and unzip your deployment package, start the language runtime (JVM, Node.js, Python, etc.), run your initialization code (imports, database connections, SDK clients), and then execute your handler.
The time this takes varies dramatically by runtime. Node.js and Python cold starts are typically 100–500ms for a well-optimized function. Java with Spring Boot can be 5–15 seconds without optimization. This is the reason we recommend Node.js or Python for latency-sensitive serverless applications.
User-facing APIs where p99 latency is part of the SLA
Synchronous workflows where cold starts compound across multiple Lambda invocations
Spiky traffic patterns with long idle periods between bursts
Java/C++ runtimes where initialization time is measured in seconds, not milliseconds
Book a free 30-minute call. You'll leave knowing what we'd do first and roughly what it costs, whether or not you hire us.
Async workloads: SQS consumers, S3 event processors, EventBridge handlers — a few hundred ms of initialization is irrelevant
High-traffic APIs: with steady traffic, almost all invocations hit warm environments
Internal/background jobs where human users aren't waiting
Node.js/Python functions with lean dependency trees — cold starts are often under 200ms
Before anything else: reduce package size (tree-shaking, excluding dev dependencies), move SDK client initialization outside the handler (initialized once per warm container), and lazy-load expensive modules. A function that went from 50MB to 5MB and moved its DB connection pool outside the handler can drop cold start time by 60–80%.
If you're starting fresh and cold start performance matters: Node.js or Python. If you must use Java, Lambda SnapStart (for Java 21) dramatically reduces initialization time by snapshotting a restored execution environment.
Provisioned Concurrency keeps a specified number of execution environments pre-initialized. It works, but it costs money — you pay for the provisioned environments continuously, not per-invocation. Use Application Auto Scaling to provision based on a schedule (e.g., scale up before business hours, down at night) to reduce cost.
CloudWatch Lambda Insights provides cold start metrics out of the box. Track: cold start frequency (what % of invocations are cold), cold start duration (p50, p95, p99), and — critically — what happens to those p99 end-to-end latencies. If cold starts are 2% of invocations and p99 latency meets your SLA, they're not your problem.
Once a month: what changed in tech that month and what it means for you, from cloud and AI to security and the tools you build with. Every item links to its source. No sales pitch, unsubscribe in one click.
Book a free 30-minute call about it. Bring your setup and your bill; you'll leave knowing what we'd do first and roughly what it costs, whether or not you hire us.
Or keep reading
AWS in 2027: Every Deadline Already on the Calendar
Lambda's update block, EKS versions, RDS Extended Support price steps, Bedrock model retirements, the end of Python 3.11, Node.js 22 and PHP 8.3, and the EU's Cyber Resilience Act and AI Act dates: every 2027 deadline we could verify, month by month, with what each costs if missed.
Read
WebSockets on Vercel Functions Are Generally Available: The Limits, the Bill, and What You Still Build
Since October 20, 2026, Vercel Functions serve WebSocket connections on every plan, with Express, Hono, Socket.IO, Bun, FastAPI and Next.js. Connections close at the function's maximum duration (300 seconds on Hobby, up to 800 on Pro), each is pinned to one instance, and memory is billed while any connection is open. What that means for your design and your bill.
Read
As of November 20, 2024. Provided as is, for general information, and accurate to the best of our knowledge on the date shown. Not legal, compliance, tax, financial or other professional advice. Prices, limits and vendor services change; check current vendor documentation before relying on anything here. Terms of use.