Refonte de l'infrastructure
"The Optin Machine"

Qui ? Quoi ?

Benjamin Dos Santos


  • Je travaille chez Arthur Media Group depuis deux ans
  • Développeur Web la première année
  • Administrateur système depuis un an :
    • Déploiement / Administration / Supervision des infrastructures
    • Évolution de l'existant

Arthur Media Group

Régies :


  • P comme Performance
  • Mails & Brands

Éditeur :


  • Welcome Media

Collecte :


  • The Optin Machine

P comme Performance / Mails & Brands

Régies publicitaires e-mail à la performance

  • 30 collaborateurs, 7 langues, 12 pays
  • 53 bases gérées : 23 M&B + 30 PCP
  • 53M de profils
  • 2400 campagnes envoyées par mois
  • 112M++ de mails envoyés sur M&B par mois
  • 20M++ de clics par mois
  • Clients : Groupe Prisma Press, Groupe Webedia, Météo France, UGC ...

Welcome Media

Éditeur

The Optin Machine

Collecte

  • Acquisition d'adresses emails : jeux concours, enquêtes, overlays ...
  • Livraison des profils collectés
  • 4 millions d'emails recrutés en 2010
  • Plus d'1 milliard d'impressions
  • 600 opérations par mois

Présentation du projet

Refonte de l'infrastructure de la société The Optin Machine :


  • Base de Collecte
  • Supports de Collecte
  • Tracking
  • Serveurs "statiques"

L'existant

Limites / Inconvénients

La Haute Disponibilité :


  • SPOF (point unique de défaillance) au niveau de la collecte, tracking et bases de données

Tracking instable (nodejs) :


  • Fuites de mémoire
  • Crash du service
  • Redémarrage de la machine

Limites / Inconvénients

La base de données MySQL :


  • Tables utilisant le moteur MyISAM :
    • Tables verrouillées en écriture
    • Délais d'attente expirés : perte d'informations
  • Structure relationnelle "inadaptée" aux nouveaux supports de collecte
  • Champs mal indexés / typés

Limites / Inconvénients

Opérations sur la base de données :


  • Mettre en oeuvre la réplication nécessite de verrouiller les tables du serveur maître en écriture : interruption du service
  • 70 GO de données !
  • Sauvegardes à chaud :
    • MySQL Dump : long à effectuer, lent à restaurer
    • Snapshot ? Nous n'utilisons pas LVM, RDS etc ...

Objectifs de la refonte

  • - Améliorer la disponibilité de l'infrastructure

  • - Gestion des configurations

  • - "Orchestration" des serveurs

Étude des solutions

Base de données de collecte

Bases de données NoSQL orientées document :


  • MongoDB
  • CouchDB

Étude des solutions

Tracking

  • Abandon de Nodejs : instable
  • Fichiers journaux / bases de données clef-valeur distribuées :
    • Redis
    • Memcached

Étude des solutions

Serveurs statiques

  • Lighttpd / Nginx
  • Synchronisation avec Rsync / Stockage réseau

Technologies retenues

Serveurs statiques

  • Nginx : serveur HTTP haute performance
  • Stockage NAS haute disponibilité : NFS
  • Répartition de charge : weighted round robin

Technologies retenues

Base de données de collecte

Apache CouchDB™ is a database that uses JSON for documents, JavaScript for MapReduce queries, and regular HTTP for an API

Technologies retenues

Supports de collectes

  • Nginx : serveur web en frontal
  • PHP : validation et enregistrement des données
  • REST : les applications utilisent HTTP pour communiquer avec CouchDB

Technologies retenues

Tracking

  • Nginx : serveur web en frontal
  • PHP + Redis : enregistrement des affichages et cliques
  • REST : agrégation des statistiques de chaque serveur

Technologies retenues

Gestion des configurations

  • Puppet : modules dédiés à la configuration des serveurs selon leur rôle :

    • Bases de données
    • Serveurs statiques
    • Serveurs de tracking
    • Serveurs d'applications

  • Git + Github : gestion de versions, déploiements

Technologies retenues

Classification des serveurs par rôle avec Puppet

Technologies retenues

Classification des serveurs par rôle avec Puppet

      # Databases servers
      node '/^db\d+\.optin-machine\.fr$/' {
        include couchdb
      }

      # Tracking servers
      node '/^tracking\d+\.optin-machine\.fr$/' {
        include tom_tracking
      }

      # Statics servers
      node '/^static\d+\.optin-machine\.fr$/' {
        include tom_static
      }
      

Technologies retenues

Orchestration des serveurs / déploiements

Fabric is a Python (2.5 or higher) library and command-line tool for streamlining the use of SSH for application deployment or systems administration tasks.

Technologies retenues

Orchestration des serveurs / déploiements

Exemple de tâches Fabric :


  • Déploiement des applications et modules Puppet depuis Github
  • Configuration des machines avec Puppet
  • Mise à jour des serveurs, redémarrage des services ...

Technologies retenues

Supervision : Shinken + Thruk

thruk

Technologies retenues

Supervision : graphiques avec Munin

  • Charge cpu, disque, RAM, interfaces réseaux, requêtes HTTP/s ...
  • Agrégation des graphiques des machines du même "pool"
nginx requests

Technologies retenues

Supervision : centralisation des Logs

Déploiement

Hardware

  • Serveurs dédiés OVH
  • Stockage NAS HA

Infrastructure actuelle

Difficultés rencontrées

  • Instabilités CouchDB
  • Formation sur le tas à des nouvelles technologies : nosql etc ...
  • Délai de réalisation

Conclusion

Résultats obtenus et avantages apportés

  • Industrialisation de l'administration système et des déploiements
  • Administration système centralisée
  • Haute disponibilité

Perspectives

Le cloud publique :


  • Agilité et élasticité instantanée
  • Economique : facturation à l'usage

Questions ?