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, no produce colisiones y se utiliza ampliamente en servicios a gran escala.
La clave de la escalabilidad reside en la estrategia de caché. Las operaciones de redirección son abrumadoramente de lectura (más de 100 veces más que las de escritura), por lo que una capa de caché con Redis o Memcached resulta muy eficaz. Mantener en caché las URL acortadas más populares reduce drásticamente las consultas a la base de datos y permite tiempos de respuesta inferiores a 1 milisegundo.
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. En servicios que procesan miles de millones de solicitudes mensuales, también se recurre al particionamiento (sharding) de la base de datos, por ejemplo dividiendo por el primer carácter del código corto. Puedes encontrar libros relacionados en Amazon.