is cool story - symfony live 2011

26
Is Cool Story « 1 jeu, 1 framework, 3 mois, 4 devs, 8 millions de joueurs. » Alexandre Rodière Bertrand Tornil

Upload: bertrand-tornil

Post on 06-Dec-2014

927 views

Category:

Technology


1 download

DESCRIPTION

Is Cool Story « 1 jeu, 1 framework, 3 mois, 4 devs, 8 millions de joueurs. »

TRANSCRIPT

Page 1: Is Cool Story - Symfony live 2011

Is Cool Story

« 1 jeu, 1 framework, 3 mois, 4 devs, 8 millions de joueurs. »

Alexandre Rodière Bertrand Tornil

Page 2: Is Cool Story - Symfony live 2011

Weka Entertainment

● Jeux dans Facebook● LAMP● Forte charge● Rythme fonctionnel élevé

=> Symfony 1 + Framework Weka

Page 3: Is Cool Story - Symfony live 2011

Is Cool

● 2 ans de développement incrémental● Pas de framework, pas de MVC

Page 4: Is Cool Story - Symfony live 2011

Le Défi

● 1 jeu facebook en PHP « old school »● Entre 500.000 et 1.000.000 de VU/j● Entre 50 et 100 millions de PV/j● 1 milliard de points cool

=> La même chose sous symfony2

Page 5: Is Cool Story - Symfony live 2011

Les contraintes

● Debut le 15 novembre 2010

● Fin pour le sfLive2011

● Pas de coupure de l'application

● Maintien du rythme de sortie des fonctionnalités

Page 6: Is Cool Story - Symfony live 2011

Les atouts

● Habitudes de développement très agile

– 122 RC déployées– 87 Releases déployées

● Arrêt des applications FBML par Facebook

● Enthousiasme

● Deadline sfLive

Page 7: Is Cool Story - Symfony live 2011

Les atouts (bis)

– Weka IsCoolers● Rémi Janot, Pierre Tisserant, Antoine Bernier

– Sensio Sensei● Noël Guilbert

– Cloud SysAdmins● Vermeer Grange, Charles-Christian Croix, Fabien

Vaneenoo

– Leads Bienveillants● Alexandre Rodière, Bertrand Tornil

Page 8: Is Cool Story - Symfony live 2011

La stratégie

● Migration FBML → Iframe

– Effet tache d'huile– Double vhost

● Mise en oeuvre sur la plus petite page

● Greffe sur les demandes fonctionnelles

Page 9: Is Cool Story - Symfony live 2011

Les préparatifs

● Avant de pouvoir boostraper en sf2● La mise en place de l'infra (un double-vhost)

– réalisée le 30 novembre 2010● Architecture du code

– Bundles IsCool– Bundles plus génériques (SNS)– Bundles Externes (DBAL, partenaires...)

Page 10: Is Cool Story - Symfony live 2011

Les préparatifs (hatifs ?)

● L'authentification● Gros morceau, en fait... Oauth... (aura

nécéssité d'ajuster l'extensibilité du bundle d'authentification de sf2)

● Les premiers bundles maisons● Memcache● nosql● pinba

Page 11: Is Cool Story - Symfony live 2011

Dans les faits

● La schizophrénie du code (les 2 vhosts)● Toutes les classes cores, puis métiers doivent passer

au fur-et-à-mesure à la moulinette :

– Autoloader– Injectabilité

● Chasse aux statiques– Création des Bundles

● Configuration du DIC

Page 12: Is Cool Story - Symfony live 2011

On s'arrange avec l'autoloader

● Création d'un ensemble cohérent de classes pour l'autoloader

Page 13: Is Cool Story - Symfony live 2011

La chasse aux statiques

Sachant que le code doit pouvoir continuer de fonctionner dans les 2 contextes

Page 14: Is Cool Story - Symfony live 2011

La chasse (d'eau ?)

Page 15: Is Cool Story - Symfony live 2011

Au final... c'est bon, mangez-en

● Accepter d'adopter une nouvelle philosophie● Avant, par exemple :

● On implémentait une classe itérateur. point.

● En sf2 :● On cherche la généricité pour rendre injectable● induit de bonnes pratiques, à savoir viser la

généricité (on écrit l'itérateur générique), puis on injecte la spécificité

Page 16: Is Cool Story - Symfony live 2011

Des chiffres !

● Le 22 décembre 2010● Passage de la page « invit »

Page 17: Is Cool Story - Symfony live 2011

Des chiffres !

● Le 22 décembre 2010● Passage de la page invit

– ~500 hit/jours– Mais les couches basses sont là

● Authentification● Localisation● Pinba● Mysql via dbal● Redis● memcache

Page 18: Is Cool Story - Symfony live 2011

Ensuite ?

● Le 24 janvier 2011● Passage des webservices partenaires

– 30000-40000 hits/jours– Nouvelles couches métiers

Page 19: Is Cool Story - Symfony live 2011

Un peu de charge...

● Le 10 février 2011● Passage de myKiwi sur la home

Page 20: Is Cool Story - Symfony live 2011

Un peu de charge...

● Le 10 février 2011● Passage de myKiwi sur la home

– 250 à 1500 hits / sec– L'objet player est chargé + les grades– Le bootstrap sf2 tient la charge. Les

chiffres nous ont même surpris :● Ancien vhost : 600ms / req● Nouveau vhost en sf2 : 80ms / req● ?

Page 21: Is Cool Story - Symfony live 2011

Certes...

● Le 24 février● Passage de la page «Ma collection»● 57 familles de 7 élements

Page 22: Is Cool Story - Symfony live 2011

Certes... (itudes ?)

● Le 24 février● Passage de la page «Ma collection»

– ~10 hits/sec– Classes métiers les plus complexes,

itérateurs et caches d'itérateurs objets composés de différents storages

– Avant : 792ms– Après : 468ms … 40% de mieux

Page 23: Is Cool Story - Symfony live 2011

Ok, and now ??

● Le 2 mars 2011● Passage de la dernière feature● Développement entièrement sous sf2● Front HTML5● La vache Kiwi...

Page 24: Is Cool Story - Symfony live 2011

● Le 2 mars 2011 : la vache Kiwi...

● ...et ca tient :)

Ok, and now ??

Page 25: Is Cool Story - Symfony live 2011

L'heure du bilan

● Le cycle fonctionnel est lancé.● Les performances suivent (- 40%)● Nous pouvons nous préoccuper de notre métier

● Le jeu● Nous pouvons maintenant nous attaquer aux

migrations sf1 → sf2 des autres jeux

Page 26: Is Cool Story - Symfony live 2011

Questions

?Bertrand Tornil

[email protected]

Twitter : @bobuss

Alexandre Rodière

[email protected]

Twitter : @alx_rodiere