Architecture microservices pour les plateformes vidéo
Découper ingestion, transcodage, packaging et API en services : frontières, files d'attente, Kubernetes et modes de défaillance pour les plateformes vidéo.

On this page
Introduction à l'architecture microservices
L'architecture microservices est une approche de conception où de grandes applications complexes sont décomposées en petits services indépendants qui communiquent entre eux via des API bien définies. Chaque microservice porte une capacité métier précise et s'exécute dans son propre processus. Cette architecture offre plusieurs avantages par rapport aux architectures monolithiques traditionnelles :
- Scalabilité : chaque service peut être mis à l'échelle indépendamment selon la demande.
- Maintenabilité : des bases de code plus petites sont plus faciles à comprendre, tester et maintenir.
- Souplesse de déploiement : on peut déployer changements et mises à jour sans impacter toute l'application.
- Isolation des pannes : un incident sur un service ne se propage pas aux autres.
À l'inverse, les architectures monolithiques regroupent tous les composants dans une seule unité fortement couplée. Cela peut simplifier le développement et le déploiement au début, mais devient de plus en plus lourd à mesure que l'application grandit. Les microservices lèvent ces limites en permettant une conception plus modulaire et plus flexible.
Vue d'ensemble de l'architecture d'une plateforme vidéo
Une plateforme vidéo typique se compose de plusieurs briques clés : ingestion, transcodage, packaging et couche API. Chacune remplit une tâche précise qui contribue au fonctionnement global.
Composants d'une plateforme vidéo
1. Couche d'ingestion : reçoit et traite les flux vidéo entrants.
2. Couche de transcodage : convertit les flux vidéo en différents formats et qualités.
3. Couche de packaging : prépare le contenu pour la diffusion sur internet.
4. Couche API : expose des endpoints pour gérer et récupérer le contenu vidéo.
L'importance d'une conception modulaire
Une conception modulaire permet de développer, déployer et mettre à l'échelle chaque couche indépendamment. Cela simplifie la maintenance et accélère les cycles de développement. Si la couche d'ingestion doit prendre en charge un nouveau protocole, les développeurs peuvent s'y concentrer sans toucher aux autres.
Concevoir la couche d'ingestion
La couche d'ingestion est cruciale pour traiter les flux vidéo entrants. Elle prend en charge divers protocoles comme RTMP, SRT et HLS, chacun avec ses forces et ses cas d'usage.
Protocoles d'ingestion
RTMP (Real-Time Messaging Protocol)
RTMP est un protocole propriétaire développé par Adobe pour le streaming vidéo en temps réel. Il s'appuie sur TCP et UDP et prend en charge le live à faible latence.
SRT (Secure Reliable Transport)
SRT est un protocole de transport open source développé par Haivision. Il étend UDP avec le chiffrement, la reprise sur erreur et le contrôle de flux. SRT est particulièrement utile pour le streaming longue distance et gère efficacement la perte de paquets.
HLS (HTTP Live Streaming)
HLS est un protocole de streaming à débit adaptatif développé par Apple. Il utilise HTTP pour diffuser le contenu vidéo et est largement pris en charge sur une grande variété d'appareils et de plateformes.
Points de sécurité
La sécurité est primordiale dans la couche d'ingestion pour empêcher les accès non autorisés et garantir l'intégrité des données. Les mesures courantes incluent :
- Chiffrement : utiliser TLS (Transport Layer Security) pour chiffrer les données en transit.
- Authentification : mettre en place une authentification par jeton pour vérifier l'identité des diffuseurs.
- Contrôle d'accès : restreindre l'accès à des adresses IP précises ou utiliser la limitation de débit pour prévenir les abus.
Exemple : ingérer une vidéo en SRT
Pour ingérer une vidéo en SRT, vous pouvez utiliser FFmpeg avec la commande suivante :
```sh
ffmpeg -i input.mp4 -f srt -srtp_suite 12345 -srtp_streamid 67890 output.srt
```
Dans cet exemple, `input.mp4` est le fichier source, `12345` l'identifiant de suite SRT et `67890` l'identifiant de flux. La sortie est enregistrée sous `output.srt`.
Services de transcodage et de packaging
Le transcodage et le packaging sont essentiels pour diffuser le contenu vidéo dans un format adapté aux différents appareils et réseaux. Le workflow consiste généralement à convertir les fichiers vidéo en divers codecs et formats de conteneur.
Workflow et processus
Le workflow type comprend les étapes suivantes :
1. Prétraitement : analyser les fichiers d'entrée et extraire les métadonnées.
2. Transcodage : convertir les flux vidéo et audio dans les formats souhaités.
3. Packaging : assembler les flux encodés dans un format de diffusion comme MP4 ou HLS.
4. Optimisation : compresser et optimiser les fichiers pour une diffusion plus rapide.
Choisir les bons codecs et formats
Différents codecs conviennent à différents scénarios. Par exemple :
- H.264 : largement pris en charge, avec une bonne efficacité de compression.
- H.265 (HEVC) : meilleure compression, mais plus gourmand en puissance de calcul.
- VP9 : open source et efficace pour le streaming à faible latence.
Les formats de diffusion comme HLS et DASH (Dynamic Adaptive Streaming over HTTP) sont couramment utilisés pour leur débit adaptatif, qui permet aux appareils d'ajuster la qualité selon les conditions réseau.
Couche API
La couche API fournit une interface standardisée pour interagir avec la plateforme vidéo. Elle prend en charge les opérations d'envoi, de traitement et de récupération du contenu vidéo.
API REST vs GraphQL
- API REST : utilisent les méthodes HTTP (GET, POST, PUT, DELETE) pour interagir avec les ressources.
- GraphQL : permet aux clients de spécifier exactement les données dont ils ont besoin, réduisant les problèmes de sur- et sous-récupération.
Modèles de passerelle API
Une passerelle API (API gateway) sert de point d'entrée unique pour tous les clients. Elle route les requêtes vers les bons microservices, gère l'authentification et applique la limitation de débit.
Déploiement et gestion des processus
Les plateformes vidéo modernes utilisent souvent des gestionnaires de processus comme PM2 pour les services Node.js. PM2 offre gestion des processus, clustering et redémarrages automatiques sans la surcharge des conteneurs.
Architecture des services
- Isolation des processus : chaque microservice s'exécute comme un processus distinct avec son propre espace mémoire.
- Variables d'environnement : utiliser des variables d'environnement pour les réglages de configuration.
- Contrôles de santé : implémenter des endpoints de santé pour la supervision et la reprise automatique.
- Journalisation : centraliser les logs pour faciliter le débogage et la supervision.
Orchestration
Les plateformes d'orchestration automatisent le déploiement, la mise à l'échelle et la gestion des services distribués. Les options incluent PM2 pour Node.js, systemd pour les services Linux ou Kubernetes pour les déploiements à grande échelle.
Stratégies de déploiement
- Services avec ou sans état : les services avec état (comme les bases de données) exigent un stockage persistant, contrairement aux services sans état.
- Mises à jour progressives (rolling updates) : mettre à jour les services graduellement, sans interruption.
Mise à l'échelle et répartition de charge
Les répartiteurs de charge distribuent le trafic entre les instances de service. La mise à l'échelle peut être manuelle (ajouter des instances PM2) ou automatique selon des métriques comme l'usage CPU et mémoire.
Supervision et journalisation
Des outils comme Prometheus et Grafana servent à la supervision, tandis que la pile Elasticsearch, Logstash et Kibana (ELK) prend en charge la journalisation.
Scalabilité et performances
La scalabilité est cruciale pour absorber des charges variables et garantir les performances. Il existe deux grands types de mise à l'échelle :
- Mise à l'échelle horizontale : ajouter des instances d'un service pour répartir la charge.
- Mise à l'échelle verticale : augmenter les ressources (CPU, mémoire) d'une même instance.
Tests de charge et optimisation
Des outils de test de charge comme JMeter et Gatling simulent le trafic utilisateur pour repérer les goulots d'étranglement. Les techniques d'optimisation incluent la mise en cache, la compression et l'intégration d'un CDN.
Défis et solutions
Mettre en place des microservices dans une plateforme vidéo comporte plusieurs défis :
- Latence réseau : une latence élevée peut nuire au streaming temps réel. Les solutions incluent l'optimisation des chemins réseau et l'usage de protocoles à faible latence.
- Cohérence des données : garantir la cohérence des données à travers des systèmes distribués est ardu. Des techniques comme l'event sourcing et les transactions distribuées peuvent aider.
Étude de cas : mettre en place des microservices chez DCAST
DCAST utilise une architecture microservices pour offrir un streaming vidéo scalable et performant. La plateforme est conçue pour gérer des millions de flux simultanés à faible latence.
Vue d'ensemble de l'architecture de DCAST
- Couche d'ingestion : prend en charge plusieurs protocoles, dont RTMP et SRT.
- Services de transcodage : exploitent des codecs et formats avancés pour une diffusion optimale.
- Couche API : expose des API REST pour la gestion des contenus.
Comparaison des protocoles d'ingestion
| Protocole | Fonction | Force | Faiblesse |
|---|
| RTMP | Streaming temps réel | Faible latence | Propriétaire, sans reprise sur erreur |
|---|
| SRT | Transport sécurisé et fiable | Grande résilience, chiffrement | Configuration plus complexe |
|---|
| HLS | Streaming à débit adaptatif | Large prise en charge des appareils | Latence plus élevée |
|---|
Conclusion
L'architecture microservices offre des avantages majeurs aux plateformes vidéo : scalabilité, flexibilité et meilleures performances. En concevant et en implémentant soigneusement leurs microservices, les plateformes vidéo peuvent offrir des expériences de streaming de haute qualité à un large éventail d'utilisateurs.
Pour aller plus loin
Foire aux questions
Qu'est-ce que l'architecture microservices pour une plateforme vidéo ?
Elle découpe une plateforme vidéo en petits services indépendants — ingestion, transcodage, packaging, API et diffusion — qui se mettent à l'échelle et se déploient séparément, ce qui permet de faire grandir les parties les plus sollicitées sans tout redéployer.
Comment mettre à l'échelle le transcodage dans une plateforme vidéo en microservices ?
Exécutez le transcodage comme un pool de services workers sans état derrière une file d'attente. Ajoutez ou retirez des workers selon le backlog de jobs, et gardez des paramètres d'encodage et un accès au stockage identiques sur chaque worker pour que n'importe quel job puisse s'exécuter n'importe où.
Comment les microservices communiquent-ils dans une plateforme vidéo ?
Via des API bien définies et des files de messages. Le REST ou gRPC synchrone gère les appels requête/réponse, tandis que les files découplent les jobs de longue durée comme le transcodage des services qui les soumettent.
Comment l'état est-il géré à travers les microservices vidéo ?
L'état réside dans des stores partagés — bases de données pour les métadonnées, stockage objet pour les médias et caches pour les données chaudes — plutôt qu'à l'intérieur des services, de sorte que toute instance peut être remplacée sans perdre la progression.
dcast Team
Professional video streaming experts helping creators succeed.
Articles similaires
Lancez votre activité vidéo dès aujourd’hui
Rejoignez des milliers de créateurs qui monétisent leur contenu avec DCAST.
Commencer gratuitement


