Why Netflix Rolled Its Own Node.js Functions-As-a-Service Runtime
thenewstack.io
thenewstack.io
Everything mentioned in that diagram is completely arbitrary and varies for every single vendor.
At most lambda/workers/functions are really just PaaS, except instead of uploading all of your code, it's just a single file with a single endpoint.
If we really need a new term, then micro-paas or FaaS works fine, although most FaaS vendors are expanding to running any arbitrary container with multiple endpoints, so we're right back to normal (but modern) PaaS at the end.
Deploy and run apps on today's most innovative Platform as a Service [1]
Google App Engine is GCP's platform as a service (PaaS). [2]
[1] https://www.heroku.com/platform
[2] https://cloud.google.com/docs/overview/cloud-platform-servic...
Either way, serverless is a superset of FaaS.
It is true though that it would be nice to have a standard for FaaS that doesn't have the inefficiency of CGI.
[1] http://blog.matthewdfuller.com/2015/12/aws-lambda-occasional...
Regardless, I truly can not wait to see a topic about serverless that isn't primarily bickering about the name.
How does it do that? "Serverless" as a word implies no servers, and therefore no 3rd-party management, and no pay-per-use.
Which is why the name sucks.
That response is about as insightful in 2018 as saying "I don't know why they are calling it debugging. Don't they know there are no physical bugs in their code"?
"Serverless" is the exact opposite of that. It's taking a word that literally means "without servers" and making it mean "with servers, possibly a lot of them".
--
Like, really really shockingly terrible.
Would you think that PaaS means an API to get platforms?
[1] http://erlang.org/pipermail/erlang-questions/2011-May/058768...
There is still a server running the code, you just don't control it.
Claiming "it just means I don't have to worry about it" means that classic shared web hosting with shockingly outdated versions of php and perl are "serverless" too.
Is there anyone who really thinks that there is no server anywhere. I find this complaint really odd.
Your complaint can be applied to FAAS too, don't all webserver execute functions? What else would they be serving.
If you want to dismiss the literal issue, that means the name is meaningless. It might as well be called Daffy Duck.
"Serverless" is deliberately wrong and misleading.
One of those stupid "entire website in a page" would be a better fit for "server less" because technically the logic is all client side.
not between 2 wireless endpoints, there are no wires. Between you and what you call "serveless" there is a server you need to query to get the result of whatever program you executed remotely. There is no wire between my router and my laptop.
It's absurd that such an app is not considered serverless precisely because it doesn't actually use a server.
Which really means wireless networking doesn't exist, because there are still wires involved somewhere, and I don't hear people being pedantic about that.
By your "wireless" analogy I think you view these apps to be absurd impossibilities, like electronics without wires.
This distinction is important. SimCity 5 gratuitously required the user to be constantly online, talking to some server. I mean obviously - there has to be a server somewhere, right?
No, there does not!! We need to retain the ability to talk about apps that do not need ANY server, and "serverless" muddies that crucial distinction.
It was used a few times even on HN:
https://hn.algolia.com/?query=serverless&sort=byPopularity&p...
"serverless" does not add any value. It causes confusion instead of creating clarity. It is utterly useless.
I generally just call them apps and people understand what I mean because of context. But if you want to get pedantic, Photoshop requires a computer (what a server is).
It's all useless and pointless.
1. Not using a server.
2. Using a server. Not serverless.
Problem solved.
Just because it runs on someone else's machine doesn't mean it is "serverless". an API Gateway obviously is a server.
FAAS is just a good old worker queue, there is nothing new about that.
There is no "modern definition" of serveless. it's just marketing, it has nothing to do with technology. Developers shouldn't use that word and expect to be taken seriously.
I get that the allure of not focusing on infrastructure, scaling, etc. is strong. But that's really a side effect of what you're actually doing: applying FP principles to web service design.
And it really fits the paradigm well. You've got HTTP services (short lived, therefore comfortably stateless) that are ideally infinitely scaleable (easy to do when your HTTP services are basically pure functions). Do you need caching? That's like memoization of your functions!
It’s more like people yelling at the wind or thinking they are intellectually superior because they are in on the little secret that servers are involved.
Pick a better term.
Just like everything else in technology, if someone is confused by tech jargon, they should research it.
Product names are either unique (for branding) or have some tangential matching definition. Serverless is none of those. Vague, inaccurate, nondescript. It is of no use.
This is like NoSQL all over again, absolutely meaningless in every aspect and adding to years of
I know most of the features of AWS either from real world day to day use or at least on high level that I can talk intelligently about them. The time it took to learn them wasn’t lengthened by the term “serverless”. That was one of the easiest things to wrap my head around - write your code like you always do and just have a function as an entry point that takes two parameters - a JSON object and a context object and wire up an event that calls it.
But on the other hand, when a bunch of Azure folks start talking about Azure features they are using, I am clueless. Does that mean that Azure services are misnamed or that I would need to spend some time learning about it on high level if I wanted to talk intelligently?
For instance when I heard friends talk about Data Lakes, Data Factories, Event Hubs, I had no clue what they were yamerring on about. The same when anyone starts talking about machine learning.
Concepts should be carefully named because this is not just jargon between a tiny handful of highly competent and super technical people; a vast number of devs and non-technical users will use these terms and it is in everyone's best interest to use descriptive and sensible wording.
Data lakes, data factories, event hubs are product names, not concepts, but they are either exactly the same as their underlying concept, or very closely related. However, as stated for the 3rd time, serverless is not. It's completely inaccurate and vague.
Where did you get that "serverless" means function as an entry point with 2 params? Every platform is different, from entry points to parameters, to bindings, to runtimes, to concurrency, to scaling, to security, and more. So the term is meaningless in describing anything. Many "serverless" function/lambda systems are evolving into running arbitrary containers and now have come full circle to basically a modern version of PaaS, which is what they should've been called all this time.
There are clearly better options and tons of examples of poor naming causing annoyances and best and utter confusion at worst. We still live with the NoSQL hype repercussions and now serverless is following the same trend. It's not helpful and we can do better. What is a serious argument against that?
I had heard of “Nosql” two years ago but I didn’t know what it was until I was hired to implement two projects on top of Mongo. Did I complain about the use of the term “NoSql” every time someone mention it? No, I learned Mongo inside out so I wouldn’t design something non scalable and non redundant.
It's great that you research, but many do not. Hype, jargon, and excessively misleading terms are real, and they make a measurable impact on productivity and confusion. This is why marketing and branding is so important when naming, and its why there should be an effort made to use better terms.
I still haven't heard a single argument on why we shouldn't do better, other than that you can handle it. Good for you, but that's not the point.
It was just one thread though, and I could see how it sucked people into its vortex, I haven't even had a chance to read the article yet, and here I am doing the same as everyone else (including you...). Well, worse actually, as we've contributed to a new thread.
As I understand it, according to this article, netflix is 90% complex services that have nothing to do with node. All this article is describing is adding an additional layer in front of those services, which uses a hosted solution that abstracts away servers.
So it sounds like by-and-large netflix still uses traditional solutions.
So what's not clear from the article:
1. Why node?
2. Why add a layer at all? I don't see why UI A/B testing couldn't be handled with truly front-end changes. Does this somehow enable A/B tests on TV apps, for example?
3. How does this play with traditional version-control? (e.g. in a post-mortem if you need to see who changed something, and who approved it, is there a written log? And merge conflicts?)
4. Does this add a new single-point-of-failure?
Edit: remove false claim
The lower half of the article covers their development toolchain:
- Repo: Github?
- CI/CD: Spinnaker
- Testing: ???
- Container orchestration: Titus
- Dashboards and metrics: Atlas
- Alerts and notifications: Pagerduty
I’ve often built UI-specific API endpoints, but have often been told such endpoints are a bad practice. In reality, I think they’re great. It allows you to serve up optimal payloads and move much more quickly than writing the equivalent general APIs.
That said, wasn’t Falcor the Netflix solution to this very problem?