No hagas pasar los bytes por tu API. Que el cliente pida una URL de subida prefirmada, suba directamente al almacenamiento de objetos con subida multiparte para archivos grandes y luego avise a tu servicio, que verifica el objeto y guarda los metadatos. Valida el tipo de contenido y los límites de tamaño en la propia política, escanea de forma asíncrona antes de que el archivo sea usable, y genera URLs firmadas de vida corta para las descargas en lugar de hacer públicos los objetos.
Por qué lo preguntan los entrevistadores
Es una pregunta de diseño que saca muchas cosas a la vez: streaming frente a acumular en memoria, elección de almacenamiento, seguridad y procesamiento asíncrono. El entrevistador quiere que evites el diseño ingenuo donde un hilo de petición retiene dos gigabytes, y que pienses en validación y reanudación. Las repreguntas de seguridad, sobre el alcance de la URL prefirmada y el contenido no confiable, separan a los ingenieros cuidadosos de quienes solo consiguieron que funcionara.
Cómo estructurar tu respuesta
- Mantén los bytes fuera de tu aplicación: directo al almacenamiento de objetos.
- Describe el flujo: prefirma, subida multiparte, callback de finalización.
- Cubre validación, escaneo de virus y cómo el archivo pasa a ser usable.
- Gestiona las descargas con URLs firmadas de vida corta y comprobación de acceso.
Ejemplo de respuesta
La primera decisión es que el archivo nunca pasa por mi API, porque dos gigabytes a través de un manejador de peticiones bloquean un worker, cuestan ancho de banda dos veces y se rompen en cuanto se cae una conexión. Así que el cliente pide a mi servicio una URL de subida prefirmada, acotada con precisión a una clave, un tipo de contenido y una caducidad corta, y sube directamente al almacenamiento de objetos. Para archivos de este tamaño uso subida multiparte, que me da reanudación, porque una parte fallida se reintenta en vez de todo el archivo. Cuando la subida termina el cliente llama de vuelta o, mejor, el almacenamiento emite un evento, y mi servicio verifica que el objeto existe y coincide con el tamaño esperado antes de escribir los metadatos. El archivo empieza en estado pendiente y solo pasa a usable tras el procesamiento asíncrono: escaneo, comprobar el tipo de contenido real a partir de los bytes en lugar de fiarse de la extensión, y generar las miniaturas que hagan falta. Las descargas van por una URL firmada de vida corta emitida tras una comprobación de autorización, nunca por un bucket público, que es de donde vienen sorprendentemente muchas filtraciones de datos.
¿Tienes esta entrevista a la vuelta de la esquina? GhostPilot escucha tu llamada en vivo, detecta la pregunta en cuanto la hacen y pone una respuesta estructurada en tu pantalla en tiempo real. Pruébalo en tu próxima entrevista de práctica, o coge un Session Pass de $29, sin suscripción, para la de verdad.
Mira cómo funcionaPreguntas de seguimiento que puedes esperar
- ¿Cómo evitas que alguien use una URL prefirmada para subir otra cosa?
- ¿Cómo gestionarías un cliente que desaparece a mitad de subida?
- ¿Cómo darías soporte a subidas reanudables en una conexión móvil inestable?
Más preguntas para Desarrollador backend
Tu entrevistador hará su propia versión de esta. Pega la descripción real del puesto en el Question Predictor gratuito y obtén las 20 preguntas que ese puesto tiene más probabilidades de hacerte, con lo que cada una busca en realidad.
Predecir mis preguntas