Appli Web – – Haute charge



Appli Web – – Haute charge

0 0


presentation-webapp-archi


On Github kuhess / presentation-webapp-archi

Appli Web

Haute charge

Par Quentin SuireINSA de Rouen, le 02/09/2015

Quentin Suire

Promo ASI 2011

Ingénieur full-stack chez Viadeo.com

DES PHOTOS !

Plan

WUT? Un exemple de scalabilité Le cas d'une web app Démo

Wut?

Une Application Web

“En informatique, une application web est une application manipulable grâce à un navigateur web.” — Wikipedia C'est simple, mais qu'est-ce que ça donne techniquement ?

Un p'tit schéma

| browser | <-http-> | web app |

architecture client-serveur classique

Une bonne web app ?

Les utilisateurs sont heureux

Le site est disponible

L'entreprise ne perd pas d'argent

Le système peut évoluer

on voit venir :P on peut ajouter des fonctionnalités on peut "grandir"

Évolutivité

  • Produit : Apporter plus de fonctionnalités.
  • Utilisation : Supporter un usage plus important.

La scalabilité

“La scalabilité désigne la capacité d'un produit à s'adapter à un changement d'ordre de grandeur de la demande.” — Wikipedia

Remarques

Truth #1

It won't scale if it's not designed to scale.

Truth #2

Even if it's designed to scale, there's going to be pain.

— John Engates, CTO de Rackspace

Un exemple de scalabilité

Le café du coin

Basé sur http://highscalability.com/blog/2014/3/17/intuitively-showing-how-to-scale-a-web-application-using-a-c.html

Les premiers clients

Café

SCHÉMA

Un seul barista, une seule machine => traitement synchrone

Le client n'attend pas

Pendant les pics d'affluences, des clients s'en vont à cause du temps d'attente.

Café

SCHÉMA

3 baristas

2 chaises pour les clients qui attendent

Une machine qui peut faire 2 cafés à la fois

Toujours plus de clients

Café

SCHÉMA

5 baristas

3 chaises pour les clients qui attendent

Une machine qui peut faire 4 cafés à la fois

=> scaling vertical

Pendant la journée, les effectifs et les machines sont surdimensionnés.

Café

SCHÉMA

1 serveur qui prend les commandes et fait le service

[3 baristas + 1 machine à 2 cafés]

3 chaises pour les clients qui attendent

=> scaling horizontal

Les clients sont satisfaits...

mais ils veulent des gaufres

Café

SCHÉMA

1 ticket est attribué à chaque client

les baristas décident de faire du café ou des gaufres

1 machine à gaufres

1 serveur qui prend les commandes et fait le service

[3 baristas + 1 machine à 2 cafés] * 1 ou 2

plus efficace MAIS c'est compliqué

Mais !?! C'est Starbucks !

Le cas d'une web app

Architecture 3-tiers

SCHÉMA

Pas de complexité développements rapides Peu de serveurs faibles coûts

Sécuriser la donnée

SCHÉMA

Ajout d'un système de réplication

Déployer sans période d'indisponibilité

SCHÉMA

Un minimum de 2 serveurs applicatifs

Ajout d'un load balancer (reverse proxy)

Différencier la lecture de l'écriture

SCHÉMA 2

Cohérence à terme

asynchronisme cohérence à terme en lecture

Supprimer les Single Points of Failure

SCHÉMA

Haute disponibilité

Proxy Pare-feu (firewall) Routeur Opérateur réseau Serveur de répartition de charge Serveur de service (HTTP, LDAP, Base de données, stockage, etc.) Tout câble ou interface réseau L'alimentation électrique (transformateur qui casse, arrivée d'alimentation qui disjoncte, câble sectionné).

,

1
Appli Web Haute charge Par Quentin Suire INSA de Rouen, le 02/09/2015