SlideShare ist ein Scribd-Unternehmen logo
1 von 63
Downloaden Sie, um offline zu lesen
Architecture d’une app qui fait 5 millions de visites
par mois
@juliencarnelos
#bdxio
Groupe Sud Ouest : 34 sociétés
• Groupe Sud Ouest
• Journaux du midi
90 millions de pages vues apps en septembre 2014
300 000
6 000 000
8 000 000
3 600 000
26 000 000
48 000 000
Sud Ouest
Midi Libre
La république des Pyrénées
L'indépendant
Charente Libre
Centre Presse Aveyron
Actu locale
Actu thématique
Journal en PDF
Notre écosystème mobile
Notre écosystème mobile
Un Mercredi à 13h
• 560 visiteurs
• 1 300 interactions / minute
• 13 100 requêtes HTTP / minute
• Peut varier x50 (élections municipales)
“Replace 5 with X”
Nos solutions
« Big Picture »
Reverse
Proxy
Server
Reverse
Proxy
Server
External
CDN
Web Services
Assets
Images Image
Resizer
MONITORING
CDN
L’app
Reverse
Proxy
Server
Reverse
Proxy
Server
External
CDN
Web Services
Assets
Images Image
Resizer
MONITORING
CDN
Extrait de notre parc
Comparaison iPhone / Android
Comparaison iPhone / Android
Notion d’application générique
• même backend
• même structure d’app
• $$ : mutualisation
• Personnalisation : couleurs, images, navigation,
services
Organisation du projet
• /Project => code source de l’app générique
• /Assets => 1 sous dossier par éditeur
• splashscreen
• couleurs, wording
• token
• 1 URL de référence
Fichier de configuration
• « Hydrater » l’application au démarrage
• http://api.sudouest.fr/conf?token=ABCDEF
• 1 token par éditeur et par app
routes internes
• Format : editeur://{page}/{params}
• so://rubrique/actu_home
• so://article/12345
• so://kiosque
• so://web/http://www.bdx.io/
• Porté dans la configuration
Définition de la
barre de navigation
Menu
Liste des services appelés : URL / Paramètres
Possibilité d’insérer du HTML dans l’app
Les scénarios possibles
• Mettre l’actu du mondial pendant 1 mois
• Lien vers un formulaire de feedback en home
• Modifier la hiérarchie de l’information
• Retirer une fonctionnalité buggée
O-Auth
• standard
• Jeton d’auth
transmis dans
les so://web/
App Hybride
HTML
CSS
JS
responsive
Moteur article webview
JSON
article
{}
JSON
profil
{}
JSON
app
{}
{ article
images
type
article payant }
{ statut }
{ device }
Template
HandleBars
Template
HandleBars
Template
HandleBars
JQuery
Logique JS
Moteur article webview
webview.zip
5 Ko
200
304
La couche service
Reverse
Proxy
Server
Reverse
Proxy
Server
External
CDN
Web Services
Assets
Images Image
Resizer
MONITORING
CDN
Approche REST
• pur REST : ❤️ en théorie
• Complexité et contraintes fortes
• Parc interne maîtrisé : on peut optimiser
Nos pratiques REST
• 99% de GET
• n° de version dans l’URL
• Clé d’API dans l’url
• Paramètres en GET plutôt que POST
• Parle HTTP : 200 / 304 / 403 / 404 / 500
Nos pratiques REST
• Copie-collable
• Facilite la
compréhension
Cache local
• Cache First / Offline
• Requête en arrière plan
• Refresh à la volée
• Importance du HTTP : 304 / E-Tag
Start de l’app
• On veut des utilisateurs à jour
• A chaque mise à jour, on vide le cache local et on
force le download des fichiers de base
• Fichier de config
• Assets
• Lors des autres lancements, 3 secondes en temps
limite (=> marche mieux sur iPhone)
L’infrastructure
Reverse
Proxy
Server
Reverse
Proxy
Server
External
CDN
Web Services
Assets
Images Image
Resizer
MONITORING
CDN
Un reverse proxy ?
• Proxy : transmet les requêtes d’un client
• Proxy inverse : transmet les requêtes à un serveur
interne - peut être intelligent -
Apache
api.sudouest.frvarnish
GET /article/12345 cache miss GET /article/12345GET /article/12345 cache hit
Reverse Proxy
• 99% traffic anonyme : Exemple GET /home
Apache
500 500
max-age 60 : 1 par minute
e-tag : 304
varnish
500 1
max-age 60
e-tag
max-age 60
e-tag
• Dumb Server / 500 mbits - 1 Gbits / 32 - 64 Go
• Tout en RAM, Cluster
Image Resizer / Thumbor
• Optimisation mémoire (Android ?)
• URL : « api.sudouest.fr/image/200/450/
image.jpg »
• Mode « Smart »
Schéma logique
varnish
frontal 1
500 mbits
Apache
ML
Thumbor
Cluster
varnish
frontal 2
500 mbits
varnish
back 1
1 Gbits
varnish
back 2
1 Gbits
Apache
SO
Apache
Dep
varnish
frontal 3
500 mbits
DNS
Resolver
CDN
externe
infini
Nos outils
Outil web interne
• Choix éditeur / version / environnement
• Choix du web service et des paramètres
Charles Proxy
Charles Proxy
Charles dans la vie
• « Le serveur retourne bien les nouvelles
données »
• « L’Ad server retourne 200 / NO FILL »
• « je suis chez FREE » (Throttling Orange)
• Infrastructure KO
Monitoring
Reverse
Proxy
Server
Reverse
Proxy
Server
External
CDN
Web Services
Assets
Images Image
Resizer
MONITORING
CDN
Crashlytics - FREE
Crashlytics
• SDK à intégrer au projet
• Suivi dans le temps :
New Relic - $$$
Fonctionnement
• Instrumente chaque appel réseau
• Instrumente le temps passé dans les activités
principales
• Ajoute son code au moment de la compilation du
projet
Dashboard New Relic
Stacktrace
Log erreur serveur
Processus de build
Build : 3 parties
• 1 moteur core par plateforme
• 1 pack ressources par éditeur / plateforme
• 1 pack « wording »
Build : processus
• JENKINS en post-commit sur GIT
• iOS : build inhouse (entreprise) et adhoc
• Tests à 90% sur la inhouse.
• Fin de recette sur adhoc (peu de devices)
• Mise en prod manuelle
• Android : 1 version build avec le certificat de
production. Si recette OK => publication
En conclusion
• Avoir le pouvoir depuis le serveur : « tirer un fil »
• Contenu responsive hybride et adaptatif
• Penser les futures extensions de l’app : o-auth,
webview, deeplink
• Monitoring actionnable
• Automatiser la génération
@juliencarnelos
#bdxio
Merci

Weitere ähnliche Inhalte

Ähnlich wie Architecture d’une app qui fait 5 millions de visites par mois

I don't always write reactive application but when I do, it run on raspberry pi
I don't always write reactive application but when I do, it run on raspberry piI don't always write reactive application but when I do, it run on raspberry pi
I don't always write reactive application but when I do, it run on raspberry piadelegue
 
Comprendre, utiliser et créer une API
Comprendre, utiliser et créer une APIComprendre, utiliser et créer une API
Comprendre, utiliser et créer une APIOlivia Reaney
 
Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !VISEO
 
La vitesse d’un site web : un levier de croissance peu exploité
La vitesse d’un site web : un levier de croissance peu exploitéLa vitesse d’un site web : un levier de croissance peu exploité
La vitesse d’un site web : un levier de croissance peu exploitéFasterize
 
Meetup Devops Geneve 06/17- EBU Feedbacks
Meetup Devops Geneve 06/17- EBU Feedbacks Meetup Devops Geneve 06/17- EBU Feedbacks
Meetup Devops Geneve 06/17- EBU Feedbacks Hidora
 
Pourquoi rails est génial? (version longue)
Pourquoi rails est génial? (version longue)Pourquoi rails est génial? (version longue)
Pourquoi rails est génial? (version longue)Camille Roux
 
Webperf et SEO : les Mythes et la Réalité
Webperf et SEO : les Mythes et la RéalitéWebperf et SEO : les Mythes et la Réalité
Webperf et SEO : les Mythes et la RéalitéFasterize
 
Webperf & SEO : les mythes et la réalité
Webperf & SEO : les mythes et la réalitéWebperf & SEO : les mythes et la réalité
Webperf & SEO : les mythes et la réalitéFasterize
 
Techniques d’accélération des pages Web
Techniques d’accélération des pages WebTechniques d’accélération des pages Web
Techniques d’accélération des pages WebMicrosoft
 
Comment Rue Du Commerce est devenu le site e-commerce le plus rapide de France ?
Comment Rue Du Commerce est devenu le site e-commerce le plus rapide de France ?Comment Rue Du Commerce est devenu le site e-commerce le plus rapide de France ?
Comment Rue Du Commerce est devenu le site e-commerce le plus rapide de France ?Fasterize
 
GtugDakar AppEngine, Gwt
GtugDakar AppEngine, GwtGtugDakar AppEngine, Gwt
GtugDakar AppEngine, Gwthkairi
 
Azure Camp 9 Décembre - slides session développeurs webmedia
Azure Camp 9 Décembre - slides session développeurs webmediaAzure Camp 9 Décembre - slides session développeurs webmedia
Azure Camp 9 Décembre - slides session développeurs webmediaMicrosoft
 
Gab 2017 Lyon - les strategies d'intégration avec Azure iPaaS - Samir Arezki
Gab 2017 Lyon - les strategies d'intégration avec Azure iPaaS - Samir ArezkiGab 2017 Lyon - les strategies d'intégration avec Azure iPaaS - Samir Arezki
Gab 2017 Lyon - les strategies d'intégration avec Azure iPaaS - Samir ArezkiSamir Arezki ☁
 
Gab 2017 Lyon - les strategies d'intégration avec Azure iPaaS - Samir Arezki
Gab 2017 Lyon - les strategies d'intégration avec Azure iPaaS - Samir ArezkiGab 2017 Lyon - les strategies d'intégration avec Azure iPaaS - Samir Arezki
Gab 2017 Lyon - les strategies d'intégration avec Azure iPaaS - Samir ArezkiAZUG FR
 
Workflow et bcs sous share point 2013
Workflow et bcs sous share point 2013Workflow et bcs sous share point 2013
Workflow et bcs sous share point 2013Nabil Babaci
 
Workflow et bcs sous SharePoint 2013
Workflow et bcs sous SharePoint 2013Workflow et bcs sous SharePoint 2013
Workflow et bcs sous SharePoint 2013Nabil Babaci
 
SharePoint Days Casablanca - Retours d'expériences et meilleures pratiques po...
SharePoint Days Casablanca - Retours d'expériences et meilleures pratiques po...SharePoint Days Casablanca - Retours d'expériences et meilleures pratiques po...
SharePoint Days Casablanca - Retours d'expériences et meilleures pratiques po...Benoit Jester
 

Ähnlich wie Architecture d’une app qui fait 5 millions de visites par mois (20)

HomeAgain
HomeAgainHomeAgain
HomeAgain
 
I don't always write reactive application but when I do, it run on raspberry pi
I don't always write reactive application but when I do, it run on raspberry piI don't always write reactive application but when I do, it run on raspberry pi
I don't always write reactive application but when I do, it run on raspberry pi
 
Comprendre, utiliser et créer une API
Comprendre, utiliser et créer une APIComprendre, utiliser et créer une API
Comprendre, utiliser et créer une API
 
Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !
 
La vitesse d’un site web : un levier de croissance peu exploité
La vitesse d’un site web : un levier de croissance peu exploitéLa vitesse d’un site web : un levier de croissance peu exploité
La vitesse d’un site web : un levier de croissance peu exploité
 
Meetup Devops Geneve 06/17- EBU Feedbacks
Meetup Devops Geneve 06/17- EBU Feedbacks Meetup Devops Geneve 06/17- EBU Feedbacks
Meetup Devops Geneve 06/17- EBU Feedbacks
 
Pourquoi rails est génial? (version longue)
Pourquoi rails est génial? (version longue)Pourquoi rails est génial? (version longue)
Pourquoi rails est génial? (version longue)
 
Webperf et SEO : les Mythes et la Réalité
Webperf et SEO : les Mythes et la RéalitéWebperf et SEO : les Mythes et la Réalité
Webperf et SEO : les Mythes et la Réalité
 
Webperf & SEO : les mythes et la réalité
Webperf & SEO : les mythes et la réalitéWebperf & SEO : les mythes et la réalité
Webperf & SEO : les mythes et la réalité
 
Techniques d’accélération des pages Web
Techniques d’accélération des pages WebTechniques d’accélération des pages Web
Techniques d’accélération des pages Web
 
Comment Rue Du Commerce est devenu le site e-commerce le plus rapide de France ?
Comment Rue Du Commerce est devenu le site e-commerce le plus rapide de France ?Comment Rue Du Commerce est devenu le site e-commerce le plus rapide de France ?
Comment Rue Du Commerce est devenu le site e-commerce le plus rapide de France ?
 
GtugDakar AppEngine, Gwt
GtugDakar AppEngine, GwtGtugDakar AppEngine, Gwt
GtugDakar AppEngine, Gwt
 
Azure Camp 9 Décembre - slides session développeurs webmedia
Azure Camp 9 Décembre - slides session développeurs webmediaAzure Camp 9 Décembre - slides session développeurs webmedia
Azure Camp 9 Décembre - slides session développeurs webmedia
 
Gab 2017 Lyon - les strategies d'intégration avec Azure iPaaS - Samir Arezki
Gab 2017 Lyon - les strategies d'intégration avec Azure iPaaS - Samir ArezkiGab 2017 Lyon - les strategies d'intégration avec Azure iPaaS - Samir Arezki
Gab 2017 Lyon - les strategies d'intégration avec Azure iPaaS - Samir Arezki
 
Gab 2017 Lyon - les strategies d'intégration avec Azure iPaaS - Samir Arezki
Gab 2017 Lyon - les strategies d'intégration avec Azure iPaaS - Samir ArezkiGab 2017 Lyon - les strategies d'intégration avec Azure iPaaS - Samir Arezki
Gab 2017 Lyon - les strategies d'intégration avec Azure iPaaS - Samir Arezki
 
REX : la webperf chez RueDuCommerce
REX : la webperf chez RueDuCommerceREX : la webperf chez RueDuCommerce
REX : la webperf chez RueDuCommerce
 
Workflow et bcs sous share point 2013
Workflow et bcs sous share point 2013Workflow et bcs sous share point 2013
Workflow et bcs sous share point 2013
 
Workflow et bcs sous SharePoint 2013
Workflow et bcs sous SharePoint 2013Workflow et bcs sous SharePoint 2013
Workflow et bcs sous SharePoint 2013
 
Présentation sharepoint 2013
Présentation sharepoint 2013Présentation sharepoint 2013
Présentation sharepoint 2013
 
SharePoint Days Casablanca - Retours d'expériences et meilleures pratiques po...
SharePoint Days Casablanca - Retours d'expériences et meilleures pratiques po...SharePoint Days Casablanca - Retours d'expériences et meilleures pratiques po...
SharePoint Days Casablanca - Retours d'expériences et meilleures pratiques po...
 

Architecture d’une app qui fait 5 millions de visites par mois