Monter une infrastructure web pour 1 Million de visites par jour Petit Déjeuner Libertis Monter une infrastructure web pour 1 Million de visites par jour 15 Avril 2010
1. Introduction au petit déjeuner Présentation d'evolix Présentation de Cybercartes Problématique de Cybercartes Petit Déjeuner Libertis Monter une infrastructure web pour 1 Million de visites par jour 15 Avril 2010
Introduction au petit déjeuner Prochain Petit Déjeuner Libertis 29 Avril 2010 : OpenBravo et SpagoBI / Chateau Gombert
Présentation Evolix Petit Déjeuner Libertis Monter une infrastructure web pour 1 Million de visites par jour 15 Avril 2010
Présentation Evolix / Offre 2010 1/ Packs Evolix et Maintenance : Packs Evolix (intégration de serveur mail, de fichiers, firewall, VPN, IDS), suivi, maintenance, support. 3/ Sur mesure: Développement sur cahier des charges (PHP), personnalisation d'outils libres. 2/ Audit, conseil, hébergement, migration : étude de faisabilité, audit de sécurité et réseau, hébergement en datacenter mutualisé ou dédié. 4/ Formations formations expert (LAMP, Samba,...)
Présentation Evolix / Références
Présentation Cybercartes Petit Déjeuner Libertis Monter une infrastructure web pour 1 Million de visites par jour 15 Avril 2010
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/co reg : 1 500 000 (par an) PAP/VU : 9 pages Temps Moyen : 4:57mn
PARTICULARITES CYBERCARTES A. Effet viral A. Pics événementiels Fête des Mères Noël Halloween Fête des Pères Saint Valentin Muguet 1er Mai Pâques Les Voeux Fête des Grands Mères Journée de la Femme 1er Avril A. Top catégories
SOLUTIONS TECHNIQUES Avatar parlant / Présentateur virtuel
SOLUTIONS TECHNIQUES Avatar parlant / Présentateur virtuel Diffusion Multi Canal
Problématique de Cybercartes Petit Déjeuner Libertis Monter une infrastructure web pour 1 Million de visites par jour 15 Avril 2010
Problématique de Cybercartes 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.
Problématique de Cybercartes Les pics de charge sont quasiment doublés chaque année
Problématique de Cybercartes 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).
2. Solution Evolix pour Cybercartes Interactions avec l'équipe de développement Changements pour fin 2008 Changements pour fin 2009 Petit Déjeuner Libertis Monter une infrastructure web pour 1 Million de visites par jour 15 Avril 2010
Interactions avec l'équipe de développement Petit Déjeuner Libertis Monter une infrastructure web pour 1 Million de visites par jour 15 Avril 2010
Intéraction avec l'équipe de développement 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)!!
Changements pour fin 2008 Petit Déjeuner Libertis Monter une infrastructure web pour 1 Million de visites par jour 15 Avril 2010
Principes de base 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...
Infrastructure Cybercartes
Focus sur le réseau «haute dispo» 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 ; )
Focus sur la notion de nœuds 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 (Time To Live)...bascule manuelle en cas d'incident majeur Serveur DNS master «caché»
Focus sur le cache/load balancing 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, mangez en! 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)
Squid
HAProxy
Focus sur les filers 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)
Heartbeat
Focus sur les serveurs SQL 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)
Focus sur les serveurs SQL * 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...
Mais aussi... Memcache (cache applicatif) (Must have) 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)
Changements pour fin 2009 Petit Déjeuner Libertis Monter une infrastructure web pour 1 Million de visites par jour 15 Avril 2010
Vers le Cloud Computing 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».
Amazon EC2 Amazon est le principal opérateur d'iaas (Infrastructure As A Service). Il repose sur plusieurs datacenters aux États Unis/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...
Conclusion sur le Cloud Computing 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)
3. Conclusion Petit Déjeuner Libertis Monter une infrastructure web pour 1 Million de visites par jour 15 Avril 2010
Conclusion Le défi CyberCartes a été relevé par Evolix avec succès! Pour fin 2010 : Amélioration de la technique de fail over pour les contenus statiques (serveurs s'annonçant eux même via DNS) Gestion optimisée de la politique de stockage et nettoyage complètement automatique des données Utilisation davantage de Cloud Computing
That's all folks! 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>