https://www.flickr.com/photos/ndantas/14982752542
Et si vous passiez à la télé ?
Qui suis-je ?
• Sysadmin @ M6Web	
• <3 Forte charge, data, No(SQL)
• Amateur de chats animés et de
cuisine asiatique
Les 30 prochaines minutes
• Qu’est-ce qu’un passage télé ?
• Comment préparer son infra
• Quelques pistes coté code
• S’or...
Disclaimer
• E-commerce, vitrine, site communautaire
• Afficher votre site != le rendre rapide à s’afficher
• Evénement exce...
Vu à la T.V (et sur twitter)
Extrait Vidéo Turbo du 01/04/2012
Vous, avant la diffusion
t
Votre site, pendant la diffusion
Vous, pendant la diffusion
25 % de téléspectateurs
équipé d’un second écran
3000 Nouvelles session / minutes
5 à 30 Secondes avant impact
2 Heures de forte charge continue
2 Semaines pour vous préparer
Établir un état des lieux
Outils: Terminal + Web Developer tools / Charles Proxy
Objectif : cartographier son site
• éléme...
Éléments statiques
• Pages sans contenus utilisateur
• pas de sessions PHP n’importe où :)
• Images, vidéos
• pas de cooki...
Éléments statiques
• Cache HTTP type Varnish, Nginx
• machines dédiées, sans firewall (ou iptables notrack)
• simple et rap...
Éléments dynamiques
• Tout ce qui doit être généré de façon “unique” coté serveur
• Pages utilisateurs
• Profils, panier et...
Éléments dynamiques
• Nginx + FPM + PHP 5.5 + Opcache
• plus de machines, plus puissantes
• AWS / GCE ?
• 10 instances c3....
Éléments dynamiques
• Feature flipping
• Déplacer ou supprimer les modules superflus
• Désactiver la fonction de login sur...
Strict minimum
• Enregistrement DNS à 60 secondes
• Page d'erreur personnalisée
• statique, chez un CDN
• Google analytics...
Métrologie / Logs
• Google analytics
• Datadog / Loggly
• UDP Fire and Forget
• SDK dans à peu près tous les langages
• Ho...
Éléments Externes
• Chargement asynchrone pour le javascript
• <script src="http://www.google-analytics.com/ga.js" </scrip...
Tests de charges
• Tests de charge, résilience, webperf etc…
• Création d’un scénario, enregistrement et rejeu à grande éc...
• flood.io et blitz.io
• Load Impact
• Blazemeter
• NeoTys
• DIY = jmeter / gatling
Tests de charges
S’organiser
• ~ 2 semaines de préparation
• Arbitrer l’urgent et l’important
• pas de MEP le jour même !
• freeze du code ...
Communiquer
• Avec votre hébergeur / infogéreur
• Load-balancer, anti DDOS, firewall, DNS
• accès au support technique prem...
Questions ?
!
@bdu_p
Et si vous passiez à la TV ?
Et si vous passiez à la TV ?
Et si vous passiez à la TV ?
Et si vous passiez à la TV ?
Prochain SlideShare
Chargement dans…5
×

Et si vous passiez à la TV ?

3 998 vues

Publié le

Et si vous passiez à la télé demain ? Le report d'antenne est un tsunami de 50 à 500 000 personnes simultanées sur votre site web, cela peut être un formidable coup de pub pour votre activité ou un terrible moment de stress si les infrastructures et le code ne sont pas prêts à encaisser une charge aussi violente et soudaine. Nous détaillerons les étapes de préparation d'un tel événement, ainsi que les bonnes pratiques côté code et infra.

Publié dans : Internet
0 commentaire
3 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

Aucun téléchargement
Vues
Nombre de vues
3 998
Sur SlideShare
0
Issues des intégrations
0
Intégrations
217
Actions
Partages
0
Téléchargements
9
Commentaires
0
J’aime
3
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Et si vous passiez à la TV ?

  1. 1. https://www.flickr.com/photos/ndantas/14982752542 Et si vous passiez à la télé ?
  2. 2. Qui suis-je ? • Sysadmin @ M6Web • <3 Forte charge, data, No(SQL) • Amateur de chats animés et de cuisine asiatique
  3. 3. Les 30 prochaines minutes • Qu’est-ce qu’un passage télé ? • Comment préparer son infra • Quelques pistes coté code • S’organiser et communiquer
  4. 4. Disclaimer • E-commerce, vitrine, site communautaire • Afficher votre site != le rendre rapide à s’afficher • Evénement exceptionnel = mesures exceptionnelles • Différents profils techniques
  5. 5. Vu à la T.V (et sur twitter)
  6. 6. Extrait Vidéo Turbo du 01/04/2012
  7. 7. Vous, avant la diffusion
  8. 8. t Votre site, pendant la diffusion
  9. 9. Vous, pendant la diffusion
  10. 10. 25 % de téléspectateurs équipé d’un second écran
  11. 11. 3000 Nouvelles session / minutes
  12. 12. 5 à 30 Secondes avant impact
  13. 13. 2 Heures de forte charge continue
  14. 14. 2 Semaines pour vous préparer
  15. 15. Établir un état des lieux Outils: Terminal + Web Developer tools / Charles Proxy Objectif : cartographier son site • éléments statiques / dynamiques • éléments externes • ressources volumineuses (images, vidéos, CSS, JS, ZIP) • chemin de lecture versus chemin d'écriture
  16. 16. Éléments statiques • Pages sans contenus utilisateur • pas de sessions PHP n’importe où :) • Images, vidéos • pas de cookies attachés ! • CSS, Scripts JS • minifiés, compressés, concaténés
  17. 17. Éléments statiques • Cache HTTP type Varnish, Nginx • machines dédiées, sans firewall (ou iptables notrack) • simple et rapide à installer • CDNs • librairies JS (jquery, bootstrap…) ont déjà un CDN • Fastly, Cloudflare, CloudFront, Limelight, Level3 • Aiguilleur de CDN, ex cedexis • Lazy Loading
  18. 18. Éléments dynamiques • Tout ce qui doit être généré de façon “unique” coté serveur • Pages utilisateurs • Profils, panier etc.. • Résultats de recherches, d’itinéraires • Pages avec des tris, ordre
  19. 19. Éléments dynamiques • Nginx + FPM + PHP 5.5 + Opcache • plus de machines, plus puissantes • AWS / GCE ? • 10 instances c3.8xlarge pendant 6 heures = 85€ • Cache métier dans redis / memcached • tout ce qui est coûteux à générer (recherches, tris …) • ex: itinéraires Lyon/Paris triés par prix croissant • Optimisation des requêtes SQL (voir le slowlog) • index, pas de now() ou order by rand()
  20. 20. Éléments dynamiques • Feature flipping • Déplacer ou supprimer les modules superflus • Désactiver la fonction de login sur la home • Forums, commentaires, news • Page d’accueil spéciale, light • Cacher les sessions utilisateurs dans Varnish*
  21. 21. Strict minimum • Enregistrement DNS à 60 secondes • Page d'erreur personnalisée • statique, chez un CDN • Google analytics • Récupérer l'émail du visiteur
  22. 22. Métrologie / Logs • Google analytics • Datadog / Loggly • UDP Fire and Forget • SDK dans à peu près tous les langages • Hosted graphite • DIY: statsd / graphite / InfluxDB / ELK • Redis / RabbitMQ en plus, car ELK ne suivra pas • Monitoring externe: pingdom
  23. 23. Éléments Externes • Chargement asynchrone pour le javascript • <script src="http://www.google-analytics.com/ga.js" </script> • <script async src="http://www.google-analytics.com/ga.js"></script> • Partenaires, prestataires pas préparés, mal dimensionnés • Restreindre au maximum les appels externes
  24. 24. Tests de charges • Tests de charge, résilience, webperf etc… • Création d’un scénario, enregistrement et rejeu à grande échelle • Simplifier cette tâche relativement complexe • Fixer un objectif • 500 nouvelles sessions / min • 3000 requêtes / sec sur un webservice • Conserver les stats et produire des graphs • Attention à ne pas casser la prod :)
  25. 25. • flood.io et blitz.io • Load Impact • Blazemeter • NeoTys • DIY = jmeter / gatling Tests de charges
  26. 26. S’organiser • ~ 2 semaines de préparation • Arbitrer l’urgent et l’important • pas de MEP le jour même ! • freeze du code la veille • Capital c'est le dimanche soir :)
  27. 27. Communiquer • Avec votre hébergeur / infogéreur • Load-balancer, anti DDOS, firewall, DNS • accès au support technique premium • chauffer les ELB chez Amazon • Parlez-en autour de vous ! • connaissances, partenaires, prestataires
  28. 28. Questions ? ! @bdu_p

×