Hacker News new | ask | show | jobs
by jedberg 4242 days ago
I’ve had a chance to use the service for a couple of weeks. My quick summary review is that it’s a little tricky setting up the IAM roles and security groups, but once you have that going, it works great! I see a ton of potential here in transforming the way people use AWS.

I also put together the Netflix use cases in the keynote so if you have any questions I’ll try to answer them!

5 comments

One thing I am struggling to understand is how much of my applications can be replaced with Lambda.

I think it would be really awesome to make applications that do not have any dedicated instances associated with them, but are entirely based on the various AWS platforms.

For some things, it seems like Lambda could be a drop-in replacement, whereas others, it would not quite fit the bill. Do you think it will be possible to build a viable a "server-free" application with Lambda and the other services (S3, DynamoDB)? Or is it probably going to be limited to the types of use cases listed on the landing page[1]?

[1] http://aws.amazon.com/lambda/

It is completely possible. Consider that the major uses for a server are interacting with clients, storing data (backend database) and manipulating that data. Here the clients can interact directly with S3/Dynamo, this in turn will trigger Lambda functions to manipulate data, and the round trip can be accomplished via SNS.

Of course, it would be much more viable to have some sort of server running (for example I doubt Netflix has replaced their entire backend with Lambda functions), but a great majority of workflows dealing with stateless data manipulation and events can now be streamlined and even replaced.

I recently had to set up a system to generate thumbnails from images uploaded into S3; precisely the example they give. This would be a godsend and replace a lot of complicated queues and ruby processes running on an army of EC2 instances.

Oh what I would have given to have this capability a year ago. :)

You cant (at present) execute code on a GET request, so you need to have static content pushed to S3 as the basis for your app. You can update it on POST/PUT though, so you can construct an application via that.
I think it's completely possible. Amazon has all the pieces you need (compute and storage). That being said, you may need to wait for ec2 events to do some really complicated stuff.
It seems like you're limited to 25 concurrent lambda functions executing (at least at this time).

This looks like it's more geared towards enabling you to automate / orchestrate your AWS resources, that run customer-facing code.

The 25 function limit is probably one of those small defaults that's easy to change, like the 20 instance limit.
True, its likely just like all other limits; arbitrarily small for anyone by default to prevent you from having an errant process spin up a ton of resources that you'd be expected to pay for.

Just like how you can get specific increases on your spot bids so long as you acknowledge that if you get a spot spike, and your personal limit is far greater than the spike -- you'll be charged your rate.

What does this mean to application development? Is it something revolutionay?
Interesting question. I think some advanced apps already use these techniques. For example we already do event driven things at Netflix.

What this does it make it a lot easier for smaller companies to do it without having to invest in all the infrastructure.

So I think yes, it will be revolutionary in the sense that it will get a lot more people using what I think is the future direction of compute and application building.

No idea, for the time being the only supported language is JS. I'm trying to understand if I can run ruby applications by glancing here and there... Didn't had the time to look into it yet, but everyone seems very excited about it.
You can't, yet. They have plans to add "other languages" on their roadmap.
Not exactly revolutionary per se, it's an idea that's been around at least as long as shells, and as mentioned in the keynote it's a natural level of abstraction above AWS APIs. The neat part is how this simple idea has been translated to applications at scale.

IMO what's really going to be revolutionary is what we end up doing with it, but we're going to have to wait a bit to find that out :)

Has the keynote been made public anywhere yet?
Could you use it more generically, meaning not "just" within an app but also as part of an overall control plane, sending commands to other APIs like a notification system?
Do you know if you can respond to events from SWS or SQS?
Not directly, no. However, the documentation states that you can use CloudTrail to log the requests from SQS to S3, then have changes to S3 trigger the events that can get your Lambda function to respond.

It's a little convoluted, but that seems to be the way they're going for now.

Currently the only services supported are S3, DynamoDB, and Kinesis. Seems like a no-brainer that they'll be adding other services though.
As of today, no. Probably coming in the future though. I got the impression that eventually all Aws services will emit events.
After reading the description of AWS Lambda, I expected SQS to be first in the list of event sources. Huh.
Wouldn't that be kind of unnecessary, when it's not too tough to write an SQS-reactive client?

Starting with S3 fills a gap as there is AFAIK otherwise no way to start processing based on changes to S3, without writing a rather wasteful program to list the resources, maintain state, and hunt for differences.

But if you have an SQS reactive client it would sit in EC2. With a service like Lambda, they are promising millisecond based pricing. A very ambitious project by them.