Conférence AFUP 20minutes.Fr

50 %
50 %
Information about Conférence AFUP 20minutes.Fr
Technology

Published on December 8, 2008

Author: PoMM3

Source: slideshare.net

Description

Support de la conférence AFUP du 8 décembre 2008 sur le retour d'expérience de 20minutes.fr et Oxalide du site 20minutes.fr.

20minutes.fr retour sur expérience

retour sur expérience

Qui sommes nous? Nicolas Silberman Sébastien Lucas Responsable technique new media 20minutes.fr [email_address]  Directeur associé Oxalide.com [email_address] 

Nicolas Silberman

Sébastien Lucas

Responsable technique new media 20minutes.fr

[email_address]



Directeur associé Oxalide.com

[email_address]



Oxalide Conseil, infogérance & hébergement Gestion d’infrastructures dites « Critiques » Conception et gestion d’infrastructures sur-mesure Délégation de la production Hébergement de proximité : équipe projet dédié

Conseil, infogérance & hébergement

Gestion d’infrastructures dites « Critiques »

Conception et gestion d’infrastructures sur-mesure

Délégation de la production

Hébergement de proximité : équipe projet dédié

20minutes.fr

Le succès d’une nouvelle formule +149% Croissance annuelle VU MNR Visiteurs uniques MNR Septembre 2008 SOURCES : VU MEDIAMETRIE // NETRATINGS Septembre 2008 VU NIELSEN NETRATINGS HOME & WORKSeptembre 2007

Une place dans le TOP 3 3 560 000 3° 3 560 000 Visiteurs Uniques qui viennent souvent et restent longtemps Site de presse en France 3° SOURCE : VU MEDIAMETRIE // NETRATINGS Septembre 2008 (Uniquement sites de Presse)

Un site qui rend accroc Pages vues par visiteur Temps passé par visiteur SOURCE : MEDIAMETRIE // NETRATINGS Septembre 2008 Uniquement sites de presse * XITI Septembre 2008

Toutes les infos tout le temps mises à jour en temps réel, diaporamas, sondages, commentaires des internautes (indifféremment sur le web et sur le mobile)...

Toutes les infos tout le temps mises à jour en temps réel, diaporamas, sondages, commentaires des internautes (indifféremment sur le web et sur le mobile)...

Site mobile d’info 3° Hors portails opérateurs Une rentrée encourageante : croissance mois sur mois (+30%) Performance sur le mobile SOURCES : Médiamétrie - Les Mobinautes - Mars Avril 2008 Échantillon : 3 000 individus

20minutes.fr – contraintes 0% de downtime et donc 100% available Toujours penser/prévoir l’effet « 11 Septembre » Publication instantanée qui respecte les contraintes de publication de la rédaction Information déstructurée : mix des sources d’information Une marque de fabrique un homepage reprise sur chaque page

0% de downtime et donc 100% available

Toujours penser/prévoir l’effet « 11 Septembre »

Publication instantanée qui respecte les contraintes de publication de la rédaction

Information déstructurée : mix des sources d’information

Une marque de fabrique un homepage reprise sur chaque page

20minutes.fr - objectifs Lancer et instaurer une homepage énorme 300 Requêtes HTTP 2 Mo Index de 60KB (originellement 300 KB) Une reprise de cette lourde homepage sur chaque article Une actu chaude 24/7 Beaucoup beaucoup d’images Un média communautaire & participatif : Motiver le User Generated Content

Lancer et instaurer une homepage énorme

300 Requêtes HTTP

2 Mo

Index de 60KB (originellement 300 KB)

Une reprise de cette lourde homepage sur chaque article

Une actu chaude 24/7

Beaucoup beaucoup d’images

Un média communautaire & participatif : Motiver le User Generated Content

Un ADN open source

Pourquoi PHP? Accessible (on trouve codeurs et prestataires) Communauté active (française!!!) Documentation fournie // mailing list active Les gens partagent... Il a fait ses preuves La roadmap PHP donne confiance ... 05/12/08

Accessible (on trouve codeurs et prestataires)

Communauté active (française!!!)

Documentation fournie // mailing list active

Les gens partagent...

Il a fait ses preuves

La roadmap PHP donne confiance

...

Avant… 161 000 visiteurs uniques 2 Mbps de bande passante 4 sources de contenus 72 000 inscrits à la newsletter 1 tech - 3 journalistes 50 000 articles 3 000 images 5 jours sur 7 1 serveur

Aujourd’hui 900 Mbps de bande passante 11 sources de contenus 5 tech - 25 journalistes 300 000 articles 2 000 000 images 1 500 000 commentaires 7 jours sur 7 24h / 24 30 serveurs projets satellites (5 000 blogs, TOP-listes) 3 560 000 visiteurs uniques 500 000 inscrits à la newsletter

Evolution 200 articles / jour 3 500 commentaires par jour plus de 100 pages vues à la seconde plus de 5 000 requêtes http à la seconde des prévisions de croissance d’audience encore fortes à l’avenir

200 articles / jour

3 500 commentaires par jour

plus de 100 pages vues à la seconde

plus de 5 000 requêtes http à la seconde

des prévisions de croissance d’audience encore fortes à l’avenir

Développer et gérer la croissance Développement de nouvelles fonctionnalités Rationalisation et gestion du trafic indice

L’infrastructure du sur mesure…

Une infra qui épouse l’applicatif... Cloisonner et Optimiser les flux internes Éviter les goulets d’étranglement Fine tuner la partie réseau Construire des piles applicatives redondées … et pas l’inverse

Cloisonner et Optimiser les flux internes

Éviter les goulets d’étranglement

Fine tuner la partie réseau

Construire des piles applicatives redondées

Séparer média et applicatif... Améliorer la flexibilité sur la scalabilité Les processus du serveur web qui servent les pages n'interfèrent pas avec ceux qui servent les images Vis-versa Optimiser le socle technique en fonction des contenus Configuration spécifiques des serveurs Serveur web moins gourmands pour les médias (aucun module chargé qui ne soit utilisé) Pool de processus plus important Cloisonner les risques … pour

Améliorer la flexibilité sur la scalabilité

Les processus du serveur web qui servent les pages n'interfèrent pas avec ceux qui servent les images

Vis-versa

Optimiser le socle technique en fonction des contenus

Configuration spécifiques des serveurs

Serveur web moins gourmands pour les médias (aucun module chargé qui ne soit utilisé)

Pool de processus plus important

Cloisonner les risques

… voire même par projet Conserver le cœur de métier sur une infrastructure propre Héberger les sites satellites (sur lesquels on ne maîtrise pas forcément la qualité) sur une infrastructure dédiée à cet effet Externaliser certains services spécialisés (vidéos, mailing, blogs, etc.)

Conserver le cœur de métier sur une infrastructure propre

Héberger les sites satellites (sur lesquels on ne maîtrise pas forcément la qualité) sur une infrastructure dédiée à cet effet

Externaliser certains services spécialisés (vidéos, mailing, blogs, etc.)

Ne pas faire confiance aux sources tiers présentes dans le core Souvent indispensables les éléments tiers de votre page sont susceptibles de ne pas avoir la même qualité de service (temps de réponse, disponibilité, etc.) La perception de l'utilisateur sera celle du plus faible maillon de la chaine des éléments qui constituent votre page.

Souvent indispensables les éléments tiers de votre page sont susceptibles de ne pas avoir la même qualité de service (temps de réponse, disponibilité, etc.)

La perception de l'utilisateur sera celle du plus faible maillon de la chaine des éléments qui constituent votre page.

Solution : débrayer les sources tiers Rapatrier en asynchrone et héberger le contenu Gérer le chargement du contenu côté client pour minimiser l'impact du chargement (ou pas) sur la page (implémentation javascript).

Rapatrier en asynchrone et héberger le contenu

Gérer le chargement du contenu côté client pour minimiser l'impact du chargement (ou pas) sur la page (implémentation javascript).

Rester souple et dispo

LVS pour un équilibrage transparent Invisible pour l’internaute Aucun changement pour le serveur Prise en charge pour chaque serveur de 1/n du trafic global (n = nb de serveurs actifs) Répartition parfaite (round robin) Possibilité de sticky Applicable pour chaque service (pas uniquement web aussi service interne) LVS (actif) LVS (passif) IP virtuelle Serveur Equilibrage Round robin Serveur Serveur Serveur Trafic entrant

Invisible pour l’internaute

Aucun changement pour le serveur

Prise en charge pour chaque serveur de 1/n du trafic global (n = nb de serveurs actifs)

Répartition parfaite (round robin)

Possibilité de sticky

Applicable pour chaque service (pas uniquement web aussi service interne)

Séparation par couche : un groupe de serveurs par rôle applicatif pour injecter la scalabilité et haute disponibilité à chaque couche limiter les goulets d'étranglement et augmenter la capacité Plusieurs serveurs pour 1 service (LVS / IP Virtuelle) Incident sans impact pour l'internaute Mise à jour ou tâche de maintenance invisible Privilégier la répartition (serveurs actif-actif) sur les services fortement sollicités/exposés à la montée en charge Archi scalable et haute-dispo

Séparation par couche : un groupe de serveurs par rôle applicatif pour

injecter la scalabilité et haute disponibilité à chaque couche

limiter les goulets d'étranglement et augmenter la capacité

Plusieurs serveurs pour 1 service (LVS / IP Virtuelle)

Incident sans impact pour l'internaute

Mise à jour ou tâche de maintenance invisible

Privilégier la répartition (serveurs actif-actif) sur les services fortement sollicités/exposés à la montée en charge

Un design d'archi pour zéro limite Matériel De la mémoire à foison Des disques rapides si fortement sollicités le disque est souvent un facteur limitant (souvent plus que le CPU) Un carte réseau par flux/réseau (idéalement) Réseau Dimensionner correctement les liens inter-serveurs Un réseau (Vlan) entre chaque couche Du matériel de commutation performant et adapté Vérifier les facteurs limitants (monitoring)

Matériel

De la mémoire à foison

Des disques rapides si fortement sollicités le disque est souvent un facteur limitant (souvent plus que le CPU)

Un carte réseau par flux/réseau (idéalement)

Réseau

Dimensionner correctement les liens inter-serveurs

Un réseau (Vlan) entre chaque couche

Du matériel de commutation performant et adapté

Vérifier les facteurs limitants (monitoring)

Développement guidé par la performance Un PHP plus rapide

Un publication asynchrone... Front-office Front PHP BDD static P u s h Pour les blocs les plus utilisés qui changent peu Génération à la publication Sollicitation de la BDD à la publication Diminution des requêtes à la consultation Meilleur index du cache Back-office … pour minimiser les ressources consommées

Front-office

Pour les blocs les plus utilisés qui changent peu

Génération à la publication

Sollicitation de la BDD à la publication

Diminution des requêtes à la consultation

Meilleur index du cache

Implémenter le cache à tous les niveaux...

Implémenter le cache à tous les niveaux... Diminuer le nombre de requêtes Diminuer la charge des serveurs MySQL Augmenter la vitesse de traitement Améliorer les temps de réponses … mais aussi ... Répartir le cache entre les serveurs Implémenter le cache à chaque strat

Diminuer le nombre de requêtes

Diminuer la charge des serveurs MySQL

Augmenter la vitesse de traitement

Améliorer les temps de réponses

… mais aussi ...

Répartir le cache entre les serveurs

Implémenter le cache à chaque strat

Les principales strates Le navigateur est bon pour : Garder les images en cache Garder les css en cache Diminuer la charge des serveurs MySQL Augmenter la vitesse de traitement Améliorer les temps de réponses … mais aussi ... Répartir le cache entre les serveurs Implémenter le cache à chaque strat

Le navigateur est bon pour :

Garder les images en cache

Garder les css en cache

Diminuer la charge des serveurs MySQL

Augmenter la vitesse de traitement

Améliorer les temps de réponses

… mais aussi ...

Répartir le cache entre les serveurs

Implémenter le cache à chaque strat

Attention... La gestion de la pérennité de la donnée peut devenir complexe Ne pas tout mettre en cache ! Choisir d'après les règles suivantes : SQL : données utilisées souvent => garder l'index en cache Objet : données utilisées souvent pré-calculées Page : données modifiées moins souvent

La gestion de la pérennité de la donnée peut devenir complexe

Ne pas tout mettre en cache !

Choisir d'après les règles suivantes :

SQL : données utilisées souvent => garder l'index en cache

Objet : données utilisées souvent pré-calculées

Page : données modifiées moins souvent

Cycle de développement guidé par la performance

Mise en place d'un processus de staging Environnement développement pour les développeurs Environnement de pré-production virtualisé pour chaque développeur Validation par test unitaire Syndication par outil de versioning (SVN) Environnement de pré-production validation de la procédure de déploiement (faite par du personnel accrédité) test en environnement semi-réel test de montée en charge sur (apache bench, pilot) Environnement de production Accès exclusif aux administrateurs

Environnement développement pour les développeurs

Environnement de pré-production virtualisé pour chaque développeur

Validation par test unitaire

Syndication par outil de versioning (SVN)

Environnement de pré-production

validation de la procédure de déploiement (faite par du personnel accrédité)

test en environnement semi-réel

test de montée en charge sur (apache bench, pilot)

Environnement de production

Accès exclusif aux administrateurs

Les avantages Limite les bourdes de mise en ligne Améliore la qualité des mises en production Rationalise le processus de mise en ligne Chapitre les mise en ligne

Limite les bourdes de mise en ligne

Améliore la qualité des mises en production

Rationalise le processus de mise en ligne

Chapitre les mise en ligne

Automatiser le déploiement Pour : Diminuer le temps de mise en ligne Implémenter facilement la procédure de staging Limiter les erreurs de déploiement Diminuer les intervenants nécessaires pour la mise en ligne Notre choix :

Pour :

Diminuer le temps de mise en ligne

Implémenter facilement la procédure de staging

Limiter les erreurs de déploiement

Diminuer les intervenants nécessaires pour la mise en ligne

Déploiement standard… 10 pages de procédure de déploiement Minimum 5 SSH 5 exports SVN manuels 11 modifications de fichiers de conf 13 fichiers à faire attention de ne pas effacer 7 cafés et une bonne dose de stress 5 archives temporaires qui trainent et polluent … sur une architecture moyenne. Durée : 1 jour (avec les patchs des devs) Ressources : dev + admin Rollback Délicat

Déploiement avec capistrano… … sur une architecture moyenne. Rollback Délicat 2 jours pour écrire la conf, tester et qualifier 1 commande Rollback en 10 secondes Garbage collecting sur les archives Durée : 5 minutes Ressources : admin … pourquoi ne pas l’avoir fait plus tôt?

Avoir une bonne visibilité de la production Surveiller La qualité du service final Les services internes Le comportement des serveurs et des programmes Les ressources associées Choisir des seuils adaptés Être attentif A la consommation des ressources Aux comportements anormaux Analyser l’augmentation de trafic Réagir Toute anomalie ne reste pas impunie Chasse aux scripts / requêtes gourmands (slow queries, tracer, sniffer, etc.) Lire son php_err. log (il doit rester vide) Bien évaluer la réponse : infrastructure, développement ou les deux

Surveiller

La qualité du service final

Les services internes

Le comportement des serveurs et des programmes

Les ressources associées

Choisir des seuils adaptés

Être attentif

A la consommation des ressources

Aux comportements anormaux

Analyser l’augmentation de trafic

Réagir

Toute anomalie ne reste pas impunie

Chasse aux scripts / requêtes gourmands (slow queries, tracer, sniffer, etc.)

Lire son php_err. log (il doit rester vide)

Bien évaluer la réponse : infrastructure, développement ou les deux

Urbaniser le développement Versionning Refactoring // XP // finetuning sur la base des retours d’exploitation Cycle dev, préproduction, prod valider fonctionnellement testing stress tester l’applicatif / montée en charge

Versionning

Refactoring // XP // finetuning sur la base des retours d’exploitation

Cycle dev, préproduction, prod

valider fonctionnellement

testing

stress tester l’applicatif / montée en charge

On l'a fait!  Une plate forme PHP scalable qui tient la charge et facile à déployer (quelque soit le nombre de serveurs) !

Merci! Des questions?

Add a comment

Related presentations

Related pages

Forum PHP Paris 2012 organisé par l'AFUP avec les ...

... Damien a co-animé une conférence sur REST à Symfony Live 2011 et ... pour des entreprises comme 20minutes.fr, ... au sein de l'AFUP, ...
Read more

Forum PHP Paris 2008 organisé par l'AFUP avec les ...

... le site de 20minutes.fr est le 3ème site ... conférence nous aurons à c½ur de faire ... associations telles que l'AFUP servent « d ...
Read more

Les membres du comité de pilotage de la conférence Drupagora

L'organisation de la conférence Drupagora est pilotée par un comité de ... Trésorier de DrupalFR, AFUP, ... Wargny, EMI, 20minutes.fr ...
Read more

Drupagora - Edition 2012 - Drupagora, Le 1er évènement ...

Il est également l’ancien président de l’AFUP, ... Gaumont, Fideuram Wargny, EMI, 20minutes.fr ... Cette conférence s'adresse à tout public, ...
Read more

Expériences de refonte - ekino - ekino - L'innovation ...

Basée sur la refonte du site 20minutes.fr, ... ailleurs le sujet d’une conférence réalisée par Thomas ... afup.org/pages /phptourlyon2014 ...
Read more

Associations

15 février 2016 [Developpez.com] Libre en Fête 2016; 14 février 2016 [france bleu] Rencontre avec un hacker: sur internet, basculer du côté obscur de ...
Read more

phptwitterbot.googlecode.com

A deux semaines de la conférence ... of technical web team @ 20minutes.fr http://s3.amazonaws.com ... AFUP secretary and GTDerin http ...
Read more

Conf_Batonniers - Annuaire Twitter - Audentia - Conseils ...

Conf_Batonniers - Annuaire Twitter Twitter sur FNAC.COM - Revenir à l'accueil . Tweeter . ... @ Conf_Batonniers. Conférence des Bâtonniers 12, ...
Read more

Rapport moral sur l'activité de l'April en 2007 | April

Soumis par april le 17 décembre, 2007 - 10:50 . Mots-clefs. L'association; Rapport; Période du 01/01/2007 au 31/12/2007
Read more