I agree with the sentiment of the article, if not the specifics of every point. Definitely feel some pain in areas. Sometimes I feel we are doing architectural contortions. Pain points include:
* SQS is not an event source :(
* Cold starts can be very problematic for latency sensitive scenarios when using languages/frameworks that startup slow. It's pre-fork without the fork :(
* No concurrency in event handling exacerbating some of the above
* Artifact size limits can often be rough
* Bizarre artifact storage limits and little help in the way of cleaning them up
* CloudFormation limits and bugs
* The service is rather opaque
* Onboarding; good luck :)
Learned the hard way:
* Created too many individual project repos and serverless services. Classic monolith vs services pains but more to do with too-small service boundaries
* Interface to serverless projects too fine grained(too many lambda functions per service)
* Didn't start using step functions earlier to bridge the gap between stateful processes and stateless processors
* Used SQS as database(long story)
* Ran a flask API as a lambda. Works, but there is just no way we would use this if it weren't internal due to cold start/scale latencies with bursty traffic.