Сохраняйте долговечные результаты обратно в объектное хранилище, а в БД — их ключи, статус задачи и метаданные. Локальный диск pod используйте только как временный.
Организация обработки файлов из S3 в Kubernetes‑кластерe
Сохраняйте долговечные результаты обратно в объектное хранилище, а в БД — их ключи, статус задачи и метаданные. Локальный диск pod используйте только как временный.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Файл загружается в хранилище S3. Запросы на его обработку поступают к воркерам, работающим в Kubernetes. Каждый воркер скачивает файл из S3, проводит требуемую обработку.
Необходимо определить, куда сохранять полученные результаты и как построить процесс их передачи и сохранения.
Ответ
Сохраняйте долговечные результаты обратно в объектное хранилище, а в БД — их ключи, статус задачи и метаданные. Локальный диск pod используйте только как временный.
Сообщение очереди содержит job_id, ключ исходного объекта, его версию и параметры обработки. Worker получает задачу, обрабатывает поток или временный файл и загружает результат под уникальным версионированным ключом. После успешной загрузки фиксирует статус и ссылку, затем подтверждает сообщение.
Повторы должны быть безопасны: уникальность job_id/версии обработки и условный переход состояния предотвращают двойную фиксацию. Результат, загруженный до сбоя записи в БД, может остаться сиротой — предусмотрите reconciliation/cleanup. Для больших файлов используйте multipart и контрольные суммы. Права worker ограничьте нужными префиксами. Для выдачи приватных результатов подходят временные подписанные ссылки.