First of all, I still think that this whole tutorial is an amazing resource that teaches a lot to every reader. Thanks again for that !
However, as I tried to follow this tutorial to get my first production ready serverless app, I ran into quite a few issues. It would be beneficial to the community to state the limits that were encountered so that people don’t blindly follow the guide until they run into unsolvable issues (as I did ). Here are mine but I’m sure that other people with other constraints have faced other limitations that would be worth including in the guide
- my use cases aren’t well defined yet, I need some flexibility over the database, and DynamoDB isn’t well suited for that
- if we decide to use another database than DynamoDB, we either need to allow public access to the database (security issue) or run the lambda a VPC (performance, extra-work and cost issues)
- Because of that, I either
- stick with DynamoDB and accept to do lots of awful requests/scan/filter to get what I need or refactor the database regularly until things stabilize
- use another DB and jump into the unknown land of Lambdas + VPC
- use another DB and stop using lambdas (such sadness though)
- Region limits
- For many different reasons, users might want to run AWS services in their own region. But they’re not all available in every region, e.g. Cognito, CloudFront… That can either be a turn-off or cause issues in the Part II of the tutorial because cross-stack references cannot be referenced across regions.
- Environment reproducibility
- This is a general issue with cloud apps but compared to a more classic stack (MEAN/LAMP…) that can be fully installed on a machine, it comes with limitations, e.g. new dev onboarding, offline development, debug, controlled environment for CI/CD, …
- Some projects like localstack exist but it’s hard to know what they’re worth and also don’t provide every service (e.g. not Cognito)