1. Monter une infrastructure web
pour 1 Million de visites par jour
PetitDéjeuner Libertis Monter une infrastructure web pour 1 Million de visites par jour 15 Avril 2010
2. 1. Introduction au petitdéjeuner
Présentation d'Evolix
Présentation de Cybercartes
Problématique de Cybercartes
PetitDéjeuner Libertis Monter une infrastructure web pour 1 Million de visites par jour 15 Avril 2010
3. Introduction au petitdéjeuner
#evoptitdej
Prochain Petit Déjeuner Libertis
– 29 Avril 2010 : OpenBravo et SpagoBI / ChateauGombert
8. • CYBERCARTES EN CHIFFRES
Créé en 1997, cybercartes.com propose environ
10.000 cartes virtuelles et une technologie
propriétaire unique permettant l’animation de photos
et l’enregistrement de voix pour créer de toutes
pièces des cartes originales et personnalisées.
La société CyberCartes (créée en 2000) a 2 activités :
– Editeur du site cybercartes.com
– Opérateur de solutions
Visites : 6,5 millions (janvier 2010)
Visiteurs Uniques : 3,5 millions (janvier 2010)
Pages vues : 40 millions (janvier 2010)
Newsletter hebdo : 5 millions d’abonnés
Base Emailing : 2,3 millions d’abonnés optin
Recrutement/coreg : 1 500 000 (par an)
PAP/VU : 9 pages
Temps Moyen : 4:57mn
9. • PARTICULARITES CYBERCARTES
A. Effet viral
A. Pics événementiels
Pâques
Fête des
Mères
Les
Noël Voeux
Saint
Halloween
Valentin Fête
Journée
des
Grands Mères de la Femme
Muguet A. Top catégories
Fête des Pères 1er Mai
1er Avril
13. Problématique de Cybercartes
#evoptitdej
Des soucis majeurs récurrents lors des pics de visiteurs
o Problèmes NFS / Accès disque
o Montée en charge violente des frontaux web
o Problème firewall (limite nombre de connexions)
o etc.
15. Problématique de Cybercartes
#evoptitdej
1 million de visites par jour tous les jours, c'est « facile » mais
c'est très difficile de le faire une seule fois par an (préparation
complexe, la garantie doit être maximale).
16. 2. Solution Evolix pour Cybercartes
Interactions avec l'équipe de développement
Changements pour fin 2008
Changements pour fin 2009
PetitDéjeuner Libertis Monter une infrastructure web pour 1 Million de visites par jour 15 Avril 2010
18. Intéraction avec l'équipe de développement
#evoptitdej
Réflexions/choix avec les développeurs
●
Présentation des changements sur l'infrastructure
●
Notion de nœuds et séparation catalogue/commande/retrait
●
Publication de recommandations / best pratices
●
Planning fixé avec des points réguliers
●
Environnement de dév, scripts de déploiement (dev/prod)
●
Tests de montée en charge avec Tsung et... corrections en
●
conséquence, notamment certaines pages ont été
redeveloppées sans utiliser le framework utilisé (Zend) !!
21. Principes de base
#evoptitdej
Nous sommes fixés les principes suivants :
N'importe quel équipement peut tomber (...ou presque), cela n'impacte pas la
production. Une panne sur un seul équipement n'est jamais urgente.
Utiliser le maximum des ressources existantes en évitant le matériel
inactif, c'estàdire essayer d'être en actif/actif partout.
Un équipement inactif, c'est cher. Très cher.
Avoir une indépendance visàvis des hébergeurs/opérateurs : même
en cas d'attaque nucléaire sur un datacenter, la page d'accueil, le
catalogue et les nouvelles commandes restent en ligne.
On a déjà eu une attaque nucléaire...
23. Focus sur le réseau « haute dispo »
#evoptitdej
Passage en Gigabit (le 1er janvier 2010, à 11h du matin, on avait un
débit cumulé de 500 Mb/s dont plus de 150 Mb/s sur le datacenter
principal)
Tolérance de panne (et de travaux)
Basculement complètement transparent : les sessions réseau sont
conservées. Par exemple, une connexion SSH n'est pas coupée par une
bascule du routeur/firewall ;)
24. Focus sur la notion de nœuds
#evoptitdej
●
Répartition du trafic non spécifique (90%) sur plusieurs nœuds
●
Utilisation de serveurs « static » (Nginx + cache HTTP)
indépendants des nœuds
●
Enregistrements DNS avec un faible TTL (TimeTo
Live)...bascule manuelle en cas d'incident majeur
●
Serveur DNS master « caché »
25. Focus sur le cache/loadbalancing
#evoptitdej
●
Squid est trèèès performant. Pour du contenu en cache, c'est
comparable à servir des pages en HTML statique.
●
Tout ce qui est caché n'atteint pas les frontaux. C'est une grosse
économie. Le cache c'est bon, mangezen !
●
Pour aplatir un peu les pics de charge, on précache les pages les
pages les plus visitées via un script quotidien. (merci Awstats)
28. Focus sur les filers
#evoptitdej
Le défi d'être en actif/actif en production a échoué. #FAIL
●
HTTP (via Nginx) pour les accès en lecture
●
NFS pour les accès en écriture (à minimiser)
●
On s'appuie sur un SAN (hautes performances mais
Single Point of Failure potentiel)
●
La bascule est critique (système de fichiers, STONITH)
30. Focus sur les serveurs SQL
#evoptitdej
Le défi d'être en actif/actif en production a réussi. o/
Historique de l'infrastructure SQL
o À l'origine, un seul serveur
+ Pas de haute disponibilité
+ Scalabilité limitée
o 2007, réplication master/slave avec IP failover
+ Haute disponibilité
+ Utilisation du second serveur pour des tâches annexes (sauvegardes, stats, etc)
31. Focus sur les serveurs SQL
#evoptitdej
* Aujourd'hui, réplication master/master avec load balancing
o Permet d'absorber les pics de charge en sérialisant les requêtes
o Haute disponibilité plus souple
o Scalabilité évolutive avec la réplication circulaire
o Mais... attention au développement
* Contraintes de développement
o Gestion du « lag »
o Utilisation d'auto increment (y compris entre les différents nodes)
o Attention à l'ordre des modifications...
32. Mais aussi...
#evoptitdej
Memcache (cache applicatif) (Musthave)
●
Sharedance (sessions PHP partagées) (Merci Skyrock)
●
●
Passage du NAT en adressage public, utilisation d'un
réseau privé interne (performances, souplesse)
●
Utilisation de serveurs de marques différentes
(DELL/IBM/HP) et système différents
(Debian/FreeBSD/OpenBSD) : « ne pas mettre tous ses
œufs dans le même panier... et utiliser le meilleur à
chaque poste ! » (OM, 1er du championnat)
34. Vers le Cloud Computing
#evoptitdej
Pour le 2e nœud, on est passé d'un hébergement classique
(baie chez OVH) à du Cloud Computing (Amazon EC2).
Définition :
Le National Institute of Standards and Technology (NIST) aux États
Unis a officialisé la définition du Cloud Computing : « Le Cloud
Computing est un modèle économique « pay per use » pour
accéder et utiliser, à travers du réseau, à un pool de ressources
informatiques configurables et partagées (i.e. réseaux, serveurs,
stockage, applications, etc.) qui peuvent être rapidement achetées
et utilisées avec un effort de gestion minimal et une interaction
limitée avec le fournisseur de services ».
35. Amazon EC2
#evoptitdej
Amazon est le principal opérateur d'IAAS (Infrastructure As A Service).
Il repose sur plusieurs datacenters aux ÉtatsUnis/Europe/Asie...
●
Attention, « pay per use » ne veut pas dire qu'on paye à la demande toutes
les ressources. Par exemple, la taille des serveurs (CPU, RAM) doit être
choisie.
●
Choix des espaces de stockage (EBS)
●
Stockage des images (AMI) sur Amazon S3
●
Attention, le prix est assez élevé (75 $/mois pour une Small instance et
150 $/mois pour une Medium)... si l'on a une consommation constante.
●
Mauvaise surprise : la latence élevée entre serveurs sur une même zone
●
Démo....
36. Conclusion sur le Cloud Computing
#evoptitdej
●
Le Cloud Computing, cela peut être génial ! Cela apporte souplesse, de
potentielles grosses économies, etc. etc. (et cela sauve des bébés ours)
MAIS
●
Du Cloud Computing n'est pas une infra clé en main pour gérer des
applications classiques. Cela diffère d'une infra classique (I/O, latence).
●
Les applis doivent être adaptées selon ces contraintes spécifiques...
●
Avec du Cloud Computing (ou même de la simple virtualisation), il faut bien
avoir en tête que centraliser hébergement+matériel rajoute aussi du danger
(SPOF!)
●
En conclusion, nous préconisons donc une infra mixte (classique + Cloud) ou
une infra avec deux services de Cloud indépendants (GANDI + Amazon EC2)
38. Conclusion
#evoptitdej
Le défi CyberCartes a été relevé par Evolix avec succès !
Pour fin 2010 :
✔
Amélioration de la technique de failover pour les contenus
statiques (serveurs s'annonçant euxmême via DNS)
✔
Gestion optimisée de la politique de stockage et nettoyage
complètement automatique des données
✔
Utilisation davantage de Cloud Computing
39. That's all folks!
#evoptitdej
Fin de la présentation...
Des questions ?
Grégory COLPART Resp. technique <reg@evolix.fr>
Sébastien DUBOIS Resp. commercial <sdubois@evolix.fr>
Nicolas DURUT Resp. technique <nico@cybercartes.com>