Architecture
Un contrôleur qui décide, des nœuds qui exécutent.
Le contrôleur ne fait passer aucune image. Il tient l’inventaire, prépare les hôtes, place les conteneurs et surveille. Le travail temps réel vit sur les nœuds, au plus près de la carte réseau.
Vue d’ensemble
Trois plans réseau, une synchronisation commune, un bus par nœud.
Contrôleur
Application web centrale, sans conteneur de production à bord.
| Rôle | Plan de contrôle uniquement : inventaire, déploiement, câblage, supervision, protocoles broadcast. |
|---|---|
| Pile | Python 3.13, Flask, base SQLite, thread de surveillance à période fixe. |
| Interface | Une seule application web, traduite en français et en anglais et ouverte à d’autres langues, trois thèmes, permissions par utilisateur. |
| Extension | Les types de conteneurs et les intégrations sont des modules séparés, versionnés indépendamment. |
| Sécurité | Aucune valeur de site dans le code versionné, jeton par nœud, jeton par conteneur injecté au démarrage, piste d’audit des actions. |
Nœuds
Des serveurs Debian enrôlés, pilotés par leur agent.
| Agent | Service HTTP local, jeton propre au nœud, responsable du cycle de vie Docker et des opérations sur l’hôte. |
|---|---|
| Préparation | Hugepages, profil de carte réseau, files d’attente, liaison des ports au pilote DPDK, isolation de cœurs, tout est posé par le contrôleur. |
| Capacités | Un nœud déclare ce qu’il sait faire : moteur 2110, calcul, médias, GPU. Le placement en tient compte. |
| Autonomie | Si le contrôleur disparaît, l’agent veille sur les scripts déployés et les relance. |
| Installation | Installeur dédié, démarrage réseau UEFI HTTP ou média USB, prise en main à distance par contrôleur d’administration. |
| Réseau conteneurs | Segment macvlan, une adresse par conteneur, passerelle déduite de la route par défaut du nœud. |
Bus mémoire et réplication
Les essences ne repassent pas par le réseau à l’intérieur d’un nœud.
Les flux vidéo, audio et données vivent en mémoire partagée, dans un domaine commun à tous les conteneurs du nœud. Un producteur écrit ses grains, les consommateurs les lisent sans copie réseau et sans encodage intermédiaire. Un consommateur qui perd son producteur se rattache seul quand celui-ci revient.

| Origine | Le bus est la Media eXchange Layer, la couche d’échange qu’appelle l’EBU Dynamic Media Facility Reference Architecture. Bobi.Studio s’appuie sur son SDK, publié sous Apache 2.0, plutôt que d’inventer un transport propriétaire. |
|---|---|
| Domaine | Mémoire partagée locale au nœud, indexation des grains dérivée du temps. |
| Essences | Vidéo planar, audio multicanal, données auxiliaires. |
| Interopérabilité | Le bus est un format ouvert : d’autres implémentations lisent et écrivent les mêmes flux. |
| Inter-nœuds | Réplication RDMA, répartition sur plusieurs ports, réconciliation des liens. |
Les trois plans réseau
Séparés parce qu’ils n’ont ni les mêmes contraintes ni les mêmes pannes.
| Média ST 2110 | Carte dédiée, pilote en kernel-bypass, multicast, PTP. Aucun trafic de gestion ne le traverse. |
|---|---|
| Conteneurs | Segment macvlan, une adresse par conteneur, joignable directement par le contrôleur. |
| Contrôle | Adresse fixe du nœud, posée à l’installation, porte l’agent et l’administration. |
Le multicast est alloué de façon centralisée, une adresse par flux, avec réservation atomique : un groupe appartient à un seul flux, et l’affiliation IGMP est posée sur l’interface qui le porte.
Seul le plan média est propre au ST 2110. Une installation qui entre et sort en SRT ou en RTMP n’utilise que le segment des conteneurs et le plan de contrôle : ni carte dédiée, ni PTP, ni multicast.
Synchronisation
Sans synchronisation commune, il n’y a pas de chaîne, seulement des flux.
Chaque nœud se cale sur la référence PTP du site. Le contrôleur échantillonne l’écart, garde l’historique et alerte sur un décrochage. Les descriptions de session émises portent la référence de synchronisation de la chaîne.
| Protocole | IEEE 1588 avec profil broadcast SMPTE ST 2059. |
|---|---|
| Par nœud | Démons de synchronisation pilotés par le contrôleur, avec état et écart remontés en continu. |
| Moteur 2110 | Sur les nœuds en kernel-bypass, la synchronisation de la carte est tenue par le moteur lui-même. |
| Suivi | Historique des écarts, épisodes de décrochage, alerte contextualisée. |
Ressources
On mesure, on ne devine pas.

Chaque type de conteneur porte un profil de consommation, établi en charge de production. L’allocateur réserve des cœurs dans la bande isolée du nœud en tenant compte de la topologie mémoire, puis un second mécanisme vérifie le placement réellement obtenu : bande respectée, affectation posée, répartition des fils d’exécution. Ce que le calcul prévoit et ce que la machine fait sont deux choses distinctes, et les deux sont affichées.
La bande passante mémoire du nœud est mesurée séparément. Sur les serveurs où elle est le facteur limitant, elle explique des plafonds que le nombre de cœurs disponibles ne suffit pas à expliquer.
Haute disponibilité
Le secours dit qu’il est seul. Il ne se promeut pas tout seul.
Deux contrôleurs peuvent fonctionner en paire, l’actif répliquant son état vers le secours. Le secours sonde l’actif en permanence ; passé un délai sans réponse, un témoin visible sur toutes les pages mène directement à la promotion.
La bascule du pilotage reste un geste humain, et c’est délibéré : sans témoin tiers, un contrôleur coupé du réseau ne peut pas distinguer « l’autre est mort » de « je suis isolé », et se promouvoir dans le doute donnerait deux pilotes pour une même production. L’adresse de management, elle, bascule automatiquement.
Prérequis matériel
Ce qu’il faut prévoir avant d’acheter.
| Contrôleur | Machine Debian 13 avec Python 3.13, physique ou virtuelle. Pas de contrainte temps réel. |
|---|---|
| Nœud de calcul | Debian 13 avec Docker. Les cœurs isolés et la bande passante mémoire comptent plus que la fréquence brute. |
| Nœud 2110 | Carte réseau Intel E810 pour le plan média, hugepages, cœurs isolés, accès PTP. Requis seulement pour les nœuds qui portent des ports 2110. |
| GPU | Carte NVIDIA en option. Elle décharge le processeur : encodage matériel NVENC pour les sorties et le monitoring, accélération de la composition. Un même nœud tient donc davantage de conteneurs. |
| RDMA | Cartes compatibles RoCE pour la réplication du bus entre nœuds. |
| Réseau | Un plan média capable de multicast et de PTP, un segment pour les conteneurs, un plan de contrôle. |
Le guide d’infrastructure du dépôt détaille les choix de processeur, de mémoire, de carte réseau et de redondance, avec les points qui font échouer une installation.
Lisez le détail à la source.
Guide d’infrastructure, guide d’installation, contrat de l’agent-nœud et documentation de la haute disponibilité sont versionnés avec le code.