Après le succès du projet Ensemble reposant sur la solution de vidéoconférence Jitsi, les équipes de Scaleway ont voulu aller plus loin en terme de fonctionnalités avec une nouvelle solution de vidéoconférence BigBlueButton. Cette nouvelle solution, à la fois complète et moins dépendante de la plateforme client est installée directement sur nos serveurs physiques BareMetal.

Ce qui a été accompli avec Jitsi

Les plateformes de visioconférences sont devenues indispensables pour rester en contact avec vos proches et assurer le travail à distance. Dans cette optique et dès l'annonce du confinement, Scaleway a mis au service de la communauté la solution de visio-conférence opensource et souveraine, Jitsi, pendant toute la durée de la crise Covid-19.

Gratuite, open-source et souveraine, la vidéoconférence Jitsi powered by Scaleway vise à fournir des serveurs Jitsi capables de gérer une charge importante de demandes de ponts vidéo. En effet, toutes les instances Jitsi sont constamment monitorées afin de suivre leur capacité à absorber les pics de charge. Cela nous permet de nous assurer que chaque utilisateur dispose de l'instance la moins utilisée pour créer une salle virtuelle et lancer un appel.

Aujourd'hui, l'API stateless est composé d'un Front en React et d'une API qui effectue une requête sur un Prometheus (toutes les 30 secondes) afin d'obtenir la liste de tous les serveurs Jitsi disponibles et leur utilisation actuelle du CPU.

L'application web sélectionne ensuite le serveur Jitsi qui a le plus de CPU disponible et renvoie l'URL à l'utilisateur. Grâce à cette URL, l'utilisateur peut facilement se connecter au serveur Jitsi et commencer à profiter de l'appel avec une qualité sonore et vidéo optimale. Tous les serveurs Jitsi sont déployés sur des instances Scaleway Elements qui peuvent contenir un grand nombre de ponts vidéo simultanés.

Pourquoi proposer une alternative à Jitsi avec BigBlueButton ?

La solution de visioconférence ensemble.scaleway reste disponible et gratuite jusqu'a fin Juillet 2020. Scaleway s'est penché sur une alternative à Jitsi en utilisant cette fois-ci, BigBlueButton qui est un système de visioconférence développé à la base pour la formation à distance. L'application web est basée sur HTML5 et ne nécessite l'installation d'aucun logiciel ni de plugin.

En effet, BigBlueButton est disponible en licence open source et ne nécessite aucune installation supplémentaire sur les appareils clients tels que Windows, MacOS, Linux, Android, iOS. Nous avons également choisi cette solution car elle s'avère être plus robuste et plus disponible. Elle propose également de nombreuses fonctionnalités collaboratives telles que :

  • Le tableau blanc
  • Le lecteur de slide
  • Le partage d'écran
  • La demande de parole virtuelle
  • La création de sous-salle de réunion
  • Le Chat privé entre participants

BigBlueButton est calibrée pour les appels en visioconférence en grand comité. En ne limitant pas le nombre de participants et avec des pics de trafic souvent élevé, la solution ne montre pas de signes de faiblesse. La plateforme a l'avantage d'être aussi stable et simple à utiliser que d'autres solutions de visioconférences célèbres avec des options pour contrôler les autorisations des participants par exemple.
Afin d'assurer cette stabilité Scaleway a choisi de très gros serveurs pour son infrastructure back-end plutôt que plusieurs petits, et a donc opté pour des serveurs BareMetal puissants avec une configuration matérielle sans hyperviseur et sans couche de virtualisation.

Comment avons nous configuré BigBlueButton powered by Scaleway ?

La solution BigBlueButton recommande une installation directe sur serveur physique, nous sommes donc parti sur un cluster de serveur Bare Metal GP-BM1-M. Celui-ci présente les avantages suivants au niveau de la configuration du materiel :

  • CPU: 1× Intel® Xeon E3 1240v6 - 4C 8T - 3.7 GHz
  • RAM: 64 GB
  • Stockage: 3×1 TB
  • Bande passante: 500 Mbit/s

L'équipe a mis à disposition une image Ubuntu avec BigBlueButton configuré automatiquement. L’installation est faite grâce a un script librement disponible sur github.

Première étape : Le module Terraform

Terraform est un outil d'infrastructure que nous avions également utilisé pour la plateforme Jitsi. Il permet de gérer toutes les ressources cloud dans un paradigme déclaratif (infrastructure as code). C'est en particulier le module BareMetal qui viendra créer chaque serveur dédié du cluster BigBlueButton. Le plugin prendra en paramètre l'ID de l'os spécialement crée pour l'occasion.

resource "scaleway_baremetal_server_beta" "bbb" {
  for_each = local.instances

  zone          = "fr-par-2"
  offer       = "GP-BM1-M"
  os_id       = "3ea52186-1e57-499e-8146-ab38051a5c10"
  ssh_key_ids = [
    data.scaleway_account_ssh_key.user1.id,
    data.scaleway_account_ssh_key.user2.id,
    data.scaleway_account_ssh_key.user3.id,
  ]
}

Le reste de l'infrastructure Ensemble-bbb.scaleway se compose d'instances compute:

  • 2 x DEV1-L (NGINX, React frontend, BigBlueButton proxy)
  • 1 x DEV1-L (Prometheus)

Deuxième étape : La répartition des salles

Comme pour la solution Jitsi nous avons un frontend en React qui permet via une interface unique de contacter une API interne pour créer une salle sur l'un des nombreux serveurs.

BigBlueButton embarque un mécanisme d'enregistrement d'utilisateur et de propriétaire de salle. Pour éviter à chaque utilisateur de s'enregistrer sur chaque node pour créer ou rejoindre une salle, nous avons rendu transparente cette partie en fournissant à l'utilisateur deux routes d'api qu'il peut fournir à ses participants. Une première route pour se connecter en modérateur de salle et l'autre en tant que simple participant.

Comme mentionné précédemment, L'API interroge régulièrement chaque serveur BigBlueButton pour récupérer le nombre de salle et de participant, ce qui permet une répartition égal de charge sur le cluster.

Troisième étape : Reprendre tous les avantages de l'intégration ensemble.scaleway.com

Un billet technique, en anglais "Building a scalable video conferencing solution in a single day, using Jitsi and Scaleway Elements" illustre de façon détaillée les outils, le déploiement et l'intégration de la solution ensemble.com. Les mêmes produits et composants Scaleway ont été repris pour la mise en place de BigBlueButton.

Scaleway Registry : L'API et le frontend en React fonctionnent dans deux conteneurs et sont tous les deux hébergés sur un registre privé Scaleway. Une fois stockées sur le registre, les images peuvent être extraites dans l'instance grâce à un deamon docker contrôlé par docker-compose pour exécuter l'application.

Scaleway Load-Balancer : Les Load Balancer vont transmettre automatiquement les demandes à nos serveurs API en fonction de la disponibilité des ressources. Nos serveurs API sont ceux qui fournissent des informations sur la charge actuelle de chaque serveur BigBlueButton afin de garantir que l'utilisateur dispose du serveur le plus disponible.

Scaleway Placements Groups : Dans le cadre de notre application, nous voulons nous assurer que les serveurs API soient aussi disponibles que possible. Nous avons donc activer le mode max_availability.

Scaleway Security Groups : Sur les instances API, nous n'avons autorisé que la connexion HTTPS et la connexion d'accès à distance SSH. A contrario, sur les serveurs BigBlueButton, seuls sont autorisés les ports SSH et ceux nécessaires au fonctionnement de BigBlueButton.

Scaleway Domains : Nous avons généré un certificat wildcard pour tous les sous-domaines de ensemble-bbb.scaleway.com. Chaque serveur BigBlueButton reçoit son certificat qui est utilisé par leur serveur Nginx pour gérer les connexions HTTPS.

Les prochaines étapes


Scaleway continue de travailler activement sur à la fois https://ensemble.scaleway.com/ et https://ensemble-bbb.scaleway.com/ afin d'apporter notre soutien au plus grand nombre de personnes dans cette période difficile. Pour en savoir plus, n'hésitez pas à tester dès aujourd'hui la solution BigBlueButton powered by Scaleway, de lire notre documentation à ce sujet ou de créer votre premier serveur BareMetal.