Cette start-up française se déploie sur le Containers as a Service de Google

Cette start-up française se déploie sur le Containers as a Service de Google Historiquement, MWM a recours au PaaS du géant IT américain pour opérer le backend de ses apps musicales. Elle s'est tournée plus récemment vers Google Container Engine.

MWM (pour Music World Media) est connu pour être à l'origine d'edjing Mix, l'application mobile de mixage musical la plus téléchargée. Elle comptabilise à ce jour quelque 45 millions de téléchargements. Depuis son lancement en 2012, la start-up française a élargi son portefeuille. Aux côtés d'edjing Mix, elle propose désormais une dizaine d'autres apps musicales, de quiz, de karaoké...

Pour orchestrer le backend de ses applications (de l'administration des comptes utilisateurs jusqu'à la gestion des alertes, des scores...), MWM s'adosse historiquement à Google App Engine. Un choix qualifié par la société de "naturel" car le PaaS de Google se marie bien avec Google Android. Un environnement qui reste, de très loin, l'OS mobile le plus utilisé avec plus de 85% de parts de marché. "Google App Engine fournit un gestionnaire de requêtes avec des mécanismes d'auto-dimensionnement qui nous a permis de bien négocier la montée en puissance de notre audience à l'international", souligne Damien Delépine, responsable du pôle cloud, web & big data de MWM. Grâce à cette brique, la start-up est capable d'encaisser en moyenne de 300 à 500 requêtes par seconde, avec des pics jusqu'à 800 connexions simultanées.

Un CaaS agile et aisé à utiliser

En 2016, MWM franchit une nouvelle étape dans l'utilisation du cloud de Google. La société de Boulogne-Billancourt se tourne vers l'offre de Containers as a Service (CaaS) du géant IT américain : Google Container Engine. Plusieurs preuves de concept sont d'abord réalisées en s'appuyant sur cet environnement avec pour objectif de tester de nouveaux développements : stockage de configurations utilisateurs, moteur de recherche, réplication de bases de données... "Nous nous sommes rendu compte que ce service était simple à prendre en main, il ne nécessite pas d'être DevOps. Il permet en outre d'optimiser finement la consommation de ressources informatiques, notamment pour de gros traitements, en fournissant la capacité d'exécuter des Go de données pour le coût de la maintenance d'un container unique", commente Damien Delépine.

"Nous préférons rester sur App Engine pour les traitements temps réel et synchrones de nos applications"

L'équipe technique de MWM décide alors de miser sur Google Container Engine pour les traitements asynchrones de données non-critiques, c'est-à-dire ne recouvrant pas les informations personnelles de ses utilisateurs. "Nous préférons rester sur App Engine pour les traitements temps réel et synchrones de nos applications. C'est un environnement plus stable et plus sûr pour ce type de scénario, en particulier dans l'optique de gérer de forts pics d'audience", précise Damien Delépine.

Grâce à Google Container Engine, MWM dresse notamment ses classements de musiques les plus écoutées par pays. A partir de ses données de logs (fédérées dans Google BigQuery), la start-up génère aussi via ce moteur des indicateurs d'audience à destination de ses équipes marketing. Des informations par définition non-nominatives. Au format Docker, les containers motorisés par Google assurent également le chargement et l'encodage des fichiers musicaux produits par les utilisateurs de son app de karaoké. Seule la piste correspondant au chant est uploadée (pour optimiser la bande passante).

Une maîtrise des gros processus

"Grâce à Container Engine, nous maîtrisons nettement mieux la consommation de RAM et de CPU pour tous ces gros processus. Nous pouvons par exemple allouer les upload et encodages audio par container en faisant appel à des machines virtuelles beaucoup plus puissantes et donc mieux adaptées. C'est aussi plus stable qu'App Engine pour ce type d'usage, car en cas de crash d'un container, les autres ne tombent pas. Sur App Engine, si une requête a un souci sur 30 lancées en parallèle, les 29 autres tomberont", insiste Damien Delépine. Et même si un container essuie un problème, les dispositifs de tolérance de panne de Container Engine permettent de le redémarrer très vite. Face à un tel impondérable, c'est la brique open source d'orchestration de Google, alias Kubernetes, qui se mettra en branle pour apporter la solution.

"Cet arsenal est un bon compromis entre les approches IaaS et PaaS"

Via son architecture Container Engine, MWM active entre une quinzaine et une trentaine de serveurs virtuels (basés sur Google Compute Engine) pour réaliser ces "traitements par lots" (ou batch). Google Container Engine s'accompagne d'outils d'automatisation, comme Kubernetes ou Google Container Registry, pour gérer la mise en production des containers. "Cet arsenal apporte un bon compromis entre l'approche d'un IaaS, comme Compute Engine, et celle d'un PaaS, comme App Engine", résume Damien Delépine. Et le responsable technique d'ajouter : "les containers nous ont permis en parallèle de fiabiliser nos processus de test pour l'ensemble des applications désormais basées sur Container Engine. En fournissant des environnements de test équivalents aux infrastructures de production, les containers évitent toute mauvaise surprise lors des déploiements." 

Services Google Cloud Platform utilisés par MWM
Service Google Cloud Platform Rôle alloué
Google App Engine Héberge les composants de backend critiques des applications mobiles de MWM. Langage de développement utilisé : Python.
Google BigQuery Fédère l'ensemble des données d'exploitation, d'événements/logs (lectures d'écran, de bannière, actes d'achat…).
Google Cloud SQL Base de données utilisée pour les sites vitrines des applications mobiles, les interfaces utilisateurs internes, le site institutionnel de MWM, ou encore les foires aux questions.
Google Cloud Storage Service de stockage utilisé pour la synchronisation des données entre les applications et les sauvegardes.
Google Cloud Datastore Service unifiant les données des comptes utilisateurs pour l'ensemble des applications mobiles.
Google Stackdriver Service utilisé pour superviser l'état des applications et différents processus en production sur le cloud de Google.