I've been watching the rise and maturing of AWS lambda and similar offerings with excitement. I've also shipped several microservices in both node and Java that are entirely serverless, making use of API gateway, lambda, dynamo db, sqs, kinesis, and others.
For the simple case, I found the experience to be great. Deployment was simple and made use of shell scripts and the excellent AWS CLI.
I've been hesitant to build anything serious with it tho. The primary concern has been visibility into the app. The app's operation can be quite opaque when deployed that way.
Further exacerbating the issue, we've a few times lost Cloudwatch logs and other reporting due to both configuration issues and improper error handling, but these are things that would have been much easier to identify and diagnose on a real server.
Have you shipped anything serious with a serverless architecture? Has scaling and cost been favorable? Did you run into any challenges? Would you do it again?
* Eventually you need to promote a function to legitimate service for cost savings (e.g. GCF ️ AppEngine Node service)
• You need a buffer (e.g. GCF outscales services it calls) such as Pub/Sub
• Multi-repo/project layout is best for deployment speed, but needs extra dev/CI tooling to simplify boilerplate
• Minimizing costs can be creative/tricky compared to legacy services
• GCF is great for automatic stats and logging (Stackdriver) and "it just works" configs, compared to Lambda
• Don't go cloud functions everything, just the parts that are a good fit
We've gotten a good uptime using cloud functions, but we're always pushing for more nines. Since the functions tie together a bunch of backend Pub/Sub queues and services/stores, a brief cold start or queue backup has no notable impact on the overall system latency or throughput.
BTW, the coolest feature of AWS Lambda I've found is tying it to SES/SNS for inbound and outbound email routing. I've been running my personal email for years through a Lambda function for a few cents a year.
Overall the space is rapidly evolving and we'll see lots more features on Azure Functions, AWS Lambda, and Google Cloud Functions. See our learnings [1].
[1] https://www.slideshare.net/JosephLust/going-microserverless-...