I have made this mistake exactly once. About three years into my AWS career, I inherited a Lambda-based API with DynamoDB on the backend and was tasked with migrating it to Aurora PostgreSQL - the data model had grown relational and the team wanted proper foreign key constraints. The migration went smoothly in UAT. We promoted to production on a Tuesday night. By Thursday morning, Lambda concurrency was exhausted, Aurora was throwing connection pool errors, and I was sitting in a war room with the CTO trying to explain why a database migration - not a code change - had caused a full API outage at 80K RPS. I had never tested what the connection behaviour would look like at production load. I had assumed it would be fine. It was not fine. You cannot assume your way through database selection at scale. The methodology I ran a structured simulation comparison using pinpole's pre-deployment canvas.β¦