O Spotify é um sistema de streaming de música. Ele permite que as pessoas naveguem por um catálogo de músicas e podcasts e, em seguida, pressionem “play” para ouvir o áudio em seus dispositivos.
A promessa fundamental é simples. Quando um ouvinte toca no botão de reprodução, o aplicativo deve iniciar o som rapidamente e mantê-lo tocando, mesmo quando o telefone transita entre redes móveis de sinal forte e fraco.
Antes de escalar, a versão mais simples consiste em um aplicativo cliente comunicando-se com um único backend. O backend responde a consultas sobre o catálogo — como artista, álbum e duração da faixa — e também fornece os bytes de áudio para a reprodução.
Essa configuração básica conta com um banco de dados para metadados e um armazenamento de objetos para arquivos de áudio. Não há CDN, réplicas ou filas; portanto, cada solicitação de reprodução depende de que esse único backend permaneça estável e rápido. Aqui está essa configuração básica representada em um único diagrama de ponta a ponta:
No diagrama, o cliente móvel envia solicitações pela internet para um servidor de aplicativos. O servidor de aplicativos lê os metadados da faixa no banco de dados de metadados e o arquivo de áudio no armazenamento de objetos de áudio, transmitindo então o áudio de volta para o cliente pela mesma conexão. Sem camadas adicionais, qualquer lentidão no servidor de aplicativos, no banco de dados ou no armazenamento de objetos reflete-se diretamente em uma inicialização mais lenta ou em interrupções (travamentos) durante a reprodução.
Para este curso, o escopo funcional permanece restrito. O ouvinte pode navegar, realizar buscas simples e reproduzir áudio; o sistema deve retornar a faixa correta e, em seguida, entregar o fluxo de áudio.
Dois indicadores nos mostram quando a configuração básica de servidor único deixa de ser suficiente. O primeiro é a latência de início p95: 95% das tentativas de reprodução devem começar dentro de um tempo-alvo, pois uma longa sequência de inicializações lentas dá a impressão de que o aplicativo está com defeito. O segundo é a reprodução simultânea: muitos usuários pressionam “reproduzir” ao mesmo tempo, transformando um momento de pico em uma carga sustentada sobre o backend e o armazenamento.
À medida que escalamos a configuração básica, os mesmos conceitos de compromisso de projeto reaparecem. Eles vinculam uma escolha de design a um resultado visível no Spotify, como uma inicialização de reprodução mais rápida, uma fatura de nuvem mais alta ou menos interrupções durante picos de tráfego.
Esta tabela associa o vocabulário ao fluxo de reprodução e às tarefas em segundo plano: