So You're Building Something Serverless. Here's What Nobody Tells You.
Reading Time: 5 minutes Vibe: Grabbing coffee with a friend who happens to build cloud stuff for a living
Let's Be Real
Serverless sounds amazing. You just write code, hit deploy, and magic happens. No servers. No ops. Just pure functionality.
And then you try it. And your first user waits five seconds for a cold start. Or your function times out after fifteen minutes. Or your cloud bill arrives and you choke on your coffee.
Here's the thing: "Serverless" isn't one thing.
There's AWS Lambda serverless (the one where AWS does everything for you). And there's serverless on Kubernetes (the one where you have more control but also more responsibility).
And the programming language that works beautifully on one will absolutely wreck you on the other.
Let me show you what I mean using five real projects you might actually build.
Project 1: The Little Bot That Checks Things Once an Hour
What it is: A tiny thing that wakes up every hour, checks a database, and posts a message to Slack. That's it. It sleeps the rest of the time.
What actually happens when you run it: Nothing for 59 minutes. Then it springs to life for two seconds. Then back to sleep.
The smart move: Put this on AWS Lambda. Write it in Python or Node.js.
Why: Because cold starts don't matter much here. A few hundred milliseconds of delay? Who cares. The bot is just sending a Slack message.
What people get wrong: Someone says, "Let's use Rust for performance!" Rust is incredible. But for a bot that runs two seconds per hour? You will never notice the difference. You will, however, struggle to find another Rust person when this one moves on.
The real truth: Use the simple thing. Save the fancy tools for harder problems.
Project 2: The Checkout Page That Gets Hammered Every Monday Morning
What it is: An online store checkout. Most of the week it's quiet. But every Monday at 9am, ten thousand people all click "buy" at the same time. If the page takes more than a quarter second to respond, people leave and buy somewhere else.
What actually happens when you run it: At 8:59am, zero functions are running. At 9:00am, the flood hits. The first few users trigger cold starts. They wait. Some of them bounce.
The smart move: AWS Lambda again, but with Node.js instead of Python.
Why: Node.js wakes up faster. We're talking 50ms vs 200ms. That difference matters for the first user on Monday morning.
What people get wrong: A data person says, "I love pandas, let's use Python!" Pandas is great for analysis. But loading it adds half a second to startup. Your first Monday user times out. You lose that sale.
The real truth: Cold starts are invisible until they cost you money. Then they're all you think about.
Project 3: The Video Processor That Runs for Two Hours Straight
What it is: A platform where people upload 4K videos. Your system compresses them, adds a watermark, and generates a thumbnail. Each video takes anywhere from twenty minutes to two hours to process.
What actually happens when you run it: AWS Lambda has a hard timeout at fifteen minutes. Your two-hour job just dies halfway through.
The smart move: Serverless on Kubernetes (using something like Knative or OpenFaaS). This lets you run functions that take hours. It also lets you attach GPUs if you need them for faster video encoding.
Why: Because fifteen minutes isn't enough. You need hours. Kubernetes doesn't care how long you take.
What people get wrong: Someone says, "Let's rewrite the video encoder in Rust for maximum speed." No. FFmpeg has been optimized by hundreds of people over thirty years. You are not beating it. Just call FFmpeg from whatever language you like.
The real truth: Sometimes the right tool is the boring one that just works.
Project 4: The Fraud Detector That Needs to Answer in Milliseconds
What it is: A payment processor that checks every transaction against fifty business rules, three external APIs, and a cache. It needs to answer "fraud or not fraud" in under 80 milliseconds. Banks get audited on this. Regulators care.
What actually happens when you run it: You have 200,000 lines of existing Java code full of complex rules. You cannot rewrite that. But standard Java takes 8 seconds to start up. Your first transaction of the day will time out.
The smart move: Serverless on Kubernetes, but with a special version of Java called GraalVM. It compiles your Java code into a native binary that starts in 150 milliseconds instead of 8 seconds.
Why: Because you get to keep your existing code. No rewrite. No six-month project. Just a faster way to run what you already have.
What people get wrong: "Let's just use standard Java on Kubernetes." Standard Java takes 8 seconds to start. Your fraud detector will miss the first few transactions of every scale-up event. That's real money lost to fraud.
Another wrong move: "Let's rewrite everything in Go." That's a six-month project with high risk of breaking the business rules. Your team will hate you.
The real truth: Modernizing is often better than rewriting. Keep the working code. Just make it start faster.
Project 5: The Factory Sensor That Lives on Almost No Memory
What it is: A tiny computer inside a factory. A thousand sensors send data every tenth of a second. The computer validates the data, aggregates it, and forwards it to the cloud. The whole computer has only 4GB of RAM total.
What actually happens when you run it: Every millisecond matters. Garbage collection pauses are unacceptable. Memory is incredibly tight.
The smart move: Serverless on lightweight Kubernetes (like K3s) running at the edge. Written in Rust.
Why: Rust uses almost no memory. It has no garbage collection pauses. It starts instantly. It was basically built for this scenario.
What people get wrong: "I know Python, I can learn Rust on the job." Rust has a brutal learning curve. It takes six months to get truly productive. Your factory can't wait six months.
The real truth: Rust is amazing but hard. Hire someone who already knows it. The learning curve is real.
The Cheat Sheet — Staffing by Application
| Application | Platform | Language | Job title | Difficulty | Tip |
|---|---|---|---|---|---|
| Slack bot / cron job | AWS Lambda | Python | Backend Generalist | Easy | Hire junior, train fast |
| E-commerce checkout | AWS Lambda | Node.js | Node Backend | Medium | Look for e-commerce experience |
| Video transcoding | FASS on K8s | Go / Node | Platform Engineer | Medium | Prioritize K8s skills over language |
| Fraud detection | FASS on K8s | GraalVM Java | Senior Java (GraalVM) | Hard | Post with "native image" in title |
| Edge IoT processor | FASS on K8s | Rust | Systems / Rust Engineer | Very Hard | Budget 2 months, hire remote |
So How Do You Think About Your Own Project?
Ask yourself one question:
"When this thing wakes up from zero, how fast does it need to be?"
If the answer is "a couple hundred milliseconds is fine" → You're in AWS Lambda land with Python or Node.js. This is most projects. Life is good. Keep it simple.
If the answer is "under 100ms, but I have existing Java code" → You're in GraalVM on Kubernetes territory. You can keep your code. You just need to run it smarter.
If the answer is "under 10ms and I have 4GB of RAM total" → You're in Rust on edge Kubernetes land. Bring a systems person. This is the hard stuff.
If the answer is "I don't care, it runs for two hours" → You're in the "anything goes" zone. Pick whatever language you like. Just make sure your platform doesn't time out.
Platform & Language Picker
If your project is… use this table to choose your platform and language.
| If your project is… | Use this platform | Hire this language | Avoid this language |
|---|---|---|---|
| A Slack bot that wakes up once an hour | AWS Lambda | Python / Node.js | Java (JVM) |
| Real-time fraud detection (Banking) | FASS on K8s | GraalVM Java | Python |
| Video transcoding (2-hour jobs) | FASS on K8s | Any ( Rust / Node) | Python (slow I/O) |
| Spiky e-commerce checkout API | AWS Lambda | Node.js | Rust (overkill) |
| Edge IoT device data processor | FASS on K8s | Rust | Java (too heavy) |
| Existing Spring Boot app migration | FASS on K8s | GraalVM Java | Python (rewrite risk) |
The One Thing I Wish Someone Had Told Me Earlier
Most projects are the first one. The Slack bot. The simple API. You can use Python or Node.js on Lambda and be totally fine.
But the projects that fail—the fraud detectors that miss transactions, the edge devices that run out of memory, the checkout pages that time out on Monday morning—those fail because someone treated them like the first project.
They used the simple tool for a hard problem. They didn't think about cold starts. They didn't realize their language choice mattered.
Match the tool to the problem. Not to what's popular.
Last Thought
If you're building something, start by asking how it behaves when no one is using it.
Does it sleep? Does it wake up fast? Does it need to be warm all the time?
The answers to those questions will tell you more than any blog post about which language is "best."
Now go build something cool.
Table of Contents
- Let's Be Real
- Project 1: The Little Bot That Checks Things Once an Hour
- Project 2: The Checkout Page That Gets Hammered Every Monday Morning
- Project 3: The Video Processor That Runs for Two Hours Straight
- Project 4: The Fraud Detector That Needs to Answer in Milliseconds
- Project 5: The Factory Sensor That Lives on Almost No Memory
- The Cheat Sheet — Staffing by Application
- So How Do You Think About Your Own Project?
- Platform & Language Picker
- The One Thing I Wish Someone Had Told Me Earlier
- Last Thought
Trending
Table of Contents
- Let's Be Real
- Project 1: The Little Bot That Checks Things Once an Hour
- Project 2: The Checkout Page That Gets Hammered Every Monday Morning
- Project 3: The Video Processor That Runs for Two Hours Straight
- Project 4: The Fraud Detector That Needs to Answer in Milliseconds
- Project 5: The Factory Sensor That Lives on Almost No Memory
- The Cheat Sheet — Staffing by Application
- So How Do You Think About Your Own Project?
- Platform & Language Picker
- The One Thing I Wish Someone Had Told Me Earlier
- Last Thought