A younger coworker told me that aws lambdas are cheap and we should use sns to spin up an entire aws lambda to have the server wait on an aws lambda while the lambda waits for a database. Are you kidding?
My suggestion was then compared to using assembly language to program the entire process as if my suggestion was completely absurd. Was I being trolled or are young programmers just drunk with over architecting everything?
How common is it for there to be architecture at companies where servers are triggering lambdas only to have the lambda wait on a database call?
Not to mention they wanted this to be an entirely new repo that held async tasks with a new deployment infra. "Microservices and proper architecture" they called it. Seriously? So now I have to have two PRs and two deploys to get a feature in place when it could have been one? Also everything is slower and more complicated? Do people not get it?
bigyabai•4h ago
ninetyninenine•4h ago
Why wait for an aws lambda to wait for a database when you can just wait for the database yourself?
You spin up an entire CPU just to ask it to wait for something when you can just fire off a coroutine. Spinning up CPUs are for spinning up new computational resources. It's pointless to ask it to wait for shit. It's like asking someone to wait in line for you while you stand next to him waiting for him.
bigyabai•4h ago
ninetyninenine•4h ago
In short: The server is the origin of the task. By definition the task doesn't exist without the origin/trigger.
Why spend extra on a lambda? I think you're lost. Especially if you built architecture like this where servers wait for lambdas that just wait for database calls. (FYI waiting time is slightly longer this way, cost is slightly more expensive, and architecture becomes unnecessarily complex)
Literally first reply is someone who thinks a lambda is the right tool. I wasn't sure how bad it was until this young man replied.
codingdave•4h ago
It sounds like they do not respect your take on it, but you aren't respecting theirs, either.
ninetyninenine•4h ago
If your server is your typical crud server that hits a database, your database will be overwhelmed before your server gets hit to the point where it can't even wait.
It's not about respect, I don't mind the disrespect. It's more about how they're wrong and they don't realize it and this over engineering is pervasive in the industry.
I don't think you understanding how cheap it is on the CPU for a server to wait for an external IO call.
codingdave•4h ago
But do they mind? Because so far you are saying anyone who doesn't agree with you doesn't understand. Sounds like while you might not mind being disrespected, you fail to realize that other people do mind.
You also clearly have an over-sized server if you think 10K concurrent connections can be covered on it. If that is true, you could save a heap of money by downgrading that server and going to lambdas. The more you defend your position, the less tenable it becomes.
ninetyninenine•4h ago
Is that disrespect or is that just sensitivity? From my POV this is fact. Like 1 + 1 = 2. I'm stating that. Or should I be inclusive and say that 1 + 1 maybe equals 2 but I respect your alternative opinion?
If I believe in something as a fact. I should be able to talk about it as a fact and talk about it as if the other person is wrong. You have that right as well. Same with my young coworker.
They probably do mind. But I feel that's just life. He called my way of doing it using "assembly language" even, and I let it go. If someone is wrong, we shouldn't be afraid to slightly offend them and tell them they are wrong. That goes both ways. I don't want to live in society where we have to dance around everyone's feelings even when they're utterly wrong and borderline delusional.
>You also clearly have an over-sized server if you think 10K concurrent connections can be covered on it. If that is true, you could save a heap of money by downgrading that server and going to lambdas. The more you defend your position, the less tenable it becomes.
This is not true. Your laptop on a 10 year old intel chip can handle 10k concurrent connections. Some guy pushed it up to a million here: https://unetworkingab.medium.com/millions-of-active-websocke...
The lambda architecture doesn't work for our case because our server maintains long running websocket connections. We just need async non blocking tasks. So I'm saying, launch a concurrent coroutine (aka go routine) and call it a day.
I think you're not aware of how much concurrency modern servers can handle. Back in the days of LAMP this would be a problem. But not anymore.