A service peaking at 5,000 rps is bottlenecked entirely at the data tier: it runs a burstable db.t3.medium, no cache, single-AZ, no backups. Queries are queueing and any failure loses data.
Targets: p99 ≤ 140 ms, 99.95% availability, critical durability, under $1,000/mo.
Fix the data tier: put an ElastiCache layer in front to absorb hot reads, pick a right-sized database class, make it Multi-AZ with backups, and keep the compute tier sensibly sized across two AZs.