2023-SA-Porthos-Architecture_Discord

Présentation de l'architecture logicielle de Discord et comparaison avec ses concurrents.

Slides & Videos

Members

NameContribution
Breville AlexandreDiscord qui utilise l’architecture WebTCR
Explication des bots Discord et de leur utilisation
Explication du WebTCR
Concurrents de Discord
Cleante AubertIntroduction générale de Discord
Architecture utilisée par Discord ( Précisions parties client et serveur propre à Discord )
Aide sur l’architecture Web TCR
Concurrent de Discord ( Teamspeak )

Project Description

Problem Definition
Quelle est l'architecture qu'utilise Discord et comment se situe Discord face à ses concurrents ?
Challenges & Motivation
Discord est une plateforme de communication en ligne qui a été créée en 2015 par Jason Citron et Stanislav Vishnevskiy. À l'origine, la plateforme a été développée pour les joueurs afin de leur permettre de communiquer plus facilement pendant les parties en ligne. Depuis  Discord s'est élargi pour inclure des communautés de toutes sortes, y compris les groupes de discussion, les équipes de travail, les développeurs et les communautés en ligne.
Real and Complete Usecases

 

Architecture utilisée par Discord : 

L’architecture client-serveur est un modèle d’organisation logicielle qui implique la division des responsabilités de l’application en deux parties distinctes : le client et le serveur. Dans cette architecture, le client est une application qui interagit avec l’utilisateur final et présente les résultats des requêtes au serveur. Le serveur est une application qui traite les requêtes provenant du client et renvoie les résultats au client. 

  1. Client : L’interface utilisateur de Discord est l’application installée sur l’ordinateur, le téléphone portable ou la tablette de l’utilisateur. Le client permet à l’utilisateur de se connecter au serveur Discord, de communiquer avec d’autres utilisateurs, de créer ou de rejoindre des canaux de discussion, et d’accéder aux fonctionnalités de l’application.
  2. Serveur : La partie serveur de Discord est responsable du stockage de toutes les données utilisateur, y compris les messages, les fichiers, les paramètres de compte, etc. Il doit garantir la confidentialité, l’intégrité et la disponibilité des données. Le serveur Discord gère la création, la modification et la suppression des canaux de discussion. Il gère également les autorisations d’accès aux canaux et les restrictions de contenu.Le serveur Discord doit garantir la sécurité des utilisateurs et des données. Il utilise des mécanismes de sécurité tels que l’authentification, l’autorisation et le chiffrement pour protéger les données et prévenir les violations de sécurité.

Avec Discord il est possible de développer des applications qui peuvent devenir des bots, ils sont une composante essentielle pour un serveur Discord bien géré. Vous pouvez trouver des robots Discord pour automatiser les tâches de modération ainsi que pour ajouter de la musique, des sondages, des jeux, des cadeaux et bien plus encore.

En somme, le côté client de Discord est responsable de l’interface utilisateur et de la communication entre les utilisateurs, tandis que le côté serveur gère le stockage des données, la gestion des canaux et la sécurité. Cette architecture client-serveur permet à Discord de fournir des services de communication rapides, fiables et sécurisés à ses utilisateurs.

 

 

Technical Description

Description de l’architecture utilisée 

Le WebRTC, qui signifie Web Real-Time Communications (Communications Web en temps réel), est un projet open source qui permet des communications en temps réel sans plugin via une API Javascript. Ce système facilite les applications de navigateur à navigateur pour les appels vocaux, le chat vidéo et le partage de fichiers. VP8 est le codec actuellement pris en charge pour ce projet. Le WebRTC utilise un serveur appelé Web Conferencing Server qui, avec un serveur STUN, est nécessaire pour fournir la page initiale et synchroniser les connexions entre deux points de terminaison.

L’histoire du WebRTC a débuté en Mai 2010 avec le rachat de la société Global IP Solutions (GIPS) par Google. Ensuite, un an après le rachat de GIPS, Google publie sous licence open source les technologies issues de ce rachat, servant de fondation au projet WebRTC. Dès 2011, Google s’associe à différents éditeurs comme Mozilla et Opéra pour développer le WebRTC et en faire un standard technologique ouvert.

Le WebRTC fonctionne en peer-to-peer. Le flux média ne transite donc pas par un serveur centralisé mais directement entre les navigateurs des utilisateurs. Le serveur centralisé se chargeant simplement de la signalisation et de la gestion de la mise en relation entre les utilisateurs. La signalisation et le média sont donc gérés différemment dans le WebRTC. La signalisation se fait généralement au sein d’une WebSocket mais cette dernière n’est pas définie par le WebRTC. Vous êtes donc libre de choisir le protocole de signalisation le plus adapté à votre média.

Le WebRTC vise a grandement simplifier l’expérience de voix sur IP dans un contexte Web, il permet de se débarrasser de tout plugin et de directement se connecter à une chambre de conférence, de passer un appel, de partager des documents, depuis son navigateur. Il offre ainsi la possibilité de joindre son service client depuis le site internet de son fournisseur, sans avoir à changer de plateforme, créant ainsi des expériences de communications nouvelles et enrichies. Le WebRTC est aussi la garantie de disposer d’un service de communication plus facilement  accessible. En effet, ce dernier va utiliser des ports de connexion standards, utilisés par son navigateur Web et généralement autorisés par son département informatique.

 

Le WebRTC est devenu le nouveau standard de communication peer-to-peer entre navigateurs web. Il permet notamment à tout utilisateur disposant d’une application web VoIP compatible, de passer des appels ou de réaliser des visio-conférences directement au sein de son navigateur. Plus besoin d’extension, de widgets ou de plugins, tout est 100% natif au navigateur.

Le WebRTC est supporté par Google Chrome, Mozilla Firefox, Safari, Opera et les autres navigateurs basés sur Chromium, à la fois dans leurs versions bureau et Android.

Comparaison avec ses concurrent : 

En termes de concurrents, Discord en possède énormément car le marché de la messagerie instantanée/vidéoconférences est un marché avec beaucoup d’opportunités. On peut citer Skype qui était un concurrent direct à Discord. Ce sont des applications similaires qui permettent aux utilisateurs de se connecter via VoIP, chat, appels vocaux, appels vidéo et réunions de groupe. Bien que la plupart de leurs fonctionnalités se chevauchent, il existe des différences significatives entre les deux applications.

 

Discord offre à ses utilisateurs une protection contre les attaques DDoS et contre les adresses IP, ce qui garantit une sécurité totale entre les clients et les serveurs. En revanche, Skype a été mal noté pour sa sécurité à cause de nombreuses fuites mais a tout de même pris ses mesures, cachant les adresses IP des utilisateurs.

 

Discord se distingue de Skype par ses méthodes de transmission audio et son utilisation des données. Skype fonctionne comme une connexion téléphonique, en transmettant des données audio en continu, comme pour un appel téléphonique. En revanche, Discord n’envoie des données audio que lorsqu’un utilisateur parle pendant un appel. Les deux applications diffèrent dans leur bande passante recommandée, Skype ayant une bande passante étendue de 100 kbps pour les appels vocaux et Discord n’ayant que 64 kbps en comparaison.

 

Avec Skype, les utilisateurs peuvent passer des appels audio et vidéo de groupe, avec jusqu’à 25 personnes en même temps. En revanche, Discord limite à 10 le nombre d’utilisateurs pouvant participer à un appel de groupe mais si l’utilisateur crée un serveur, il peut monter ce nombre jusqu’à 99.

 

En outre, Skype permet aux utilisateurs de passer des appels vers d’autres numéros de téléphone, y compris des lignes fixes, alors que Discord ne limite les appels qu’à d’autres utilisateurs de Discord.

Hardware

Materials
ImageNamePart NumberPriceCountLink
NamePart NumberPrice for oneCount🛒
Schematic

Software

External Services

Name