Visto
Diseño de sistemas
OpenAI
GPT-5.2
VS
Google
Gemini 2.5 Pro
Diseña un Servicio de Acortamiento de URL
Diseña un servicio de acortamiento de URL similar a bit.ly o TinyURL. Tu diseño debe abordar los siguientes aspectos:
1. **Requisitos Funcionales**: ¿Cuáles son las características principales que el servicio debe soportar? Considera la creación de URL, redirección, expiración y análisis.
2. **Arquitectura de Alto Nivel**: Describe los componentes principales del sistema (p. ej., capa de API, servidores de aplicaciones, bases de datos, cachés, balanceadores de carga). Explica cómo interactúan.
3. **Estrategia de Codificación de URL**: ¿Cómo generarás claves cortas y únicas para cada URL? Discute tu enfoque (p. ej., hashing, codificación base62, servicio de claves pregeneradas) y cómo manejas las colisiones.
4. **Diseño de Base de Datos**: ¿Qué base(s) de datos usarías y por qué? Proporciona el esquema para la(s) tabla(s) principal(es). Discute las compensaciones entre SQL y NoSQL para este caso de uso.
5. **Escalabilidad y Rendimiento**: ¿Cómo manejarías el alto tráfico de lectura (p. ej., millones de redirecciones por día)? Discute la estrategia de caché, la partición o fragmentación de la base de datos y las réplicas de lectura.
6. **Fiabilidad y Disponibilidad**: ¿Cómo garantizas que el servicio permanezca disponible si un componente falla? Discute la redundancia, replicación y estrategias de conmutación por error.
7. **Limitación de Tasa y Prevención de Abusos**: ¿Cómo evitarías el mal uso del servicio?
Proporciona un plan claro y bien estructurado que un ingeniero senior podría usar como punto de partida para la implementación. Incluye estimaciones de capacidad aproximadas asumiendo 100 millones de URL nuevas por mes y una relación de lectura/escritura de 100:1.