Spotify es un sistema de transmisión de música en tiempo real (streaming). Permite a los usuarios explorar un catálogo de canciones y pódcasts, y luego pulsar el botón de reproducción para escuchar el audio en sus dispositivos.
La promesa fundamental es sencilla. Cuando un oyente pulsa el botón de reproducción, la aplicación debe iniciar el sonido rápidamente y mantener la reproducción, incluso cuando el teléfono cambia entre redes móviles de señal fuerte y débil.
Antes de abordar la escalabilidad, la versión más simple consiste en una aplicación cliente que se comunica con un único backend. Este backend responde a consultas sobre el catálogo —como información del artista, el álbum y la duración de la pista— y también suministra los datos de audio para la reproducción.
Esta configuración básica cuenta con una base de datos para los metadatos y un sistema de almacenamiento de objetos para los archivos de audio. No utiliza CDN, réplicas ni colas de mensajes; por tanto, cada solicitud de reproducción depende de que ese único backend funcione correctamente y con rapidez. A continuación, se presenta esta configuración básica en un esquema integral:
En el diagrama, el cliente móvil envía solicitudes a través de Internet a un servidor de aplicaciones. El servidor de aplicaciones lee los metadatos de la pista desde la base de datos de metadatos y el archivo de audio desde el almacén de objetos de audio; luego, transmite el audio de vuelta al cliente a través de la misma conexión. Al no haber capas adicionales, cualquier ralentización en el servidor de aplicaciones, la base de datos o el almacén de objetos se manifiesta directamente como un inicio más lento o interrupciones durante la reproducción.
Para este curso, el alcance funcional se mantiene limitado. Un oyente puede explorar, realizar búsquedas sencillas y reproducir audio; el sistema debe devolver la pista correcta y, a continuación, entregar el flujo de audio.
Dos señales nos indican cuándo deja de funcionar la configuración base de un solo servidor. La primera es la latencia de inicio en el percentil 95 (p95): el 95 % de los intentos de reproducción deben comenzar dentro de un tiempo objetivo, ya que una proporción significativa de inicios lentos da la impresión de que la aplicación no funciona correctamente. La segunda es la reproducción simultánea: cuando muchos usuarios pulsan “reproducir” al mismo tiempo, un momento de alta actividad se convierte en una carga sostenida para el backend y el almacenamiento.
Tan pronto como escalamos la configuración base, reaparecen los mismos conceptos de compromiso de diseño (trade-offs). Estos vinculan una decisión de diseño con un resultado visible en Spotify, como un inicio de reproducción más rápido, una factura de servicios en la nube más elevada o menos interrupciones durante los picos de tráfico.
Esta tabla vincula el vocabulario con el flujo de reproducción y las tareas en segundo plano: