Retour d'expérience
d'une infrastructure
Cloud et Big Data
à très fort traffic
xxxxx Smart mobile acquisition
Smart mobile acquisition
Dev & Ops
Spring-*, Nodejs
Chef, Puppet, Docker, Graphite, ...
Co-auteur “Spring in Action”
Olivier Bazoud - @obazoud Smart mobile acquisition
xxxxx Smart mobile acquisition
Smart mobile acquisition
Et vous ? Smart mobile acquisition
xxxxx Smart mobile acquisition
Smart mobile acquisition
Smart mobile acquisition
xxxxx Smart mobile acquisition
Smart mobile acquisition
Smart mobile acquisition
Sommaire
Voyage à travers le cloud
Retour d’expérience
Déploiement
APP
SDK
A publisher ADDS the
Ogury’s SDK in his App
The publisher PUBLISHES or
updates his App with the
Ogury’s SDK inside
APP LIVE ON PLAYSTORE
APP
SDK
The user OPEN
the app
to all the users who open an App
with the SDK and who are
targeted in the campaign
1 Ad which is seen
= 1 impression
If the user click on the Ad
= 1 icon installed
If the user clicks again on the icon
APP
OPEN
SDK
1
4
5678
2 3PUBLISHER PART
ADVERTISER PART
APP
ICON
AD
CLICK
AD
SEEN
AD
SENT
DATA is SENT
SEND an AD
Smart mobile acquisition
Smart mobile acquisition
Overview
TARGETING
Methodology
XX%
Wescoreeachuserviathedatawehavecollectedand
crossreferencethiswiththecampaignobjectives
Date Time
www.amazon.com/ 22/05
www.citroen.com
www.redbull.com
www.suv.com
www.carmerchant.com/
22/05
22/05
23/05
24/05
26/05
4min.
4min.
4min.
4min.
www.kia.com
Ogury then pushes the delivery of the
recommendations based on our
‘compatability score’
USED : Sarenza 22/05
USED : Autoscout24 22/05
Date Time
App : Candy crush 22/05
App : Cityapp 22/05
App : Mr porter 22/05
App : Forbes 23/05
App : Surfsession 24/05
App : Quicksilver 26/05
4min.
4min.
5min.
0min.
2min.
1min.
100% 98% 100%
95% 100% 96%
97% 99% 94%
100% 95% 96%
50% 55% 52%
51% 54% 50%
DATA ULTRA
GRANULAIRE
- Applications téléchargées &
usages
- URLs consultées
100% ON
TARGET
- Technologie de ciblage
- Ciblage
comportementale
EXPERIENCE
UTILISATEUR
- Format qui s’adapte
- Template Ogury
FACILITE
IMPLEMENTATION
- Aucun taggage de site
- Pas de SDK à poser
Format statique
Video
Toucher votre audience sans déperdition
Ogury’s global reach
35 M
users
13 M
users
105 M
users
35 M
users
2 M
users
60 M
users
Users by country
Top 4 mobile data collector 4 locations globally 250 million users Top 200 brands
xxxxx Smart mobile acquisition
Voyage à
travers le cloud
Smart mobile acquisition
xxxxx Smart mobile acquisition
Plate-formes
1. Heroku
2. Hybride
3. AWS
xxxxx Smart mobile acquisition
Heroku
Smart mobile acquisition
xxxxx Smart mobile acquisition
Heroku
PAAS + Add-ons
Github / Travis CI
git push + pipeline
Startup
xxxxx Smart mobile acquisition
Heroku
Mobile API
Backoffice
No SQL Database
xxxxx Smart mobile acquisition
Couchbase
NoSQL document-oriented
Performance
Scalability / High availability
Cross Data Center Replication (XDCR)
xxxxx Smart mobile acquisition
Retour d’expérience
No (Dev)Ops
Difficile de scaler le front
Troubleshooting limité
Peu de Monitoring / Alerting
xxxxx Smart mobile acquisition
Hybride
Smart mobile acquisition
xxxxx Smart mobile acquisition
Hybride: Heroku / AWS
Traiter les évenements
Organiser et Analyser la data
Gestion des gros volumes
xxxxx Smart mobile acquisition
Hybride
Mobile API
Backoffice
No SQL Database
Bucket S3
Targeting
xxxxx Smart mobile acquisition
AWS
Cloud IAAS
Scalabilité / Automatisation / Agilité
Infrastructure As Code
Coûts
xxxxx Smart mobile acquisition
Kafka
Broker
Transaction logs
Topics / Partitions
Producers / Consumers
“Data is retained for a configuration period of time”
xxxxx Smart mobile acquisition
EMR / Hadoop
Besoins ponctuels
Targeting
Exploratoire / Troubleshooting
Hive / S3
xxxxx Smart mobile acquisition
Début de l’automatisation
Début de monitoring / alerting
Tuning ELK
Retour d’expérience
Jobs hadoop lents
Heroku cher pour nos besoins
xxxxx Smart mobile acquisition
AWS
Smart mobile acquisition
xxxxx Smart mobile acquisition
“Allez, on passe tout sous AWS!”
Les fondateurs
xxxxx Smart mobile acquisition
Smart mobile acquisition
Smart mobile acquisition
Chiffres
250 Millions d’utilisateurs
1 To data compressé / jour
1 Million request per minute
15 Millions messages per
minute
30 Milliards de documents
dans ES
xxxxx Smart mobile acquisition
Automatisation
Cloud Formation / Chef
Collectd / Sensu / Cloud Watch
Graphite / Grafana
xxxxx Smart mobile acquisition
Cloud Formation
Infrastructure As
Code
JSON, JSON, JSON, ...
Stack, Nested stack
Rollback, Evenements,
Timeout, ...
xxxxx Smart mobile acquisition
Cloud Formation
xxxxx Smart mobile acquisition
Chef
Automate
Cookbooks
Chef Server / Chef Client
Scale
xxxxx Smart mobile acquisition
Chef
xxxxx Smart mobile acquisition
Retour d’expérience
xxxxx Smart mobile acquisition
Kafka
xxxxx Smart mobile acquisition
AWS: To infinity... and beyond
xxxxx Smart mobile acquisition
Limites AWS
Lenteur Cloud Formation (RDS, Cloud Front, IAM)
Bonne intégration Cloud Formation / Chef
Retour d’expérience
Packer AMI: image de base seulement
JSON :(
xxxxx Smart mobile acquisition
Retour d’expérience
xxxxx Smart mobile acquisition
Déploiement
Smart mobile acquisition
xxxxx Smart mobile acquisition
Automatisation
Créer des environnements facilement (10 + 2)
Automatisation maximum
Déploiement automatique
Cloud AWS
Infra
ProdStagingTeam A
xxx xxx
xxxxx Smart mobile acquisition
Environnement
Cloud Formation: 1 env ~ 35 stacks, 200+ au total
Prêt en ~1h30
Environnement complet
Restore des datas de prod
xxxxx Smart mobile acquisition
Déploiement
Comment déployer aussi du Rails, Java, Nodejs, …?
ISO Dévelopement / Production
Déploiement identique
xxxxx Smart mobile acquisition
Docker
xxxxx Smart mobile acquisition
Docker
xxxxx Smart mobile acquisition
Docker
Images / Containers
Isolation
Linux / Mac / Windows
Layers
xxxxx Smart mobile acquisition
Dockerfile
xxxxx Smart mobile acquisition
Docker Compose
Mettre en relation plusieurs containers Docker
docker-compose.yml
xxxxx Smart mobile acquisition
docker-compose.yml
xxxxx Smart mobile acquisition
Docker Compose
xxxxx Smart mobile acquisition
Déploiement
Auto Scaling group
Amazon S3
bucket
Docker
Registry
Dev
tag hook
Code
Repository
CI
Push Docker images
End Users Amazon LB
Amazon RDS
PostgreSQL
Deploy
1
4
2
3
Deploy
instance
update instances
5
pull docker images
Amazon S3
bucket
Push artifacts
zip: docker-compose.yml
Route 53
xxxxx Smart mobile acquisition
Déploiement avec Chef
xxxxx Smart mobile acquisition
Gestion des branches
git push origin devX-xxxx
Github: Pull Request + Merge
Release / Tag
xxxxx Smart mobile acquisition
Network “host” / Logs cappé
Pas de problème lié à Docker / Docker
compose
Retour d’expérience
150+ containers en production
Choix d’un orchestrateur ?
xxxxx Smart mobile acquisition
Retour d’expérience
Pas de pipeline / Pas de promotion
Environnement: Sélectionner les
composants
Gestion des logs
xxxxx Smart mobile acquisition
Smart mobile acquisition
Big Data
59
SDK
données sur le comportement utilisateur
S3
Hadoop
Smart mobile acquisition
Smart mobile acquisition
Big Data
xxxxx Smart mobile acquisition
Smart mobile acquisition
Smart mobile acquisition
Data
Elastic Map Reduce
Hive
Lecture / Ecriture sur S3
xxxxx Smart mobile acquisition
Retour d’expérience
Créer un cluster EMR “on-demand”
Pré-processing pour chaque use-case
Pas de stockage de résultats intermédiaires
Lent
Optimisations des coûts
62
Avant Après
Smart mobile acquisition
Smart mobile acquisition
Retour d’expérience
63
Base de données relationnelle (SQL)
Orientée OLAP
Distribué pour les Big Data
Excellentes performances
Très bonne scalabilité
Hébergée dans le cloud AWS
Administration facile
Smart mobile acquisition
Smart mobile acquisition
Amazon Redshift
xxxxx Smart mobile acquisition
Performances
Avec Hive/S3/20 instances EC2: 4 heures avec 7 jours de
data
Avec Redshift/20 noeuds: 1 minute avec 2 mois de data
Compter le nombre d’utilisateurs français ayant consulté plus de 2 fois le site ‘lemonde.fr’
xxxxx Smart mobile acquisition
Dashboards
66
Planifie exécution chaînes de scripts
Ordonnancement des tâches
Scripts de différentes natures (batch, sql, …)
Lancement conditionnels
Service d’alerte
Reprise sur erreur
Smart mobile acquisition
Smart mobile acquisition
AWS DataPipeline
xxxxx Smart mobile acquisition
Smart mobile acquisition
Smart mobile acquisition
Voyage à travers le cloud
Retour d’expérience
Déploiement
Conclusion
L’infrastructure accompagne le
dévéloppement de la société
xxxxx Smart mobile acquisition
Smart mobile acquisition
olivier@ogury.co
DevOps
Dev
Java/Spring
Dev Nodejs
Dev Android
Dev Full Stack
xxxxx Smart mobile acquisition
Smart mobile acquisition
Questions ? Smart mobile acquisition

Ippevent Ogury 2016

  • 1.
    Retour d'expérience d'une infrastructure Cloudet Big Data à très fort traffic
  • 2.
    xxxxx Smart mobileacquisition Smart mobile acquisition Dev & Ops Spring-*, Nodejs Chef, Puppet, Docker, Graphite, ... Co-auteur “Spring in Action” Olivier Bazoud - @obazoud Smart mobile acquisition
  • 3.
    xxxxx Smart mobileacquisition Smart mobile acquisition Et vous ? Smart mobile acquisition
  • 4.
    xxxxx Smart mobileacquisition Smart mobile acquisition Smart mobile acquisition
  • 5.
    xxxxx Smart mobileacquisition Smart mobile acquisition Smart mobile acquisition Sommaire Voyage à travers le cloud Retour d’expérience Déploiement
  • 7.
    APP SDK A publisher ADDSthe Ogury’s SDK in his App The publisher PUBLISHES or updates his App with the Ogury’s SDK inside APP LIVE ON PLAYSTORE APP SDK The user OPEN the app to all the users who open an App with the SDK and who are targeted in the campaign 1 Ad which is seen = 1 impression If the user click on the Ad = 1 icon installed If the user clicks again on the icon APP OPEN SDK 1 4 5678 2 3PUBLISHER PART ADVERTISER PART APP ICON AD CLICK AD SEEN AD SENT DATA is SENT SEND an AD Smart mobile acquisition Smart mobile acquisition Overview
  • 8.
    TARGETING Methodology XX% Wescoreeachuserviathedatawehavecollectedand crossreferencethiswiththecampaignobjectives Date Time www.amazon.com/ 22/05 www.citroen.com www.redbull.com www.suv.com www.carmerchant.com/ 22/05 22/05 23/05 24/05 26/05 4min. 4min. 4min. 4min. www.kia.com Ogurythen pushes the delivery of the recommendations based on our ‘compatability score’ USED : Sarenza 22/05 USED : Autoscout24 22/05 Date Time App : Candy crush 22/05 App : Cityapp 22/05 App : Mr porter 22/05 App : Forbes 23/05 App : Surfsession 24/05 App : Quicksilver 26/05 4min. 4min. 5min. 0min. 2min. 1min. 100% 98% 100% 95% 100% 96% 97% 99% 94% 100% 95% 96% 50% 55% 52% 51% 54% 50%
  • 9.
    DATA ULTRA GRANULAIRE - Applicationstéléchargées & usages - URLs consultées 100% ON TARGET - Technologie de ciblage - Ciblage comportementale EXPERIENCE UTILISATEUR - Format qui s’adapte - Template Ogury FACILITE IMPLEMENTATION - Aucun taggage de site - Pas de SDK à poser Format statique Video Toucher votre audience sans déperdition
  • 10.
    Ogury’s global reach 35M users 13 M users 105 M users 35 M users 2 M users 60 M users
  • 11.
  • 12.
    Top 4 mobiledata collector 4 locations globally 250 million users Top 200 brands
  • 13.
    xxxxx Smart mobileacquisition Voyage à travers le cloud Smart mobile acquisition
  • 14.
    xxxxx Smart mobileacquisition Plate-formes 1. Heroku 2. Hybride 3. AWS
  • 15.
    xxxxx Smart mobileacquisition Heroku Smart mobile acquisition
  • 16.
    xxxxx Smart mobileacquisition Heroku PAAS + Add-ons Github / Travis CI git push + pipeline Startup
  • 17.
    xxxxx Smart mobileacquisition Heroku Mobile API Backoffice No SQL Database
  • 18.
    xxxxx Smart mobileacquisition Couchbase NoSQL document-oriented Performance Scalability / High availability Cross Data Center Replication (XDCR)
  • 19.
    xxxxx Smart mobileacquisition Retour d’expérience No (Dev)Ops Difficile de scaler le front Troubleshooting limité Peu de Monitoring / Alerting
  • 20.
    xxxxx Smart mobileacquisition Hybride Smart mobile acquisition
  • 21.
    xxxxx Smart mobileacquisition Hybride: Heroku / AWS Traiter les évenements Organiser et Analyser la data Gestion des gros volumes
  • 22.
    xxxxx Smart mobileacquisition Hybride Mobile API Backoffice No SQL Database Bucket S3 Targeting
  • 23.
    xxxxx Smart mobileacquisition AWS Cloud IAAS Scalabilité / Automatisation / Agilité Infrastructure As Code Coûts
  • 24.
    xxxxx Smart mobileacquisition Kafka Broker Transaction logs Topics / Partitions Producers / Consumers “Data is retained for a configuration period of time”
  • 25.
    xxxxx Smart mobileacquisition EMR / Hadoop Besoins ponctuels Targeting Exploratoire / Troubleshooting Hive / S3
  • 26.
    xxxxx Smart mobileacquisition Début de l’automatisation Début de monitoring / alerting Tuning ELK Retour d’expérience Jobs hadoop lents Heroku cher pour nos besoins
  • 27.
    xxxxx Smart mobileacquisition AWS Smart mobile acquisition
  • 28.
    xxxxx Smart mobileacquisition “Allez, on passe tout sous AWS!” Les fondateurs
  • 29.
    xxxxx Smart mobileacquisition Smart mobile acquisition Smart mobile acquisition Chiffres 250 Millions d’utilisateurs 1 To data compressé / jour 1 Million request per minute 15 Millions messages per minute 30 Milliards de documents dans ES
  • 30.
    xxxxx Smart mobileacquisition Automatisation Cloud Formation / Chef Collectd / Sensu / Cloud Watch Graphite / Grafana
  • 31.
    xxxxx Smart mobileacquisition Cloud Formation Infrastructure As Code JSON, JSON, JSON, ... Stack, Nested stack Rollback, Evenements, Timeout, ...
  • 32.
    xxxxx Smart mobileacquisition Cloud Formation
  • 33.
    xxxxx Smart mobileacquisition Chef Automate Cookbooks Chef Server / Chef Client Scale
  • 34.
    xxxxx Smart mobileacquisition Chef
  • 35.
    xxxxx Smart mobileacquisition Retour d’expérience
  • 36.
    xxxxx Smart mobileacquisition Kafka
  • 37.
    xxxxx Smart mobileacquisition AWS: To infinity... and beyond
  • 38.
    xxxxx Smart mobileacquisition Limites AWS Lenteur Cloud Formation (RDS, Cloud Front, IAM) Bonne intégration Cloud Formation / Chef Retour d’expérience Packer AMI: image de base seulement JSON :(
  • 39.
    xxxxx Smart mobileacquisition Retour d’expérience
  • 40.
    xxxxx Smart mobileacquisition Déploiement Smart mobile acquisition
  • 41.
    xxxxx Smart mobileacquisition Automatisation Créer des environnements facilement (10 + 2) Automatisation maximum Déploiement automatique Cloud AWS
  • 42.
  • 43.
    xxxxx Smart mobileacquisition Environnement Cloud Formation: 1 env ~ 35 stacks, 200+ au total Prêt en ~1h30 Environnement complet Restore des datas de prod
  • 44.
    xxxxx Smart mobileacquisition Déploiement Comment déployer aussi du Rails, Java, Nodejs, …? ISO Dévelopement / Production Déploiement identique
  • 45.
    xxxxx Smart mobileacquisition Docker
  • 46.
    xxxxx Smart mobileacquisition Docker
  • 47.
    xxxxx Smart mobileacquisition Docker Images / Containers Isolation Linux / Mac / Windows Layers
  • 48.
    xxxxx Smart mobileacquisition Dockerfile
  • 49.
    xxxxx Smart mobileacquisition Docker Compose Mettre en relation plusieurs containers Docker docker-compose.yml
  • 50.
    xxxxx Smart mobileacquisition docker-compose.yml
  • 51.
    xxxxx Smart mobileacquisition Docker Compose
  • 52.
    xxxxx Smart mobileacquisition Déploiement
  • 53.
    Auto Scaling group AmazonS3 bucket Docker Registry Dev tag hook Code Repository CI Push Docker images End Users Amazon LB Amazon RDS PostgreSQL Deploy 1 4 2 3 Deploy instance update instances 5 pull docker images Amazon S3 bucket Push artifacts zip: docker-compose.yml Route 53
  • 54.
    xxxxx Smart mobileacquisition Déploiement avec Chef
  • 55.
    xxxxx Smart mobileacquisition Gestion des branches git push origin devX-xxxx Github: Pull Request + Merge Release / Tag
  • 56.
    xxxxx Smart mobileacquisition Network “host” / Logs cappé Pas de problème lié à Docker / Docker compose Retour d’expérience 150+ containers en production Choix d’un orchestrateur ?
  • 57.
    xxxxx Smart mobileacquisition Retour d’expérience Pas de pipeline / Pas de promotion Environnement: Sélectionner les composants Gestion des logs
  • 58.
    xxxxx Smart mobileacquisition Smart mobile acquisition Big Data
  • 59.
    59 SDK données sur lecomportement utilisateur S3 Hadoop Smart mobile acquisition Smart mobile acquisition Big Data
  • 60.
    xxxxx Smart mobileacquisition Smart mobile acquisition Smart mobile acquisition Data Elastic Map Reduce Hive Lecture / Ecriture sur S3
  • 61.
    xxxxx Smart mobileacquisition Retour d’expérience Créer un cluster EMR “on-demand” Pré-processing pour chaque use-case Pas de stockage de résultats intermédiaires Lent Optimisations des coûts
  • 62.
    62 Avant Après Smart mobileacquisition Smart mobile acquisition Retour d’expérience
  • 63.
    63 Base de donnéesrelationnelle (SQL) Orientée OLAP Distribué pour les Big Data Excellentes performances Très bonne scalabilité Hébergée dans le cloud AWS Administration facile Smart mobile acquisition Smart mobile acquisition Amazon Redshift
  • 64.
    xxxxx Smart mobileacquisition Performances Avec Hive/S3/20 instances EC2: 4 heures avec 7 jours de data Avec Redshift/20 noeuds: 1 minute avec 2 mois de data Compter le nombre d’utilisateurs français ayant consulté plus de 2 fois le site ‘lemonde.fr’
  • 65.
    xxxxx Smart mobileacquisition Dashboards
  • 66.
    66 Planifie exécution chaînesde scripts Ordonnancement des tâches Scripts de différentes natures (batch, sql, …) Lancement conditionnels Service d’alerte Reprise sur erreur Smart mobile acquisition Smart mobile acquisition AWS DataPipeline
  • 67.
    xxxxx Smart mobileacquisition Smart mobile acquisition Smart mobile acquisition Voyage à travers le cloud Retour d’expérience Déploiement Conclusion L’infrastructure accompagne le dévéloppement de la société
  • 68.
    xxxxx Smart mobileacquisition Smart mobile acquisition olivier@ogury.co DevOps Dev Java/Spring Dev Nodejs Dev Android Dev Full Stack
  • 69.
    xxxxx Smart mobileacquisition Smart mobile acquisition Questions ? Smart mobile acquisition