2024 - BUT2 APP - "Spotify"

Présentation de l'architecture logicielle de Spotify

Slides & Videos

Members

NameContribution
Ayoub LABIBRédaction introduction
Recherche sur la partie 1 (type de service)
Recherche sur la partie 4 (les inconvénients)
Création du PDF
Luka SamacRecherche sur la partie 2 (Implémentation par spotify)
Recherche sur la partie 3 (les avantages)
Rédaction de la conclusion

State of the Art

Business Aspect
Technical Aspect

Project Description

Problem Definition
Challenges & Motivation
Real and Complete Usecases

Introduction : 

 

L’architecture logicielle joue un rôle crucial dans la structuration et la gestion des systèmes informatiques, permettant de répondre aux exigences de performance, de scalabilité et de maintenance. Dans cet exposé, nous examinerons l’architecture logicielle de Spotify, une plateforme de streaming musical qui a transformé la manière dont nous accédons à la musique. Lancé en 2006 pour contrer la montée de la piraterie musicale, Spotify a rapidement dominé l’industrie du streaming musical grâce à une architecture basée sur les microservices, facilitant la gestion de plus de 422 millions d’utilisateurs actifs mensuels et 82 millions de chansons. 

 

Type de service:

 

Débuts et évolution de l’architecture

 

L’évolution de l’architecture logicielle de Spotify a été marquée par un passage progressif d’une architecture monolithique à une architecture microservices. À ses débuts, Spotify utilisait une architecture monolithique, où l’application était un bloc unique de code. Ce modèle fonctionnait pour les premières versions de la plateforme, mais il a rapidement montré ses limites en termes de scalabilité et de flexibilité. L’adoption des microservices a permis à Spotify de surmonter ces défis, en segmentant les fonctionnalités et en facilitant le développement et le déploiement rapides de nouvelles fonctionnalités.

 

Architecture Monolithique 

 

Une architecture monolithique est un modèle de conception de logiciel dans lequel toutes les fonctionnalités de l’application sont regroupées en un seul bloc ou unité de code. Dans cette architecture, les composants de l’application, comme l’interface utilisateur, la logique métier et l’accès aux données, sont intégrés et déployés ensemble. Bien que cette approche puisse simplifier le développement initial et le déploiement, elle présente des limitations significatives en termes de scalabilité, de flexibilité, et de maintenance. L’un des principaux problèmes de l’architecture monolithique est le couplage étroit entre ses composants. Cela signifie que les différentes parties de l’application sont fortement dépendantes les unes des autres, ce qui rend les modifications, les mises à jour et le débogage beaucoup plus complexes. Toute modification apportée à un composant peut potentiellement affecter l’ensemble de l’application, nécessitant des tests et des déploiements complets, ce qui peut ralentir le cycle de développement.

 

Définition de l’Architecture Microservices

L’architecture microservices est une approche de développement logiciel où une application est décomposée en plusieurs petits services indépendants. Chaque service est conçu pour accomplir une fonction métier distincte et peut être déployé indépendamment des autres services. Cette architecture permet une plus grande flexibilité, évolutivité, et résilience des applications complexes.

 

Implémentation par Spotify :

Spotify est l’une des premières entreprises à avoir adopté et promu les avantages de l’architecture microservices. Cette décision stratégique a permis à Spotify de construire une application robuste et scalable capable de répondre aux besoins de millions d’utilisateurs en temps réel.

L’architecture microservices de Spotify est composée de centaines de services responsables de divers aspects de l’application. Chaque service est développé, déployé et mis à l’échelle de manière indépendante, ce qui permet à Spotify de lancer rapidement de nouvelles fonctionnalités. Cette architecture permet également de gérer un volume de trafic important et de coordonner plusieurs équipes travaillant simultanément sur différents services.

Les services chez Spotify sont généralement écrits en Python ou en Java et communiquent via le protocole Hermes, développé en interne en utilisant ZeroMQ et Protobuf. Cependant, certains services plus anciens utilisent encore HTTP et XML/JSON pour la communication. Pour les services de base de données et de stockage, Spotify utilise PostgreSQL et Cassandra, avec une préférence pour Cassandra pour les services basés sur le contenu, comme la recherche de chansons ou la récupération de métadonnées en temps réel.

Un service backend hautement spécialisé, appelé “access point”, maintient une communication constante avec divers clients pour assurer une interaction rapide et précise. Ce protocole, également développé par les ingénieurs de Spotify, n’a pas été rendu public. L’infrastructure logicielle de Spotify repose largement sur Debian, tandis que les logiciels open source sont préférés pour diverses activités.

L’un des secrets de la rapidité et de la fiabilité du streaming musical sur Spotify réside dans la gestion concurrente de différents types de services par des centaines de développeurs logiciels. Chaque développeur travaille dans un domaine fermé avec des fonctionnalités et des missions spécifiques. Chaque microservice a une responsabilité et un objectif uniques, avec une base de données privée et sa propre logique, garantissant une réponse rapide aux demandes des utilisateurs.

Cette architecture permet également une gestion des changements efficace. Lorsqu’un développeur doit modifier la logique d’une fonctionnalité, il peut le faire sans interrompre l’ensemble de l’application. La modification est apportée au service spécifique, testé et déployé indépendamment, ce qui assure une intégration rapide et sans perturbation.

L’architecture microservices a émergé au début des années 2000. Cependant, ce n’est qu’au cours de la dernière décennie qu’elle a gagné en popularité, en grande partie grâce à l’essor des technologies cloud et à la nécessité croissante de créer des applications plus modulaires, évolutives et résilientes. L’un des premiers et des plus influents travaux sur ce sujet a été réalisé par des entreprises comme Netflix et Amazon, qui ont partagé leurs expériences et leurs réussites dans la transition vers des microservices. Ces entreprises ont démontré comment la décomposition des applications en services indépendants pouvait améliorer non seulement l’évolutivité mais aussi la vitesse de développement et la capacité à innover rapidement. 

Plusieurs grandes entreprises de divers secteurs ont adopté l’architecture microservices pour répondre à leurs besoins spécifiques en matière de scalabilité, de déploiement continu et de gestion de la complexité. Par exemple, Uber a migré vers une architecture microservices pour gérer ses services de transport et de livraison. Cette approche a permis à Uber de gérer efficacement la complexité et la scalabilité de ses opérations globales, en améliorant la résilience et en facilitant le déploiement de nouvelles fonctionnalités. En outre, cette transition a aidé Uber à réduire le temps de mise sur le marché de nouvelles fonctionnalités et à améliorer la disponibilité et la fiabilité de ses services. 

 

Avantages de l’Architecture Microservices:

Avantages Généraux:

  • Scalabilité: Les microservices permettent de faire évoluer indépendamment chaque composant de l’application en fonction des besoins.
  • Flexibilité: Les développeurs peuvent utiliser différentes technologies et langages de programmation pour chaque service, augmentant ainsi la flexibilité.
  • Résilience: La défaillance d’un service n’affecte pas l’ensemble de l’application, augmentant la résilience du système.
  • Maintenabilité: Les microservices facilitent la maintenance et la mise à jour des applications, car chaque service peut être modifié indépendamment.
  • Agilité: Cette approche permet un développement et un déploiement plus rapides des nouvelles fonctionnalités.
  • Productivité des équipes: Les microservices permettent à des équipes petites et concentrées de travailler indépendamment sur des services spécifiques sans interférer avec les autres équipes.

Avantages pour Spotify: Pour Spotify, l’architecture microservices offre des bénéfices spécifiques, tels que:

  • Rapidité de développement: Permet de lancer rapidement de nouvelles fonctionnalités et de les tester indépendamment.
  • Gestion efficace du trafic: Facilite la gestion de millions d’utilisateurs simultanés sans compromettre les performances.
  • Personnalisation: Améliore la capacité à personnaliser l’expérience utilisateur, notamment via des recommandations musicales précises et des services personnalisés.
  • Fiabilité et disponibilité: Assure une disponibilité continue du service, même en cas de mise à jour ou de panne d’un service individuel.

 

Inconvénients de l’Architecture Microservices

Malgré ses nombreux avantages, l’architecture microservices présente aussi quelques inconvénients:

  • Complexité accrue: La gestion de nombreux services indépendants peut entraîner une complexité accrue en termes de déploiement et de monitoring.
  • Coûts opérationnels: Les microservices nécessitent une infrastructure plus sophistiquée, souvent plus coûteuse à maintenir.
  • Défis de communication: La communication inter-services peut introduire des latences et des problèmes de synchronisation.
  • Gestion des données: Assurer la cohérence des données à travers plusieurs services peut être complexe et nécessite des stratégies de gestion des transactions distribuées.

 

Conclusion 

L’architecture microservices a permis à Spotify de se démarquer comme un leader dans le domaine du streaming musical, en offrant une plateforme robuste, scalable et flexible. Bien que cette approche présente certains défis, les avantages en termes de développement rapide, de gestion efficace du trafic et de personnalisation de l’expérience utilisateur surpassent largement les inconvénients, faisant de l’architecture microservices une solution idéale pour des applications complexes et à grande échelle comme Spotify

Technical Description

Hardware

Materials
ImageNamePart NumberPriceCountLink
🛒
Schematic

Software

External Services