¿Cuál es la arquitectura de Spotify?

La arquitectura backend de Spotify está fuertemente orientada al servicio. El backend está compuesto por aproximadamente cien servicios, la mayoría de ellos bastante pequeños y simples. Los servicios están escritos en Python o Java con algunas excepciones. Servicios
comunicarse principalmente utilizando nuestro propio protocolo llamado Hermes, que es un mensaje basado y construido en ZeroMQ y Protobuf. Los servicios más antiguos todavía usan cargas útiles HTTP y XML / JSON. El almacenamiento es principalmente PostgreSQL, Cassandra o varios índices estáticos. Este último lo utilizan principalmente los diversos servicios de contenido, por ejemplo, para búsqueda o metadatos. Los archivos de audio se almacenan en Amazon S3 y se almacenan en caché en nuestro backend o usando CDN para baja latencia.

Los diversos clientes mantienen una conexión persistente a un servicio de fondo denominado “punto de acceso”. Básicamente funciona como un enrutador de mensajes con esteroides, manejando la comunicación con los servicios necesarios. El protocolo entre clientes y el
El punto de acceso es propietario.

Los clientes de escritorio, móviles y nuestra biblioteca incorporable, libspotify, comparten una base de código común. Luego, cada cliente se basa en este núcleo para proporcionar interfaces de usuario y otras adopciones específicas de la plataforma. La base del código compartido está escrita en C ++ y las adopciones de la plataforma en los lenguajes nativos de la plataforma, por ejemplo, ObjC en iOS. Además, muchas vistas y aplicaciones en el cliente de escritorio ahora se implementan como aplicaciones web, utilizando una instancia incrustada de Chromium.

El audio se recupera de la memoria caché local, de igual a igual o de nuestro almacenamiento. Nuestra solución P2P ha sido descrita en detalle en varios documentos por Gunnar Kreitz (documentos).

La infraestructura se basa en gran medida en Debian y en el software de código abierto en general.

Deberías fastidiar a Niklas Gustavsson para que responda él mismo, pero aquí hay algunas diapositivas que hizo: Arquitectura de Spotify – Presionando reproducir.

@jooon en Twitter también habla públicamente sobre este asunto de vez en cuando, pero sus diapositivas son un poco más surrealistas: http://www.slideshare.net/jooon

Niklas Gustavsson ya dio una excelente respuesta, así que haré todo lo posible para agregarla. Los productos que componen la pila tecnológica de Spotify incluyen:

Amazon (CloudSearch, CloudFront, S3) Android Wear SDK, Apache (Cassandra, Kafka, CloudStack, Web Server), Babel, Bootstrap, DbVisualizer, Fabric, Genymotion, Java, jQuery, Mashape, Modernizr, Objective-C, PostgreSQL, PyCharm, Python, Raml, Reveal, SQLite, Testflight, Underscore.js, UpSource, Bynder, Carpathia by QTS, Crashlytics, Datadog, DigiCert, Disqus, Docker, Domaininfo Domain Registration, eNom Hosting, Fastly, GoDaddy SSL, Kount, New Relic, nginx , Pingdom, PractiTest, TeamCity, Tumblr y WordPress.

Además, aquí hay una lista de otros productos de software que Spotify está usando internamente:

  • Comercialización : 4C Insights, AdRoll, Embajador, Chute
  • Ventas y soporte : ROKT, Salesforce Sales Cloud, Lithium, Qualaroo
  • Producto y diseño : ActiveInbox, Blossom, LeanKit, Splash
  • Análisis : ajuste, Apache Ambari, Google Analytics, Hortonworks
  • HR : Beamery, Jobvite, Piazza
  • Finanzas y contabilidad : Digital River, PayNearMe
  • Productividad : Slack, Dropmark, Siftery, Knotable

Para obtener una lista completa del software utilizado por Spotify, consulte: Pila de Spotify | Siftery

(Descargo de responsabilidad: los datos anteriores se obtuvieron de Siftery y han sido verificados por personas que trabajan en Spotify)

Spotify tiene dos videos relativamente cortos sobre su cultura de ingeniería, que se adentra un poco en su arquitectura:

  • Cultura de ingeniería de Spotify (parte 1)
  • Cultura de ingeniería de Spotify (parte 2)

Su arquitectura se basa en microservicios. Busque “microservicios” en Google y encontrará una gran cantidad de contenido sobre esta filosofía de arquitectura en general.

Hay un documento titulado por el Royal Institute of Technology y Spotify
Estocolmo, Suecia, sobre este tema. Está disponible aquí: http://code.lifeisagraph.com/p2p