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

63
Architecture d’une app qui fait 5 millions de visites par mois @juliencarnelos #bdxio

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

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

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

@juliencarnelos

#bdxio

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

Groupe Sud Ouest : 34 sociétés

• Groupe Sud Ouest

• Journaux du midi

Page 3: Architecture d’une app qui fait 5 millions de visites par mois
Page 4: Architecture d’une app qui fait 5 millions de visites par mois

90 millions de pages vues apps en septembre 2014

300 0006 000 000

8 000 0003 600 000

26 000 000

48 000 000

Sud OuestMidi LibreLa république des PyrénéesL'indépendantCharente LibreCentre Presse Aveyron

Actu locale Actu thématique Journal en PDF

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

Notre écosystème mobile

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

Notre écosystème mobile

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

Un Mercredi à 13h

• 560 visiteurs

• 1 300 interactions / minute

• 13 100 requêtes HTTP / minute

• Peut varier x50 (élections municipales)

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

“Replace 5 with X”

Page 9: Architecture d’une app qui fait 5 millions de visites par mois
Page 10: Architecture d’une app qui fait 5 millions de visites par mois

Nos solutions

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

« Big Picture »

ReverseProxy

Server

ReverseProxy

Server

ExternalCDN

Web Services

Assets

Images ImageResizer

MONITORING

CDN

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

L’app

ReverseProxy

Server

ReverseProxy

Server

ExternalCDN

Web Services

Assets

Images ImageResizer

MONITORING

CDN

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

Extrait de notre parc

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

Comparaison iPhone / Android

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

Comparaison iPhone / Android

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

Notion d’application générique

• même backend

• même structure d’app

• $$ : mutualisation

• Personnalisation : couleurs, images, navigation, services

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

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

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

Fichier de configuration

• « Hydrater » l’application au démarrage

• http://api.sudouest.fr/conf?token=ABCDEF

• 1 token par éditeur et par app

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

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

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

Définition de la barre de navigation

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

Menu

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

Liste des services appelés : URL / Paramètres

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

Possibilité d’insérer du HTML dans l’app

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

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

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

O-Auth

• standard

• Jeton d’auth transmis dans les so://web/

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

App Hybride

HTML CSS JS

responsive

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

Moteur article webview

JSON article

{}

JSON profil

{}

JSON app {}

{ article images type article payant }

{ statut }

{ device }

Template HandleBarsTemplate

HandleBars

Template HandleBars

JQuery

Logique JS

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

Moteur article webview

webview.zip

5 Ko

200 304

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

La couche service

ReverseProxy

Server

ReverseProxy

Server

ExternalCDN

Web Services

Assets

Images ImageResizer

MONITORING

CDN

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

Approche REST

• pur REST : ❤️ en théorie

• Complexité et contraintes fortes

• Parc interne maîtrisé : on peut optimiser

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

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

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

Nos pratiques REST

• Copie-collable

• Facilite la compréhension

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

Cache local

• Cache First / Offline

• Requête en arrière plan

• Refresh à la volée

• Importance du HTTP : 304 / E-Tag

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

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)

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

L’infrastructure

ReverseProxy

Server

ReverseProxy

Server

ExternalCDN

Web Services

Assets

Images ImageResizer

MONITORING

CDN

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

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

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

Reverse Proxy

• 99% traffic anonyme : Exemple GET /home

Apache

500 500

max-age 60 : 1 par minute e-tag : 304varnish

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

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

Image Resizer / Thumbor

• Optimisation mémoire (Android ?)

• URL : « api.sudouest.fr/image/200/450/image.jpg »

• Mode « Smart »

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

Schéma logique

varnishfrontal 1

500 mbits

Apache ML

ThumborCluster

varnishfrontal 2

500 mbits

varnishback 11 Gbits

varnishback 21 Gbits

Apache SO

Apache Dep

varnishfrontal 3

500 mbits

DNS Resolver

CDNexterne

infini

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

Nos outils

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

Outil web interne

• Choix éditeur / version / environnement

• Choix du web service et des paramètres

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

Charles Proxy

Page 43: Architecture d’une app qui fait 5 millions de visites par mois
Page 44: Architecture d’une app qui fait 5 millions de visites par mois

Charles Proxy

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

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

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

Monitoring

ReverseProxy

Server

ReverseProxy

Server

ExternalCDN

Web Services

Assets

Images ImageResizer

MONITORING

CDN

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

Crashlytics - FREE

Page 48: Architecture d’une app qui fait 5 millions de visites par mois
Page 49: Architecture d’une app qui fait 5 millions de visites par mois
Page 50: Architecture d’une app qui fait 5 millions de visites par mois
Page 51: Architecture d’une app qui fait 5 millions de visites par mois
Page 52: Architecture d’une app qui fait 5 millions de visites par mois

Crashlytics

• SDK à intégrer au projet

• Suivi dans le temps :

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

New Relic - $$$

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

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

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

Dashboard New Relic

Page 56: Architecture d’une app qui fait 5 millions de visites par mois
Page 57: Architecture d’une app qui fait 5 millions de visites par mois

Stacktrace

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

Log erreur serveur

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

Processus de build

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

Build : 3 parties

• 1 moteur core par plateforme

• 1 pack ressources par éditeur / plateforme

• 1 pack « wording »

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

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

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

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

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

@juliencarnelos #bdxio

Merci