Ir al contenido principal
短.be

Arquitectura de un acortador de URL

Diseño interno de un servicio de acortamiento de URL, que abarca la generación de identificadores, el diseño de la base de datos, la estrategia de caché y el procesamiento de redirecciones.

24 ago 2026 · Lectura de aproximadamente 2 min

Acortamiento de URL

La arquitectura de un acortador de URL describe el diseño interno y los mecanismos técnicos que componen un servicio de acortamiento de URL. Es un tema recurrente en entrevistas de diseño de sistemas y un excelente ejemplo para aprender los principios de diseño de servicios web escalables.

La arquitectura básica se compone de tres elementos. Primero, el motor de acortamiento, que recibe la URL larga, genera un código corto único y lo almacena en la base de datos. Segundo, el motor de redirección, que recibe las solicitudes a la URL acortada, consulta el destino en la base de datos y devuelve una respuesta 301 o 302. Tercero, el motor de analítica, que recopila y agrega los datos de clics para ofrecer estadísticas.

Existen tres métodos principales para generar códigos cortos: basado en contador (se convierte un ID secuencial a Base62), basado en hash (se toman los primeros N caracteres del hash MD5 o SHA256 de la URL) y generación aleatoria (se crea una cadena aleatoria y se verifica que no exista colisión). El método basado en contador es el más sencillo y no produce colisiones, por lo que suele elegirse como punto de partida. Su punto débil es que los códigos quedan en secuencia, de modo que las URL acortadas creadas por otras personas se pueden recorrer de forma mecánica. Cuando las URL no están pensadas para ser públicas, lo habitual es transformar el valor del contador antes de mostrarlo, o bien pasar a la generación aleatoria con comprobación de colisiones. Compartir un mismo contador entre varios servidores plantea además la cuestión de dónde se mantiene la unicidad de los identificadores.

La clave de la escalabilidad reside en la estrategia de caché. Una URL acortada se registra una vez y se lee cada vez que alguien la abre, por lo que la redirección genera muchas más lecturas que escrituras y una capa de caché con Redis o Memcached resulta muy eficaz. Mantener en caché las URL acortadas que más se abren reduce drásticamente las consultas a la base de datos y acorta el tiempo necesario para localizar el destino. La espera que percibe la persona que hace clic incluye además el viaje de ida y vuelta entre su dispositivo y el servidor, de modo que la caché no la determina por sí sola.

En cuanto al diseño de la base de datos, los almacenes clave-valor como DynamoDB o Redis son ideales para la búsqueda de URL acortadas. La estructura es simple: el código corto como clave y la URL original junto con metadatos como valor. Cuando las lecturas y escrituras dejan de caber en un solo nodo, cabe plantear un particionamiento que reparta los datos entre varios nodos tomando el código corto como criterio. Dividir solo por el primer carácter puede concentrar los registros en un nodo según cómo se generen los códigos, así que conviene elegir un reparto que quede equilibrado.

Compartir en XHatena

¿Te resultó útil este artículo?

Términos relacionados

Artículos relacionados

Preguntas frecuentes

¿Es difícil crear un servicio de URL acortadas desde cero?
La funcionalidad básica (acortar + redirigir) se puede implementar en pocas horas. Sin embargo, para un servicio listo para producción se necesitan caché, limitación de tasa, detección de URL maliciosas y alta disponibilidad, entre otros requisitos adicionales.
¿Cómo se evitan las colisiones de códigos cortos?
Con el método basado en contador no hay colisiones mientras los identificadores se entreguen desde un único punto. Si varios servidores los emiten en paralelo, hay que repartir de antemano los rangos de numeración. Con los métodos de hash o generación aleatoria, se verifica en la base de datos que el código generado no exista previamente y, en caso de colisión, se regenera.
¿Qué base de datos conviene usar para un acortador de URL?
Los almacenes clave-valor como DynamoDB o Redis son los más adecuados por su alto rendimiento en lecturas. Para proyectos pequeños, PostgreSQL o MySQL también funcionan bien. Añadir una capa de caché con Redis garantiza respuestas rápidas independientemente de la base de datos elegida.

Pon los términos en práctica

Acorta una URL gratis