et si vous passiez à la tv ?
Post on 21-Jul-2015
3.333 Views
Preview:
TRANSCRIPT
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
É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
top related