@michaelnguyen547 It is common nomenclature to refer to both internal assets and client assets as "assets". Client assets specifically should always exist off-server, preferably on S3 regardless if you use Vapor or whatever.
Uploading files isn't really difficult to debug. It's really straight forward if image uploads fail.
Services fail on regular servers as well... typically you will program ways of handling service failures... log failed items to a future job table, write a heartbeat function to detect when services come back online, then re-execute failed jobs.
Sure, fixed or dynamic sized database are options. You can always scale up a fixed database.
You can send yourself notifications if services fail and restart or worse case re-provision your environment very easily. Takes about 10 minutes.
How to debug? Just because you are deploying to Vapor doesn't mean you can't develop your app locally using Homestead or Valet. Just do that. Deploy to staging to test in mirrored server environment... deploy live once you've tested.