32
https://www.flickr.com/photos/ndantas/14982752542 Et si vous passiez à la télé ?

Et si vous passiez à la TV ?

  • Upload
    bdup

  • View
    3.333

  • Download
    5

Embed Size (px)

Citation preview

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’organiser et communiquer

Disclaimer

• E-commerce, vitrine, site communautaire

• Afficher votre site != le rendre rapide à s’afficher

• Evénement exceptionnel = mesures exceptionnelles

• Différents profils techniques

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éments statiques / dynamiques • éléments externes • ressources volumineuses (images, vidéos, CSS, JS, ZIP) • chemin de lecture versus chemin d'écriture

É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

É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

É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

É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()

É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*

Strict minimum• Enregistrement DNS à 60 secondes

• Page d'erreur personnalisée

• statique, chez un CDN

• Google analytics

• Récupérer l'émail du visiteur

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

É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

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 :)

• 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 la veille

• Capital c'est le dimanche soir :)

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

Questions ? !

@bdu_p