De la réflexion à l’action
Migrer de framework
Xavier Leune
@beoneself
9 Langues
21,7M VU
61M VU
France Monde
En Millions de Visiteurs Uniques mensuels – dédupliqués.
Sources : Mediametrie / ComScore - mars 2015
700 M de
Pages Vues
1996 : Benchmark Groupe
1999 : Quidea
2010 : CCM Benchmark Group
2014 : Comme une envie de
changement…
Retour sur
15 mois de migration
1 – La période d’analyse
Analyse Choix
Capacity
Planning
L’infra de
prod
Architecture
Migration
progressive
Formation
Premier
projet
Une approche naïve
Une démarche encadrée
Toutes les possibilités étudiées
Qualification and Selection of Open Source
software
QSOS
La maturité du projet
La note technique
Etude en 3 phases
1. Analyse Maturité
2. Etude Technique
3. Benchmark des performances
12 projets analysés
Analyse de la maturité
La taille de la communauté
Le cas Code Igniter
Evolution Google Trends - 2006 - 2014
Exemple de note compilée
Catégorie Sous-
Catégorie
Somme -
Points
Somme -
Total
possible
section
Note / 10
1 – Maturité Activité 4 8
Gouvernance 6 10
Industrialisation 4 8
Patrimoine 6 8 5,88
6 projets étudiés
Etude technique
Exemple de note compilée
2 – Spécificités
Techniques
Base de données 8 12
Cache 3 4
Configuration
custom
3 4
Divers 2 14
Emails 0 8
Internationalisation 5 6
Templating 0 8
Tests unitaire 2 10 3,48
2 produits comparés
Benchmark des
performances
Ou comparer des camions en leur
demandant de se garer en ville
Le fantasme du
« Hello, World ! »
Le benchmark biaisé
Définir ses critères de perf
100 ms 8 Mo
Presque définitif à cette étape
2 - Le choix
Analyse Choix
Capacity
Planning
L’infra de
prod
Architecture
Migration
progressive
Formation
Premier
projet
Aussi nommé « j’évite de vautrer ma prod »
3 - Le capacity planning
Analyse Choix
Capacity
Planning
L’infra de
prod
Architecture
Migration
progressive
Formation
Premier
projet
4 - L’infra de prod
Analyse Choix
Capacity
Planning
L’infra de
prod
Architecture
Migration
progressive
Formation
Premier
projet
La checklist
 Version de PHP
 Extensions
 Script de déploiement
 Droits en écriture
 …
5 - L’architecture
applicative
Analyse Choix
Capacity
Planning
L’infra de
prod
Architecture
Migration
progressive
Formation
Premier
projet
6 - La migration
progressive
Analyse Choix
Capacity
Planning
L’infra de
prod
Architecture
Migration
progressive
Formation
Premier
projet
Conserver la
Business Value
Ce qu’il faut éviter
Ce qu’il faut viser
La migration progressive par l’exemple
7 - La formation
Analyse Choix
Capacity
Planning
L’infra de
prod
Architecture
Migration
progressive
Formation
Premier
projet
Il faut que ça passe, sinon ça casse
8 - Le premier projet
Analyse Choix
Capacity
Planning
Architecture
Migration
progressive
Formation
Premier
projet
Une définition ?
Ça te branche ?
On recrute !
Questions ?
@beoneself
tech.ccmbg.com/blog/
#14578
Merci !

Migrer de framework : de la réflexion à l'action

Notes de l'éditeur

  • #3 Je suis Xavier Leune et aujourd’hui je vais vous parler de la migration de framework et plus précisément de la migration que je mène chez CCM Benchmark Group. Ca fait désormais 1 an ½ et que je suis responsable framework PHP chez CCM Benchmark Group.
  • #4 Notre métier chez CCM Benchmark est de créer des sites que nous monétisons via le trafic. Vous connaissez probablement nos marques les plus fortes : Journal Des Femmes Journal Du Net L’internaute Copains d’Avant Comment Ça Marche
  • #5 Français Anglais Allemand Espagnol Italien Polonais Arabe Portugais Neerlandais
  • #6 Pour un public français mensuel de 21M de Visiteurs Uniques Notre trafic étant majoritairement à l’étranger, nous nous adressons à 61 M de Visiteurs Uniques chaque mois.
  • #7 Cela nous place parmi les 1ers groupes français dans le monde. Aujourd’hui nous sommes engagés dans la migration de notre framework interne vers un outil du marché. Afin que vous puissiez comprendre le contexte technique dans lequel nous sommes, je vais revenir rapidement sur l’historique du groupe.
  • #8 Librairie de code interne + 250 applications Une présence francophone Dette technique très importante Varnish
  • #9 Framework interne Une dette technique plus mesurée L’expérience du multilingue & l’international CDN akamai
  • #10 Un retard à combler chez Benchmark Une mise à niveau importante pour CCM L’usage généralisé du framework interne
  • #11 Poids de la dette technique devenu très important Il est difficile de maintenir un framework interne, de première génération Retard technique qui risque de s’accumuler Code trop fermé, impossibilité d’y intégrer du code tiers, etc.
  • #13 Démarche ouverte: reprendre et améliorer l’outil interne ? Le redévelopper entièrement ? Choisir un outil existant et migrer vers celui-ci ?
  • #15 Méthode initialement proposée par Atos Origin D’autres méthodes existent, semblait la + simple à mettre en œuvre 2 grilles de notation : maturité et technique Des outils dédiés (compliqués) existent  Utilisation d’Excel
  • #16 Critères identiques pour tous les projets étudiés 17 critères standards Patrimoine Age Historique Popularité … Gouvernance Roadmap License Distribution … Activité Communauté Fonctionnalités & bugs Releases / Versions Industrialisation Services Doc Méthode qualité Versionning Stabilité d’un projet dans le temps
  • #17 Critères rédigés par le décideur en fonction du type de produit Chez nous : 28 critères Bases de données Drivers dispo ORM … Configuration Capacité Format Tests unitaires Internationalisation Cache Emailing Queing Templating Adéquation entre le projet et les spécificités du demandeur
  • #18 Logique de l’entonnoir Choix d’un nombre restreint de projets pour passer à l’étape suivante Pas le fonctionnement standard de la méthode QSOS mais permet d’aller plus vite
  • #19 A la fin de cette étape, les projets sélectionnés ne sont pas nécessairement les meilleurs techniquement On n’en sait rien!! On veut surtout éviter de choisir un outil qui sera abandonné 6 mois après.
  • #20 La taille de la communauté ne fait pas la stabilité d’un projet C’est important de séparer ces 2 notions car une communauté ne dure pas éternellement. Les gens cessent de supporter une solution si celle-ci n’est plus maintenue correctement ou que la gestion de crise n’est pas au niveau.
  • #21 Pour illustrer ce propos on peut citer l’exemple de Code Igniter. Ce framework qui existe depuis 2006 – autant dire la nuit des temps – était maintenu par la société EllisLab. En juillet 2013, la société a annoncé chercher un repreneur pour le projet. Il s’est passé 18 mois (décembre 2014) avant que soit annoncé le transfert de gouvernance de Code Igniter au profit du British Columbia Institute of Technology, de Vancouver.
  • #22 Progès constant de 2007 à 2013 Chute depuis mi 2013
  • #23 Grille de notation de maturité – issue de Kohana
  • #25 Grille de notation technique résumée, issue de Kohana Point important : tests unitaires. Pas le souhait du 100% mais pas judicieux de monter toute une architecture sur un outil pas testé.
  • #27 Un benchmark n’est PAS un hello world Comparer des frameworks sur un hello world est aussi intéressant que comparer la capacité de camions à se garer en ville Définir son cas d’usage – i.e: algo affichage d’une page de forum – le mettre en œuvre et comparer les points de mesure Si les différences ne permettent pas de conclusion  augmenter le cas d’usage et comparer à nouveau Important : Comparer avec son framework actuel  donnée absolue inintéressante, donnée relative primordiale  fait on mieux ou moins bien que l’existant
  • #28 Lors du choix du nouveau framework  on n’est pas un expert  se faire accompagner par des experts en la question pour optimiser ses performances  évite de biaiser le benchmark
  • #29 Critères de performance déjà en œuvre dans la société A faire respecter par le nouvel outil Si aucun des outils choisi ne permet de respecter ce critère  vérifier quel composant consomme le plus, débriefer avec l’expert et voir si possible d’améliorer.
  • #30 A cette étape, on a pu comparer les différents outils sur la maturité du projet, on a pu étudier en détail leur note technique, On a pu comparer leurs performances On a tous les éléments pour faire un choix  Bon moment pour évoquer sa préférence personnelle si résultats trop proches
  • #31 Etape importante mais souvent oubliée  benchmark : comparaison perf avec l’actuelle sur 2 points importants : mémoire & temps génération Extrapolation à l’ensemble des pages pour tirer un coefficient (mémoire / CPU) Si ratio > 1  nécessité de faire un capacity planning Mesure de l’état actuel de la prod  mémoire consommée par php // Temps CPU consommé Temps CPU disponible  nombre de CPU x  Etablir pourcentage consommation actuelle Projection pour avoir un taux d’usage des machines après migration  définir si ça passe ou pas
  • #32 Toujours travailler avec un ratio favorable et un ratio défavorable. Ca nécessite quelques prérequis : Mesure consommation de la prod Application ratio Comparaison avec les capacités en prod Définir ses seuils de warning et d’alerte  ici 60% warning // 80% critique Permet un ajustement des capacités de prod, si nécessaire
  • #33 Une migration de framework N’EST PAS le bon moment pour tout changer
  • #34 Scripts de déploiement  capacité de mettre en œuvre les actions spécifiques ? Droits d’écriture demandés par le fwk  possible ou pas ? Version de PHP ok ? Extensions nécessaires installées ?
  • #35 On a TOUS des squelettes dans le placard  c’est l’occasion de se rappeler qu’on peut aussi les enterrer Se faire accompagner  Migration de fwk = bonne occasion de remettre à plat certaines archis qui globalement ne sont pas satisfaisantes
  • #36 Le dernier qui a essayé une migration « Big Bang » a mis 15 Mds d’années à stabiliser à peu près la machine
  • #38 Il effacera votre passé pour protéger votre avenir
  • #39 Il ajustera votre passé pour vous permettre d’avoir un avenir
  • #40 Vert = Infos de debug du nouveau & de l’ancien framework Rouge = servi par le nouveau framework Bleu = Le nouveau framework appelle l’ancien pour lui déléguer l’affichage là
  • #42 Il est important de se faire accompagner d’experts. Si possible via les éditeurs du framework. Trop de formateurs auto proclamés font des ravages.
  • #43 Accorder une attention particulière ! Ce projet sera copié par les autres ! C’est le moment de mettre le paquet, quitte à diminuer son ROI pour ne pas être perdant au global ! Organisation : avoir une personne dédiée à la migration mais qui doit travailler en interaction avec les équipes.
  • #44 J’ai passé 10mn à vous expliquer comment on privilégie les migrations progressives, maintenant je vous montre le premier big bang qu’on a fait….