Cours 3/3 - Architecture Web

Post on 30-Nov-2014

900 views 4 download

description

Troisième cours donné à HETIC pour les H4 sur l'architecture web.

Transcript of Cours 3/3 - Architecture Web

Architecture web Cours

mercredi 3 avril 13

mercredi 3 avril 13

Visiblement Koh-Lanta 2014, n’aura pas lieu, non plus...

mercredi 3 avril 13

Lindsay Lohan a annoncé sur Twitter qu’elle était enceinte...

mercredi 3 avril 13

mercredi 3 avril 13

mercredi 3 avril 13

mercredi 3 avril 13

Battle Plan pour aujourd’hui

mercredi 3 avril 13

Geolocalisation

Battle Plan pour aujourd’hui

mercredi 3 avril 13

Geolocalisation Moteurs de recherche

Battle Plan pour aujourd’hui

mercredi 3 avril 13

Geolocalisation Moteurs de recherche

Test de performance

Battle Plan pour aujourd’hui

mercredi 3 avril 13

Geolocalisation Moteurs de recherche

Test de performance Sizing

Battle Plan pour aujourd’hui

mercredi 3 avril 13

Geolocalisation Moteurs de recherche

Test de performance Sizing

Battle Plan pour aujourd’hui

Déploiements

mercredi 3 avril 13

Geolocalisation Moteurs de recherche

Test de performance Sizing

Battle Plan pour aujourd’hui

Déploiements Tests

mercredi 3 avril 13

Geolocalisation Moteurs de recherche

Test de performance Sizing

Battle Plan pour aujourd’hui

Déploiements Tests

Exemple

mercredi 3 avril 13

Moteur de recherche

mercredi 3 avril 13

Comment fonctionne un moteur de recherche ?

mercredi 3 avril 13

1. Normalisation

mercredi 3 avril 13

mercredi 3 avril 13

J’ai mangé du chocolat

[je], [manger], [chocolat]mercredi 3 avril 13

2. Poids des mots

mercredi 3 avril 13

Extraordinaire loi Zipf

mercredi 3 avril 13

f(n) = K / n

la fréquence d'occurrence f(n) d'un mot est liée à son rang n dans l'ordre des fréquences par une loi de la forme

Mandelbrot ShannonParetomercredi 3 avril 13

TF/IDF

mercredi 3 avril 13

Doc 1 Doc 2 Doc 3

Son nom est célébré par le bocage qui frémit, et par le ruisseau qui murmure, les vents l’emportent jusqu’à l’arc céleste, l’arc de grâce et de consolation que sa main tendit dans les nuages.

À peine distinguait-on deux buts à l’extrémité de la carrière : des chênes ombrageaient l’un, autour de l’autre des palmiers se dessinaient dans l’éclat du soir.

Ah ! le beau temps de mes travaux poétiques ! les beaux jours que j’ai passés près de toi ! Les premiers, inépuisables de joie, de paix et de liberté ; les derniers, empreints d’une mélancolie qui eut bien aussi ses charmes.

QUI ?

mercredi 3 avril 13

TF1 = 2 / (3 + 7x2 + 21) = 2/38

mercredi 3 avril 13

IDF1 = log (3 / 2)

mercredi 3 avril 13

tfidf1 = 2/38 x log (3/2) = 0,0092

tfidf2 = 0 x log (3/2) = 0

tfidf3 = 1/40 x log (3/2) = 0,0044

mercredi 3 avril 13

3. Indexation

mercredi 3 avril 13

mercredi 3 avril 13

Poids

mercredi 3 avril 13

PoidsLocalisation

mercredi 3 avril 13

PoidsLocalisation

Sémantique

mercredi 3 avril 13

PoidsLocalisation

SémantiquePopularité

mercredi 3 avril 13

PoidsLocalisation

SémantiquePopularité

Datemercredi 3 avril 13

4. Recherche

mercredi 3 avril 13

5. Facettes

mercredi 3 avril 13

mercredi 3 avril 13

1990

Alam Emtage

Montréal

Archie

mercredi 3 avril 13

Quels moteurs de recherche connaissez-

vous ? mercredi 3 avril 13

mercredi 3 avril 13

mercredi 3 avril 13

mercredi 3 avril 13

mercredi 3 avril 13

mercredi 3 avril 13

mercredi 3 avril 13

Geolocalisation

mercredi 3 avril 13

mercredi 3 avril 13

Cylindrique

Conique

Polaire

mercredi 3 avril 13

Distance de surface

mercredi 3 avril 13

SELECT poi_id FROM poi AS p WHERE 6371 * 2 * ATAN2 ( SQRT ( ( SIN( ( RADIANS(p.latitude - @lat) / 2 ) * SIN( RADIANS(p.latitude - @lat) / 2 ) + COS ( RADIANS (@lat )) * COS ( RADIANS ( p.latitude ) ) * SIN ( RADIANS(p.longitude - @long) / 2 ) * SIN ( RADIANS(p.longitude - @long) / 2 ) ) ) , SQRT ( 1 - (SIN( RADIANS(p.latitude - @lat) / 2 ) * SIN( RADIANS(p.latitude - @lat) / 2 ) + COS ( RADIANS (@lat) ) * COS ( RADIANS (p.latitude) ) * SIN ( RADIANS(p.longitude - @long) / 2 ) * SIN ( RADIANS(p.longitude - @long) / 2 ) ) ) ) < @radius;

Récupération de POI classé par la distance par rapport à un point

sur la terre

mercredi 3 avril 13

mercredi 3 avril 13

{ loc : { type : "Point" , coordinates : [ 40, 5 ]} }

db.collection.ensureIndex( { loc : "2dsphere" } )

db.places.find( { loc : { $near : { $geometry : { type : "Point" , coordinates: [ 40 , 5 ] } , $maxDistance : 100 } } } )

mercredi 3 avril 13

db.places.find( { loc : { $geoWithin : { $centerSphere : [ [ 88 , 30 ] , 10 / 3959 ] } } } )

db.places.find( { loc : { $geoIntersects : { $geometry : { type : "Polygon" , coordinates: [ [ [ 0 , 0 ] , [ 3 , 6 ] , [ 6 , 1 ] , [ 0 , 0 ] ] ] } } } } )

mercredi 3 avril 13

<field name="store">45.17614,-93.87341</field><field name="store">40.7143,-74.006</field><field name="store">37.7752,-122.4232</field>

<fieldType name="location" class="solr.LatLonType" subFieldSuffix="_coordinate"/>

&q=*:*&fq={!geofilt pt=45.15,-93.85 sfield=store d=5}

"response":{"numFound":8,"start":0,"docs":[ { "name":"Samsung SpinPoint P120 SP2514N - hard drive - 250 GB - ATA-133", "store":"45.17614,-93.87341"}, { "name":"Maxtor DiamondMax 11 - hard drive - 500 GB - SATA-300", "store":"45.17614,-93.87341"},

mercredi 3 avril 13

Déploiements

mercredi 3 avril 13

Sources

mercredi 3 avril 13

mercredi 3 avril 13

mercredi 3 avril 13

mercredi 3 avril 13

mercredi 3 avril 13

DEV TEST PRE-PROD PROD

CODE

BASE

mercredi 3 avril 13

mercredi 3 avril 13

Checkout du code

mercredi 3 avril 13

Checkout du codeSauvegarder la base

mercredi 3 avril 13

Checkout du codeSauvegarder la baseScripts de mise à jour

mercredi 3 avril 13

Checkout du codeSauvegarder la baseScripts de mise à jour

Copier les fichiers

mercredi 3 avril 13

Checkout du codeSauvegarder la baseScripts de mise à jour

Copier les fichiersMettre à jour la conf

mercredi 3 avril 13

Checkout du codeSauvegarder la baseScripts de mise à jour

Copier les fichiersMettre à jour la conf

Lancer la revue du code

mercredi 3 avril 13

Checkout du codeSauvegarder la baseScripts de mise à jour

Copier les fichiersMettre à jour la conf

Lancer la revue du codeTests automatiques

mercredi 3 avril 13

Capistrano & Webistrano

mercredi 3 avril 13

Intégration Continue

mercredi 3 avril 13

mercredi 3 avril 13

mercredi 3 avril 13

mercredi 3 avril 13

mercredi 3 avril 13

Tests automatiques

mercredi 3 avril 13

mercredi 3 avril 13

Selenium

mercredi 3 avril 13

mercredi 3 avril 13

Couverture

mercredi 3 avril 13

Tests de performance

mercredi 3 avril 13

Quels types de test de perf.

vous connaissez ?

mercredi 3 avril 13

mercredi 3 avril 13

Test de charge

mercredi 3 avril 13

Test de chargeTest des transactions

mercredi 3 avril 13

Test de chargeTest des transactions

Test de stress

mercredi 3 avril 13

Test de chargeTest des transactions

Test de stressTest de montée en charge

mercredi 3 avril 13

Test de chargeTest des transactions

Test de stressTest de montée en charge

Test aux limites

mercredi 3 avril 13

Test de chargeTest des transactions

Test de stressTest de montée en charge

Test aux limitesTests d’endurance

mercredi 3 avril 13

Pondeuses

mercredi 3 avril 13

Scénario

mercredi 3 avril 13

mercredi 3 avril 13

mercredi 3 avril 13

mercredi 3 avril 13

Log Apache

mercredi 3 avril 13

mercredi 3 avril 13

mercredi 3 avril 13

mercredi 3 avril 13

mercredi 3 avril 13

1 pixel IFRAME trick

mercredi 3 avril 13

Sizing

mercredi 3 avril 13

RAM

mercredi 3 avril 13

Charge Nominale

mercredi 3 avril 13

Charge Nominale

Front 1

mercredi 3 avril 13

Charge Nominale

Front 1 Front 2

mercredi 3 avril 13

Charge Nominale

Front 1 Front 2

mercredi 3 avril 13

Charge Nominale

Front 1 Front 2

mercredi 3 avril 13

Charge Nominale

Front 1 Front 2 50%

mercredi 3 avril 13

Charge Nominale

Front 1 Front 2 50%

Front 1

mercredi 3 avril 13

Charge Nominale

Front 1 Front 2 50%

Front 1 ...

mercredi 3 avril 13

Charge Nominale

Front 1 Front 2 50%

Front 1 ... Front 5

mercredi 3 avril 13

Charge Nominale

Front 1 Front 2 50%

Front 1 ... Front 5

mercredi 3 avril 13

Charge Nominale

Front 1 Front 2 50%

Front 1 ... Front 5

mercredi 3 avril 13

Charge Nominale

Front 1 Front 2 50%

Front 1 ... Front 5 80%

mercredi 3 avril 13

mercredi 3 avril 13

20 000

mercredi 3 avril 13

20 00090%

mercredi 3 avril 13

20 00090%

1000

mercredi 3 avril 13

20 00090%

100010%

mercredi 3 avril 13

Combien de trafic je peux accepter ?

mercredi 3 avril 13

Un peu de maths :

Cmax = charge maximale

Ca = Charge d’un utilisateur anonyme

Cc = Charge d’un utilisateur connecté

Xa = nombre max d’utilisateurs anonymes

Xc = nombre max d’utilisateurs connecté

mercredi 3 avril 13

Un peu de maths :

Cmax = 20000*Ca*0,5 = 1000*Cc*0,5 (50% nominal)

XaCa + XcCc = Cmax

Xa = 9Xc (90%)

9Xc*Cmax/10000 + Xc*Cmax/500 = Cmax

Xc = 1/(9/10000 + 1/500) = 344

Xa = 9 * 344 = 3103

mercredi 3 avril 13

HAmercredi 3 avril 13

SPOFmercredi 3 avril 13

mercredi 3 avril 13

Load Balancer

Front1 Front2 Front3 Front4

Back1 Back2

mercredi 3 avril 13

Load Balancer

Front1 Front2 Front3 Front4

Back1 Back2

SPOF

mercredi 3 avril 13

Load Balancer 1 Load Balancer 2

Super Load Balancer ?

mercredi 3 avril 13

Load Balancer 1 Load Balancer 2

Super Load Balancer ?

SPOF

mercredi 3 avril 13

IP Flotante

mercredi 3 avril 13

Load Balancer Actif192.168.0.1

Load Balancer Passif192.168.0.2

Ip Flotante : 192.168.1.1

mercredi 3 avril 13

LB1 LB2

Ip Flotante

Front1 Front2 Front3 Front4

MySQL1Actif

MySQL2Passif

Replication

mercredi 3 avril 13

LB1 LB2

Ip Flotante

Front1 Front2 Front3 Front4

MySQL1Actif

MySQL2Passif

Replication

SPOFmercredi 3 avril 13

heart beat

mercredi 3 avril 13

mercredi 3 avril 13

mercredi 3 avril 13

mercredi 3 avril 13

@mtopolov

mtopolov@adyax.commercredi 3 avril 13