8 ms·
I loved the article https://arxiv.org/pdf/1812.03651.pdf https://arxiv.org/pdf/1812.03651.pdf It mentions two temporary bottlenecks: 1. Functions can run only
by sytse 8y ago
I loved the article https://arxiv.org/pdf/1812.03651.pdf https://arxiv.org/pdf/1812.03651.pdf
It mentions two temporary bottlenecks:
1. Functions can run only for 15 minutes and experience cold-starts.
2. You can't use specialized hardware like GPUs.
It also mentions two fundamental bottlenecks:
1. Serverless functions are run on isolated VMs, separate from data. In
addition, serverless functions are short-lived and non-addressable,
so their capacity to cache state internally to service repeated requests
is limited. Hence FaaS routinely “ships data to code” rather
than “shipping code to data.”
2. Because there is no network addressability of serverless functions, two functions can work
together serverlessly only by passing data through slow and expensive storage. This stymies basic distributed computing. , With all communication transiting through storage, there is no real way for thousands (much less millions) of cores in
the cloud to work together efficiently using current FaaS platforms
other than via largely uncoordinated (embarrassing) parallelism.
Disclosure: We just shipped serverless in GitLab https://about.gitlab.com/2018/12/11/introducing-gitlab-serverless/ https://about.gitlab.com/2018/12/11/introducing-gitlab-serve...
- Normal_gaussian 8y agoSo knowing this what has Gitlab done to overcome it? If they haven't, why not? Why is it hard or inconvenient?
- sytse 8y agoWhat we now shipped is a Minimal Viable Change (MVC). I suspected that serverless wasn’t ideal for all use-cases but I couldn’t articulate this until I read this paper. We have taken no steps to overcome these problems, I think we’re likely to follow the leaders in the industry like Knative from Google and TriggerMesh. In general I think serverless is more of a pattern then a technology. We’ll use Knative to offer PaaS functionality (Heroku) on Kubernetes with GitLab.
- ramzyo 8y agoI'm interested to pick your brain about the second fundamental bottleneck you/the article mentioned. I'm not sure that I agree that serverless functions are fundamentally non-addressable. Today they're not addressable, but why can't they be in some future evolution of serverless? Sure serverless functions are ephemeral, but during their brief lifetime, is there something fundamental keeping them from being addressable?
- sytse 8y agoI’m not a serverless expert. Consider opening an issue with your proposal, or even better a merge request against the serverless functionality in GitLab that is already in master.
- snaky 8y ago> there is no network addressability of serverless functions Didn't inetd (4.3BSD, June 1986) solve the problem?
- rhizome 8y agoYou're not wrong.
- marcosdumay 8y agoThere is nothing stopping inetd services from sharing disk data or communicating with other local services.
- snaky 8y agoThe particular inetd was just an example, but even for use with exact inetd from 1986, there are many solutions in modern operating systems to restrict any process, like SELinux, AppArmor, Seccomp and capabilities, LXC unprivileged containers and whatnot.
- comex 8y agoNo. It solved a problem that was vaguely analogous if you consider a binary sitting on some Unix server the equivalent of a “serverless function”. They are somewhat similar, in that both are relatively self-contained and stateless compared to the alternative, not requiring anything to be explicitly spun up or down (a daemon or a VM/container respectively). But an inetd binary runs on an existing server, and the client is expected to know the address of the server. A “serverless function” can be spun up on the fly on any number of provider-owned servers which nobody has seen before, so there needs to be a separate mechanism to (1) request a server to spin up if necessary and (2) locate that server. Right now, Amazon Lambda only provides this through high-level abstractions such as Amazon API Gateway; you can’t even listen on a port from a Lambda container, so you’re limited by the speed of those gateways.
- regularfry 8y ago"Locate that server" is DNS. Or possibly reverse proxying, if DNS is hard and Apache is easy. Transparent elasticity is the fundamental advance here, and it seems to come with a surprising number of tradeoffs.
- WrtCdEvrydy 8y agoI find it kinda funny that serverless can't do GPUs while docker containers mounted with the nividia-docker runtime can do GPU capable tasks. Are these serverless solutions really so different?
- akhilcacharya 8y agoYes, they usually have greater levels of isolation.
- imhoguy 8y agoServerless/FaaS is just a buzzword which describes proprietary hidden abstraction on top of vendor's isolation system (VM), proprietary image and orchestration APIs. One day they may happily announce that they allow you to: @Use(GPU) func yay(...) { }
- scarface74 8y agoAs far as “bottlenecks”. Almost all applications have data separate from code. Most implementations don’t run their applications on the same server as their databases. Most app servers shouldn’t be “caching state locally” anyway. Once you do that it makes scaling horizontally harder - you have to Implement sticky sessions. And in all practicality, I would assume that most people are using EBS for their storage which is network attached storage. Two lambda backed microservices work together just like any other microservices - via known urls and over https.
- hueving 8y ago>you have to Implement sticky sessions. There is more to the world than serving HTTP requests.
- breischl 8y agoTo expand on your point, there is also more to cache than user-specific data. Exchange rates, tax rates, product catalogs, and more can be usefully cached without requiring sticky sessions.
- scarface74 8y agowho keeps that data locally on the server?
- hueving 8y agoIf you're querying the IRS for tax rates every time you run a calculation, you're doing it wrong.
- scarface74 8y agoIf you aren’t querying exchange rates often - you’re also doing it wrong....
- 8y ago
- jm547ster 8y agoImplementation details, not conceptual ones
- Terretta 8y agoRegarding the bottlenecks, note that CSPs have been doing work to run functions next to the data without having to “retrieve” it to a warmer storage level. Consider Amazon Web Services’ S3 Select, Glacier Select, and Athena introduced a year ago: https://aws.amazon.com/athena/ https://aws.amazon.com/athena/ If you look at 2017 announcements then 2018 announcements, you can project a likely strategy here.
- sytse 8y agoVery interesting. I wasn’t aware that with S3 select [0] you can select columns by using SQL on a zipped file stored in s3. [0] https://aws.amazon.com/blogs/aws/s3-glacier-select/ https://aws.amazon.com/blogs/aws/s3-glacier-select/
- gnomodromo 8y agoSo I have an instance on Amazons EC2 with 2 CPUs and was wondering how much users I can serve my website to before running out of resources. I think my bottleneck are the database queries. http://www.uptopnews.com http://www.uptopnews.com
- unfunco 8y agoThat's not a disclosure, that's an ad.