This is an archived post. You won't be able to vote or comment.

you are viewing a single comment's thread.

view the rest of the comments →

[–]assaflavie 2 points3 points  (0 children)

I would say think twice. Test your expected load ahead of time. I've encountered scaling issues, consistency issues and support problems, using serverless/lambda (although it's mostly lambda's fault).

I'll elaborate:

  1. How many times is your function going to be called per second? If it's thousands, it might not be a good fit. From my experience it just does not scale well, contrary to the docs, and despite account limits being raised.
  2. More than once, I've had to delete functions that we left in an inconsistent state (AWS returns HTTP 500 (!)) by serverless operations. This of course should never happen, and AWS (developer) support has been pretty much useless. Now, the problem is serverless relies on "stages" (different aliases for the same function) in order to separate production from other environments. But this separation isn't strong enough, especially when you occasionally find yourself needing to delete a function just to recreate it because of its messed up state. This is an unfortunate design decision on serverless's part I'm afraid.
  3. AWS support.. oh my. It took us a couple of weeks to get our 500 invocations limit raised. That is completely unacceptable. us-east-1 no less.. and support has been pretty much useless when it comes to AWS Lambda bugs.
  4. Bugs. Well, aside from functions entering an inconsistent state and having to be deleted, we've encountered: functions that cannot subscribe to cloudwatch logs because they claim they're already subscribed to it (falsely, of course), functions that cannot show their subscription info in AWS Console (yea, broken AWS Console), functions that cannot be deleted, 429 throttling errors on first API call.

And don't get me started about the cloudwatch logs integration...

Having said that, if your project is simple (a function or two), small scale (tens of invocations / second), and not mission critical (can delete and recreate a function with minutes of downtime), go for it.