9 ms·
Ask HN: What are the alternatives to Amazon Lambda?
- hyperpallium 11y agohttp://stackhut.com/ http://stackhut.com/
- mands 11y agoThanks for mentioning! Working on getting an OS X packaged app out this weekend along with that Linux/Bash-as-a-service up!
- austenallred 11y agoWhy do you want an alternative? Not sure there are any as far as price goes.
- neilellis 11y agoIron Workers: http://www.iron.io/worker/ http://www.iron.io/worker/ Most new breed Docker hosts like http://tutum.co http://tutum.co can give you a quick DIY version. But in general they (Amazon) are (currently) the best of breed and I have only positive things to say having used the JS and Java versions.
- smt88 11y agoHave you noticed any downsides to using Lambda over running a persistent Node server? Is there overhead in execution time, for example?
- ryan_sb 11y agoThere's a warmup time when a function is first executed in a container that can be up to 2 seconds depending on what libraries you include (you pay for this time [1]). After the first execution, your function environment will stay "warm" for 10-15 minutes and it will only take 10-150ms to execute your function on a new event. The other big downside is every time your function goes "cold" you pay the cost of all the extra (anything not in standard lib, ImageMagick, or the AWS Nodejs SDK) libraries you need. The upside is that you only pay for the time your code actually runs. I've replaced a cronjob server and saved ~90% on the bill to run my jobs. Mostly they were scheduled backups and other misc integrity checks on AWS and 3rd-party infra, so nothing that intense. More limits/downsides: http://serverlesscode.com/post/aws-lambda-limitations/ http://serverlesscode.com/post/aws-lambda-limitations/ 1: the cost for 2 seconds of execution time on a 512-MB execution environment is 0.00001668 USD, so it's not likely to break the bank. If you have a high-traffic function it's likely to stay "warm" pretty much all the time. And if your function is low-traffic, it's likely you fit inside the free tier.
- marktangotango 11y agoHa! Cronjob to keep functions from going cold! If everyone starts doing that, it will reck the cost structure of Lambda for Amazon, I wager. One wonders why they didn't consider the possibility of users doing just that.
- HappyTypist 11y agoI don't think the previous poster was talking about using cron jobs to prevent functions from going cold.
- Rapzid 11y agoThe node version was OLD last I checked; no harmony features.
- dchesterton 11y agoWe're using IronWorker and Lambda for a current project. Our (Go) code can run on either and we've designed the app to easily swap out the backend in case of service failure. Pros of IronWorker: More language support, better logging, easier to debug, scheduled tasks via API (this is the main thing stopping us going all in on Lambda). Cons: Slower start up time (~2-3s on average compared to milliseconds with Lambda), pay upfront rather than pay for what you use, no choice re. CPU/RAM.
- vosper 11y agoYou may be interested to know that Lambda now supports scheduling: https://aws.amazon.com/blogs/aws/aws-lambda-update-python-vpc-increased-function-duration-scheduling-and-more/ https://aws.amazon.com/blogs/aws/aws-lambda-update-python-vp... Edit: Oh, are you saying that you want to send an API call to schedule something? They say in the post that API support is coming, but I don't know if you could schedule a one-off run that way.
- dchesterton 11y agoYeah, we connect with other services so we need the ability to programmatically re-schedule a function to run in ~5 minutes if it failed the first time.
- carimura 11y agoThanks for the synopsis. Lots of plans for IronWorker including fully custom Docker image support (soon) and millisecond response times (soon'ish). We also support custom configurations of CPU/RAM for dedicated customers which is what most of our customers with stricter SLA's utilize. That said, a big differentiator is IronWorker's ability to be deployed to any cloud provider as well as private clouds / on-premises. Many of our enterprise customers need hybrid deployments. We're always listening so please feel free to shoot us feedback at support[at]iron.io or find us at @getiron. Chad @ Iron.io
- jenkstom 11y agoIsn't most of the draw of Amazon Lambda that you can hook everything else into a simple api hosting service? I doubt there are any direct competitors, at least at that scale. Here is a discussion: https://www.quora.com/Are-there-any-alternatives-to-Amazon-Lambda https://www.quora.com/Are-there-any-alternatives-to-Amazon-L...
- ryan_sb 11y ago+1 one of the draws for Lambda is that it has easy integration with other AWS tools (Kinesis, DynamoDB, SNS, even CloudFormation) and is really low-cost since you only pay for execution time.
- ches 11y agoAnd Amazon API Gateway, potentially the request routing layer for a heterogenous set of Lamdba-backed endpoints. Seems like that may have been particularly a service jenkstom was referring to. https://aws.amazon.com/api-gateway/ https://aws.amazon.com/api-gateway/
- james33 11y agoWe used to use Joyent Manta for the same purpose we are now using Lambda. Joyent worked well, but Lambda works significantly better (speed-wise) and significantly cheaper.
- gk1 11y ago(Full disclosure: I work with Domino.) For some use cases, Domino's API endpoints[0] feature is an alternative, especially if you want to run R or Python scripts. [0] https://www.dominodatalab.com/benefits/web_services https://www.dominodatalab.com/benefits/web_services
- rakoo 11y agoWebscript (https://www.webscript.io/ https://www.webscript.io/) but it's Lua only.
- rowbot 11y agoI tried that once. If you are looking to invoke HTTP web services or SMTP mail services from the web then it is good. ie., as online services not stored on your system.
- skrebbel 11y agoIn a way, Amazon Lambda is just "upload a PHP script to my $3 shared webhost", except: - JavaScript/Java/Python instead of PHP - Can handle gigantic bucketloads of requests per second, transparently If you don't expect to scale super high, and if the actual language isn't sacred to you, then you can get the exact same ease of deployment and a comparably large ecosystem of open source on your favorite el cheapo webhost. Many of the reasons Lambda is attractive are the same reasons PHP became so popular (despite the not-so-awesome language).
- k__ 11y agoThis is where PHP can really shine. I mean, you simply upload a script to a web server and have a new API endpoint...
- goldenkey 11y agoYou realize that Python, Perl (cgi), and even C, can do the same things? mod_xxxx
- k__ 11y agoNo, ever used them. I read that PHP was created to be a better Pearl for web-applications, so I guessed that with Pearl it did work the same. But I had the impression that languages like Python and C were used to directly develop application servers.
- toyg 11y agoIn practice, you can't: stuff like mod_python was never popular and never really gained a foothold in the shared-hosting market. Deploying a python script today means either building a VPS or hunting for a niche provider like webfaction (which will still need you to drop to the shell in most cases anyway). It's another level of skill required.
- microstash 11y agoAPITools might help (depending on your use case). Haven't used them myself but they gave a pretty good talk a couple months back. https://www.apitools.com https://www.apitools.com
- amelius 11y agoNewbie question: what does "Amazon Lambda" have to do with functional programming? (Because the name suggests there is a connection).
- kazinator 11y ago"With Lambda, you can run code for virtually any type of application or backend service - all with zero administration. Just upload your code and Lambda takes care of everything required to run and scale your code with high availability. " I.e. wrap your code as if it were a lambda function, and pass it to us. It will work when we call it just as well as when you do in the original environment. Sounds like a better name would be "Amazon Macro", though. This is because the "lambda" (user's application) likely refers to features of the hosting environment and is influenced by them; it is not referentially transparent to place code on a server, even if the grunt work of setting up the surroundings is done by a "macro". "Lambda" is a hot buzzword though, as some notable Blub languages have been scrambling to integrate them, whereas "macro" has a stained reputation.
- TeeWEE 11y agoActually not much. Its called lambdo because you can deploy functions to the cloud, but those functions can be written in a non functional style
- Kiro 11y agoTjo-fa-de-rittan lambo?
- _delirium 11y agoThat's the case for most uses of "lambda" in programming languages too. It just means something like "anonymous function". I believe Lisp was the first language to introduce lambda as a keyword, and that's how it uses it: (lambda (x) ...) creates an anonymous function, but the body of the function doesn't have to be written in a functional style. In fact the modern concept of "functional style" didn't exist at the time.
- scottdw2 11y ago
- sabarn01 11y agoAzure WebJobs
- buu700 11y agoGoogle App Engine includes pretty much the same thing, except it's more mature since it's been around for ages. (JS isn't among its supported languages though — Go, Java, Python, PHP — but IIRC they may have recently added some kind of language-agnostic runtime.)
- johansch 11y agoTo me AWS Lambda is like a Brazil-like nightmare in bureaucracy (http://www.imdb.com/title/tt0088846/ http://www.imdb.com/title/tt0088846/), while App Engine is equally powerful but a lot simpler to use. It's harder to make something simple and powerful than it is to make something complex and powerful, so hats off to the Google engineers involved.
- nostrademons 11y agoIt took Google a long time to get there - I remember checking out AppEngine in 2007 and wondering why anyone would ever use it instead of EC2, and then checking it out in 2009 and wondering how the hell to put together a working app, and then checking it out in 2010 and giving up in frustration, and then finally checking it out in 2012 and finding it was actually pretty useful for prototypes.
- johansch 11y agoThe biggest disadvantage with Google from a global perspective: They don't have a chinese-hosted edition, unlike Amazon/Microsoft/IBM. I understand and can identify with the why...but still, most global businesses want to target China.
- vmarsy 11y agoWhat about Azure Service Fabric [1]? It seems a bit different that it doesn't even require you to have S3* /database storage. You have access to in-memory distributed and resilient data structures [2] right in your code. They seem to provide Chaos and Failover tests (à la Netflix Chaos monkey but out of the box.) [1] https://azure.microsoft.com/en-us/campaigns/service-fabric/ https://azure.microsoft.com/en-us/campaigns/service-fabric/ [2] https://azure.microsoft.com/en-us/documentation/articles/service-fabric-reliable-services-reliable-collections/ https://azure.microsoft.com/en-us/documentation/articles/ser... *or Azure S3's equivalent
- andrewstuart2 11y agoOne thing that strikes me as having really promising possibilities for doing something Lambda-esque is systemd socket activation [1]. You can essentially have no running services, and systemd will hold open a socket (port/unix/etc) and then it will spin up a given service if a request is made on that socket. As long as you build your "service" to handle a single request and shut down (maybe have an external db-access service to avoid add'l connection overhead), I'd imagine you get something very similar to what Lambda offers - high density, on-demand computing. [1] http://0pointer.de/blog/projects/socket-activated-containers.html http://0pointer.de/blog/projects/socket-activated-containers... and http://0pointer.de/blog/projects/socket-activation.html http://0pointer.de/blog/projects/socket-activation.html
- digitalsanctum 11y agoAlong these lines I started a pet project [1] to enable reusing artifacts (Java) uploaded to AWS Lambda to also be self-hosted. One of the last tasks I have left is to dynamically run a container based on the incoming request similarly outlined here [2]. [1] https://github.com/digitalsanctum/lambda https://github.com/digitalsanctum/lambda [2] https://developer.atlassian.com/blog/2015/03/docker-systemd-socket-activation/ https://developer.atlassian.com/blog/2015/03/docker-systemd-...
- nabaraz 11y agoYour github link is 404
- digitalsanctum 11y agoI realized I hadn't yet made the repo public. It is now :)
- samstave 11y agoCheck for keys!!! :-)
- digikata 11y ago
- cdnsteve 11y agoI started trying to use Lambda and found a few immediate issues. 1) It does not work with anything inside VPC. EG: RDS Databases cannot be used. This severely limits why you'd use this on AWS for larger apps. 2) Trying to get it working for a real app is a bit of a gun show. Debugging was a pain, you cant really write any unit tests easily that I found. Local development was confusing. 3) Lambda forces you to use old technology. Node .10x, Python 2x. 4) You're using code that will only ever work on AWS. If you don't like vendor lock-in then look elsewhere. If you don't need VPC access take a look at Heroku and background workers. They scale independently from the front-end main app. No servers to manage, just git push heroku master. You can write them in pretty much any language you want. Heroku supports the latest stacks and languages.
- KAdot 11y agoVPC support was introduced some weeks ago https://aws.amazon.com/it/blogs/aws/aws-lambda-update-python-vpc-increased-function-duration-scheduling-and-more/ https://aws.amazon.com/it/blogs/aws/aws-lambda-update-python....
- merb 11y agoRDS could be used. But not without weaken the security.
- vicwhiten 11y agohttp://hook.io/ http://hook.io/ lets you link a gist script to a webhook, very similar. Open source & free.
- christiangenco 11y agoOh man, this is exactly what I've been looking for for a long time. What a brilliantly simple implementation! FYI: it looks like they have a really generous referral program[1], so post your referral link (shameless example: https://hook.io/christiangenco?s https://hook.io/christiangenco?s) and I'll tweet the developer to see if you can get retroactive credit. 1. https://hook.io/referrals https://hook.io/referrals
- willcosgrove 11y agohttps://webscript.io https://webscript.io is also pretty awesome, if you're willing to learn some Lua.
- _Marak_ 11y agohook.io supports lua, along with eleven other programming languages.
- wbc 11y agoit's continuously making requests to /totalHits/ if you check the network, is that intentional?
- _Marak_ 11y agoYes, that is the update counter for the live deployment count on the homepage. It constantly polling our total deployment count and updating the value on the homepage. I'm a bit of a fan of putting unnecessary stress on our servers in a controlled fashion. This gives me a bit of wiggle room if we need to free up resources in an emergency...which still hasn't happened yet. :-)
- _Marak_ 11y ago
- logvol 11y agohttps://webtask.io/ https://webtask.io/ Why the don't use Lambda: https://medium.com/aws-activate-startup-blog/sandboxing-code-in-the-era-of-containers-294edb3a674#.ioqmc0ddn https://medium.com/aws-activate-startup-blog/sandboxing-code... ... hile we were at it, AWS announced AWS Lambda, which looked like a potential remedy to our challenge. Upon further investigation, however, it became clear AWS Lambda is centered on an asynchronous programming model that did not quite meet our needs. The custom logic we run in Auth0 is an RPC logic: it accepts inputs and must return outputs at low latency. Given the asynchronous model of AWS Lambda, implementing such logic would require polling for the results of the computation, which would adversely affect latency...
- soccerdave 11y agoOne cool use that we are using Lambda for is to destroy EBS snapshots past a certain date. We tag snapshots with a 'retention_days' tag and then a Lambda process kicks off daily and deletes the old snapshots. The great thing about this is we can lock down the DeleteSnapshot api call so that none of our instances have access to that call anymore.
- deleted 11y ago[deleted]
- akamel 11y agohttps://TaskMill.io https://TaskMill.io is in early open preview; free for all > TaskMill's extreme microservices OSS platform. Check-in your scripts to GitHub and we turn each into an HTTP endpoint. See how we are building a Docker-powered Open Cloud where we build on top of each other's scripts to Automate All The Things! disclaimer; I am the founder of TaskMill
- harrisonhjones 11y agoHN Hug of death? The website is down for me. I look forward to playing around with it.
- zbjornson 11y agoDepending on your use case and how much startup time you can tolerate... We need the ability to run 1,000s to 100,000s of ~3 second jobs as fast as possible, but only sporadically (~100 times a day with our current customer base). At that "low" frequency, can't justify the cost of keeping that many dedicated servers up 24/7 to meet this intermittent need, and we need sub-second startup times so we can't launch normal VMs on demand. However, the cost of servers on Google Compute Engine (GCE) is actually cheaper than lambda if you have big batches of jobs. The VMs could be launched via their autoscaler or Dataflow, and jobs could be dispatched via Pub/Sub. If you can secure enough preemptible GCE instances (which are of limited availability), these are even cheaper. GCE VMs launch in about a minute, compared to AWS's 3-7 minutes, so on-demand launching is actually doable for some use cases as long as you don't mind paying the 10 minute minimum. This also gives you access to huge resources (CPU and RAM) if needed. Specifically, ~1.1 million 3300 ms 1536 mb lambda jobs cost us $90.04, and GCE would be $50 on regular or $15 on preemptible GCE VMs for the same number of jobs in the /same total execution time/. After requesting a Lambda quota of 100,000 concurrent jobs, we were only allowed 1,000 ("for now", they say) -- thus it takes an hour for that many jobs to complete, so GCE$ = (1 hr) * (cost per vCPU/hr) * (1000 vCPUs). Note that we're using the max allowable memory on Lambda because that ~linearly decreased our execution time, but we use an average of 400 mb. My estimate also doesn't take into account the overhead time that comes from launching lambda jobs that might be reduced via the home-brew solution I described above. Someone else mentioned the issue with Lambda only having 0.10 vintage node. We have a somewhat complicated albeit elegant solution for communicating with a portable node 4.x binary via IPC. If AWS ever gets to allowing specified node versions, that would reduce our runtime marginally. (BTW, I put in a feature request to GCE for a lambda-like service here: https://code.google.com/p/google-compute-engine/issues/detail?id=253 https://code.google.com/p/google-compute-engine/issues/detai...)
- kyleblarson 11y agoAnyone here have experience building workflows with SWF on top of lambda?
- mands 11y agoWe've been hacking on something in this space for the past few months with StackHut - https://www.stackhut.com https://www.stackhut.com. We have a demo in a blog post at http://blog.stackhut.com/phantomjs-cloud/ http://blog.stackhut.com/phantomjs-cloud/ showing headless web rendering-as-a-service. We've tried to make it as simple as possible to get your code into the cloud. You write your classes and they're deployed as entrypoints into a lambda-esque service that you can call over JSON-RPC - making it trivial to write and deploy a backend. As described in the blog, the great thing we think it has over tools like lambda is that you can describe your system declaratively, specifying any dependencies you may need, using a simple YAML file and it takes care of packaging your code. You can run this locally or deploy it to our hosted platform where it scales as needed. Currently support JS and Python atm, and open-source at https://www.github.com/StackHut https://www.github.com/StackHut. We're super early but would love to hear your thoughts.
- kixa 11y agoI've been using StackHut loads recently. Though it's more of a replacement for using AWS Lambda and AWS Gateway together. There's a CLI tool and you can deploy literally any function you've declared locally which StackHut then automagically available through HTTP, no web server routing or request handling required (on server side at least). It's a super fun idea and it's surprisingly easy to get started with. If you've got some free time this weekend, totally check it out.
- deleted 11y ago[deleted]
- rowbot 11y agoIf you are looking to host a "PHP script" free, you should consider 000webhost. OR any shared host, the host you are using now.
- sapanbshah 11y agoWe have been working on something like this as well using docker containers. We call it Bakula its still in an early alpha phase. The idea is that instead of writing to a particular API it listens for events and mounts a filesystem. Then you just process files in the filesystem as your events and delete them when they are done. The code can be found on github at: https://github.com/immuta/bakula https://github.com/immuta/bakula
- im_dario 11y agoInspired by Amazon Lambda I started working a few days ago in a similar project: Nervio [0] It is currently a very early alpha. Today I have planned to hide all NATS references to have a very simple and agnostic API for components. [0] https://github.com/nervio/nervio/ https://github.com/nervio/nervio/
- Spydrivers 11y agogood point