Top Banner
Morning Tech #2 Démarche de performance
60

Morning tech #2 - Démarche performance slides

Mar 22, 2017

Download

Internet

Oxalide
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Morning tech #2 - Démarche performance slides

Morning Tech #2Démarche de performance

Page 2: Morning tech #2 - Démarche performance slides

Les événements Oxalide

• Objectif : présentation d’une thématique métier ou technique• Tout public : 80 à 100 personnes• Déroulé : 1 soir par trimestre de 18h à 21h

• Introduction de la thématique par un partenaire• Tour de table avec des clients et non clients• Echange convivial autour d’un apéritif dînatoire

• Objectif : présentation d’une technologie• Réservé aux clients : public technique avec laptop – 30 personnes• Déroulé : 1 matinée par trimestre de 9h à 13h

• Présentation de la technologie• Tuto pour la configuration en ligne de commande

• Objectif : présentation d’une thématique métier ou technique• Réservé aux clients : 30 personnes• Déroulé : 1 matin par trimestre de 9h à 12h

• Big picture• Démonstration et retour d’expérience

Apérotech

Workshop

Morning Tech

Page 3: Morning tech #2 - Démarche performance slides

Contactez-nous à [email protected] !

Page 4: Morning tech #2 - Démarche performance slides

Speakers

Adrien le PriolITWO Customer Team 1

@Priolix @lpiot

Ludovic PiotResp. du pôle Conseil,

Architecture et DevOps

Page 5: Morning tech #2 - Démarche performance slides

Introduction● Les enjeux de la performance sur le Web● Les différents éléments de performance d'un

site Web

Les bonnes pratiques● Limiter le trafic non monétisable● Infrastructure (HTTP/2 HTTPs, architecture

technique, tuning, architecture applicative, WebPerf

● AMP by Google● Les quickwins par grands thèmes

(infra / archi tech / archi appli / WebPerf)● compression gzip, taille des images…

cas de Leroy-Merlin (règles de 10 images de 100 Ko maxi).

● Caches, upscaling, outscaling, sharding

Agenda

L’obsession de la mesure● Les outils● La démarche de test de charge● Méthodologie, outils, types de test, données de

test

La démarche PDCA● Intégrer les tests de charge au cycle de

développement (tests de non-regression)● Environnements éphémères

Page 6: Morning tech #2 - Démarche performance slides

Performance Web :les enjeux

Page 7: Morning tech #2 - Démarche performance slides

I amar prestar aenThe world has changed…

- Galadriel

source : Warner Bros & NewLine Cinema

Page 8: Morning tech #2 - Démarche performance slides

Le monde a changé

SOcial

LOcal

MObile

Page 9: Morning tech #2 - Démarche performance slides

+1 second could cost Amazon $1.6 Billion in Sales

source : https://www.fastcompany.com/1825005/how-one-second-could-cost-amazon-16-billion-sales

Page 10: Morning tech #2 - Démarche performance slides

+0.4 second and Google could lose 8 millions searches per day

source : https://www.fastcompany.com/1825005/how-one-second-could-cost-amazon-16-billion-sales

Page 11: Morning tech #2 - Démarche performance slides

Statistiques d’usage d’Internet en 2016

source : https://hostingfacts.com/internet-facts-stats-2016/

Page 12: Morning tech #2 - Démarche performance slides

Pour ce qui est des performances, les développeurs pensent souvent avoir livré ça…

En réalité, assez souvent, quand on le fait tourner en production, ça ressemble plutôt à ça…

Page 13: Morning tech #2 - Démarche performance slides

Les enjeux de la performance sur le Web

Les performances d’un système sont une spécification fonctionnelle implicite du système.

source : http://www.arthursclipart.org

Page 14: Morning tech #2 - Démarche performance slides

Les enjeux de la performance sur le Web

La performance du système doit être une préoccupation perpétuelle du cycle de développement.

source : http://www.geantsduweb.com/

Page 15: Morning tech #2 - Démarche performance slides

Les différentes composantes de la performance d’un site Web

Navigateur Web

Cache

Moteur JS

InterpréteurHTML

Connexions HTTP

Equipements réseau

Serveur DNS

Routeurs

Firewall

Proxies

Serveur Cache

Statiques

Config.

Routage backends

Refactoring HTML

Serveur Web

Workers

Config.

Rewrite ruless

Redirect

Reverse-Proxy

Algo. TLS

ACL

Rewrite rules

Protocoles HTTP

Serveur App

Workers

Config.

Protocole d’échangeStockage statiques

Message broker

Queues

TTL

Protocole d’échange

Patterns de diffusion

App

Sync / Async

Cache appli.

Langage

Qualité du code

Plateforme

load-balance

# instances

sizing & unit perfs

Tuning

Base de données

Size

Cache

Sharding

Stats / Explain plan

My Platform… well… sort of…

Page 16: Morning tech #2 - Démarche performance slides

Performance Web :les bonnes pratiques

Page 17: Morning tech #2 - Démarche performance slides

Identifier le trafic monétisable

Connaître son auditoire.Éliminer les parasites:

outils d’intelligence concurrentielle bases de données marketing monitoring média, clipping agences SEO Badbots*

*les bad bots représentaient jusqu’à 35% du nombre total de visites - (source : Datadome)

Page 18: Morning tech #2 - Démarche performance slides

Limiter le trafic non-monétisable

Robot.txt

User-agent: ArchitextSpiderDisallow: *

Améliorer le référencement

Bloquer le référencement de certaines ressources.

Déclaratif

Page 19: Morning tech #2 - Démarche performance slides

Limiter le trafic non-monétisable

GeoIP filtering

Page 20: Morning tech #2 - Démarche performance slides

Limiter le trafic non-monétisable

Solutions SaaS : Datadome

Quoi● User agent● IP owner● Géolocalisation

Comment● Nombre de hits par adresse IP● Vitesse de crawl● Récurrence des hits● Nombre de hits générant des erreurs 404● Cookies

ApacheNginxVarnish (4.0 - 4.1 - 5.0, 3.0)IIS module (ASP.Net)Wordpress plugin

DATADOME

Page 21: Morning tech #2 - Démarche performance slides

Perception d’un chargement rapide… ou pas…

Page 22: Morning tech #2 - Démarche performance slides

Architecture applicative & physique

Page 23: Morning tech #2 - Démarche performance slides

Web perf : priorité au client… et à l’affichage

Page 24: Morning tech #2 - Démarche performance slides

Web perf : priorité au client… et à l’affichage

Page 25: Morning tech #2 - Démarche performance slides
Page 26: Morning tech #2 - Démarche performance slides

Web perf : priorité au client… et à l’affichage

Page 27: Morning tech #2 - Démarche performance slides

Quickwin

& bon sens

Optimiser la taille/nombre des images

Minifier CSS/JS

Activer le Gzip

Exécuter les JS en fin de chargement

Limiter les ressources externes (JS, annonceurs, statistiques … )

Page 28: Morning tech #2 - Démarche performance slides

Optimiser la taille/nombre des images

Page 29: Morning tech #2 - Démarche performance slides

Minifier CSS/JS

Page 30: Morning tech #2 - Démarche performance slides

Les Headers

Piloter les caches

ETag:"e7d8e34a27cb1b77c9114da75ca21397"

Expires:Tue, 28 Feb 2017 01:33:01 GMT

Last-Modified:Sun, 04 Sep 2016 03:08:00 GMT

Piloter le cache :

● Navigateur

● Varnish

● CDN

Page 31: Morning tech #2 - Démarche performance slides

Activer Gzip

Apache

<IfModule mod_deflate.c>AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript application/javascript

</IfModule>

Varnish

if (beresp.http.content-type ~ "text") { set beresp.do_gzip = true; }

Non conseillé

Nginx

gzip on;gzip_types text/csstext/plain text/xml text/css text/javascript application/javascript

Page 32: Morning tech #2 - Démarche performance slides

Activer Gzip

<IfModule mod_headers.c> RewriteCond "%{HTTP:Accept-encoding}" "gzip" RewriteCond "%{REQUEST_FILENAME}\.gz" "-s" RewriteRule "^(.*)\.css" "$1\.css\.gz" [QSA] RewriteRule "\.css\.gz$" "-" [T=text/css,E=no-gzip:1] <FilesMatch "(\.js\.gz|\.css\.gz)$"> Header append Content-Encoding gzip Header append Vary Accept-Encoding </FilesMatch></IfModule>

Page 33: Morning tech #2 - Démarche performance slides

Exécuter les JS en fin de chargement

Et prioriser les CSS

HTML

JS CSSBlocks parsing Blocks rendering

...

Page 34: Morning tech #2 - Démarche performance slides

Exécuter les JS en fin de chargement

Et prioriser les CSS

HTML

JS CSSBlocks parsing Blocks rendering

Page 35: Morning tech #2 - Démarche performance slides

Limiter les ressources externes

(JS, annonceurs, statistiques … )

● Appels DNS● Réduire le nombre de syn/ack● Bande passante● limiter les redirections

Préfetch DNS resoltion:

<html> <head> <link rel="dns-prefetch" href="//www.domain1.com"> <link rel="dns-prefetch" href="//www.domain2.com"> </head> <body> <img src="www.domain1.com/image1.jpeg"> <script src="www.domain2.com/script1.js"> </body></html>

Page 36: Morning tech #2 - Démarche performance slides

Fainéantise

Lazy-load

Lazy-load:

1. Bande passante2. Rapidité3. Gaspillage

Page 37: Morning tech #2 - Démarche performance slides

Triche

● 0-200ms instante i made good

● 200 - 1000ms Computer compture its

● 1s+ I'm waiting ...

● 10+ I'm gone

1. Spinner

2. Ecran de transition

3. Substitution

Page 38: Morning tech #2 - Démarche performance slides

Triche

● 0-200ms instante i made good

● 200 - 1000ms Computer compture its

● 1s+ I'm waiting ...

● 10+ I'm gone

1. Spinner

2. Ecran de transition

3. Substitution

Page 39: Morning tech #2 - Démarche performance slides

Triche

● 0-200ms instante i made good

● 200 - 1000ms Computer compture its

● 1s+ I'm waiting ...

● 10+ I'm gone

1. Spinner

2. Ecran de transition

3. Substitution

Page 40: Morning tech #2 - Démarche performance slides

Protocole HTTP/2

Page 41: Morning tech #2 - Démarche performance slides

Protocole HTTP/2

Page 42: Morning tech #2 - Démarche performance slides

Performance Web :l’obsession de la mesure

Page 43: Morning tech #2 - Démarche performance slides

L’obsession de la mesure

La mesure de performance doit être au cœur du processus de développement informatique.

source : http://www.geantsduweb.com/

Page 44: Morning tech #2 - Démarche performance slides

Les tests de charge

Différents types de test de charge

Objectif : mesurer la performance unitaireEx. : le use case de souscription est testé pour 1 utilisateur et, pour chaque étape du use case, on mesure le temps passé dans les différents composants de l’application.

Test de performance

unitaire

Test de charge

Test de rupture

Test de vieillissement

Objectif : mesurer la tenue en charge de l’application sur la population cibleEx. : on simule l’utilisation de l’application par 200 utilisateurs en parallèle pendant 2 heures.

Objectif : déterminer les limites de l’applicationEx. : on augmente le nombre d’utilisateurs en parallèle sur l’application jusqu’à ce que le taux d’erreurs / les temps de réponse ne soient plus acceptables.

Objectif : déterminer la capacité de l’application à fonctionner sur une période étendueEx. : on simule l’utilisation de l’application pendant 48h, avec une charge constante et égale à la charge moyenne.

Page 45: Morning tech #2 - Démarche performance slides

Tests de charge

But:

Connaître les limites de la plateforme

Déterminer les goulets d’étranglement

Optimiser le paramétrage middleware et applicatif

Cibler d'éventuelles anomalies de conception logiciel, architecture.

Page 46: Morning tech #2 - Démarche performance slides

Méthodologie d’un tir de charge

Définition du plan et des cas de test

Création des scénarii et des scripts de tests

Enregistrement des métriques

Consolidation des métriques et édition d’un rapport de test

Analyse du rapport de test et émission des préconisations

1

2

3

4

5

Plan de test Cas de test Création des paliers de données1

Scripts de test Scénarii de test

Capture des métriques

Données de test

3

MétriquesContrôleur

Rapport d’analyse

Rapport de test

char

ge

monitoring

pilotage

Injecteurs

Exécution : simulation d’utilisateurs3

Application cible

Page 47: Morning tech #2 - Démarche performance slides

Tests de charge

Qualité du tir de charge dépend que la qualité du scénario

Connaître le comportement de ses utilisateurs (RUM: Google analytics, Newrelic)

Page 48: Morning tech #2 - Démarche performance slides

Gatling

Exemple Scala

Page 49: Morning tech #2 - Démarche performance slides

Gatling

Exemple Scala

Page 50: Morning tech #2 - Démarche performance slides

Gatling

Options de lancement

Page 51: Morning tech #2 - Démarche performance slides

Tests de charge

Les outils : Gatling - NewRelic

Page 52: Morning tech #2 - Démarche performance slides

Performance Web :la démarche PDCA

Page 53: Morning tech #2 - Démarche performance slides

Premature optimization is the root of all evil

- Donald Knuth

Page 54: Morning tech #2 - Démarche performance slides

L’optimisation ne vaut que par l’expérimentation

Code

Measure

Optimize

Where needed!

Page 55: Morning tech #2 - Démarche performance slides

Les tests de perf dans un cycle projet

Mode Waterfall

PROD

ArchiDev

Perf

Page 56: Morning tech #2 - Démarche performance slides

Les tests de perf dans un cycle projet

Mode agile

PROD

ArchiDev

Perf

1. Conception des tests

2. Automatisation des tests

3. Développement logiciel

#1 #2 #3

4. Exécution auto- matique des tests

Page 57: Morning tech #2 - Démarche performance slides

Les tests de perf dans un cycle projet

Mode “dans la vraie vie”

PROD

ArchiDev

Perf

1. Conception des tests

2. Automatisation des tests

3. Développement logiciel

#1 #2 #3

4. Exécution auto- matique des tests

PERFORMANCES

CATASTROPHIQUES

MEP À L’ARRACHE

DélaiOPTIMISATIONS

COMME ON PEUT

Page 58: Morning tech #2 - Démarche performance slides

Les tests de perf dans un cycle projet

Mode “Etat de l’art”

PROD

ArchiDev

Tests de charge en continu

1. Conception des tests

2. Automatisation des tests

3. Développement logiciel

#1 #2 #3

4. Exécution auto- matique des tests

Page 59: Morning tech #2 - Démarche performance slides

2

1

34

AMI

0

Cloud-init

EC2Chef-solo CodeDeploy

ECR

S3 bucket

Tirs de performance automatisés

Environnements éphémères

1• Terraform provisionne des instances EC2 sur AWS

(accès via SSH possible)• Utilisation d’AMIs spécifiques enrichies avec un chef-solo

2

3• CodeDeploy déclenche l’exécution de Chef-solo• Chef-solo récupère les cookbooks sur un bucket S3• Installation des packages et configuration OS +

middleware

4• CodeDeploy lance le déploiement de l’application• Récupération des artefacts applicatifs sur des dépôts (git,

nexus, registry Docker)• Déploiement de l’application

5 • Déclenchement des scénarios Gatling

• job lancé en automatique via un pipeline Gitlab-CI0

• Scripts de démarrage cloud-init• Déclenchement de CodeDeploy

Page 60: Morning tech #2 - Démarche performance slides

Questions ?Réponses…