Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Traiter des requètes, de 200K/jour à 200K/min

Traiter des requètes, de 200K/jour à 200K/min

Talk au sfPot Paris du 18/10

Nicolas Thal

October 18, 2016
Tweet

More Decks by Nicolas Thal

Other Decks in Programming

Transcript

  1. Adback, https://adback.co, @adback_co Projet lancé en janvier 2015 3 développeurs

    (depuis 6 mois) Outil d’analyse des adblockeurs Qui sommes-nous
  2. Existant en mai Projet mono-bloc 3 serveurs chez OVH 1MySql,

    1 Redis Quelques commandes consoles Pas de scaling Pas de monitoring Spaghetti code
  3. Intégration de nouveaux sites Limitation dans le nombre de traitement

    Ban par les firewalls OVH en raison de flooding
  4. Migration Vers quoi ? Vers où ? Avec quelle technologie

    ? En combien de temps ? Refactoring ? Chez AWS Les mêmes 2 semaines max Non
  5. Identification des différents process Satellites : servir les tags js

    et récupérer les données Workers : réaliser l’enrichissement des données Worker-cache : réaliser le pré-calcul des données la nuit Back-office : présenter le résultat aux clients
  6. Elastic Beanstalk et docker Permet de lancer plusieurs container sur

    une instance EC2 Le scaling est réalisé en ajoutant des instances EC2 La configuration se fait par un fichier Dockerrun.aws.json Mise à disposition d’un executable local (eb) Le déploiement peut aussi mettre à jour les containers
  7. Échecs Récupération des ips : $request->getClientIp() => Ip du loadbalancer

    AWS Limitation de la base MariaDB (1000 insert/sec) Tests
  8. Modification de la base Séparation des données : Données principales

    Données d’enrichissement Données pour les statistiques Destination : MariaDB Aurora Redshift
  9. Modification de la base Procedure : Les entitées sont décrites

    par des interfaces Modifications des relations avec les autres entitées
  10. Migration de la base De Aurora à Redshift : Extraction

    des données sous la forme d’un csv Importation dans Redshift en utilisant Embulk
  11. Tests Mise en place d’une librairie partagée : Garantie que

    les données sorties sont bien ré-analysées
  12. Assurer la cohérence des données Utilisation de la stack Druid.io/Pivot

    Druid.io permet l’importation des données en CSV Permet de faire de l’analyse en temps réel
  13. Assurer la cohérence des données Utilisation de la stack GGS

    pour réaliser du monitoring métier Installation d’un agent statsd par container
  14. Ce qui nous a aidé Être en remote : Obligation

    de livrer quelque chose d’utilisable tout de suite Livrer avec la documentation d’utilisation
  15. Ce qui nous a aidé Séparer l’implementation de l’utilisation :

    Rendre le code open-sourcable rapidement Ne pas privilégier l’optimisation sur le design
  16. Ce qui nous a aidé Être agile : Cérémonie, stand

    up, petites tâches Finir les tâches des collègues