Как правильно хранить и отдавать файлы в бэкенде?
Файлы кладут в объектное хранилище (S3 и аналоги), а в базе держат только метаданные: ключ объекта, размер, тип, владельца, статус. Диск приложения не годится — он не переживает пересоздание инстанса и не общий для реплик; база тоже — бинарные данные раздувают её и бэкапы. Загрузку делают напрямую в хранилище по подписанной ссылке: бэкенд выдаёт временный URL с ограничениями по размеру и типу, клиент грузит файл сам, сервер узнаёт о завершении по подтверждающему запросу. Так трафик не идёт через приложение и не занимает воркеры. Раздача — подписанной ссылкой с коротким сроком для приватных файлов или через CDN для публичных. О чём забывают: подтверждение загрузки отдельным шагом, уборка неподтверждённого правилом жизненного цикла и проверка типа содержимого на сервере.