Articles taggés "cloud-computing"

Poste par Cedric Sadai, le 20/10/09 - Technologie

Plateforme street artCes dernières semaines, nous avons sorti un produit que nous préparons depuis pas mal de temps. Il s’agit de FatCap. Ce site, visible en francais sur www.fatcap.org, et initialement créé en 1998, est un des leaders mondiaux des magazines d’arts urbains en ligne. Pour cette nouvelle version, les objectifs à atteindre étaient multiples:

  • Bâtir une plateforme solide, basée sur le contenu des utilisateurs (photos, vidéos) ET sur le contenu produit par l’équipe éditoriale (vidéos maison, articles, interviews, reportages, mises en avant)
  • Rendre cette plateforme entièrement géolocalisée, afin de pouvoir suivre l’évolution de l’art dans une ville, dans un état américain, dans un pays, ou même dans un continent.
  • Tirer la plus grande valeur de chaque élément de contenu en créant une base intelligente et structurée censée représenter l’art urbain de manière exhaustive: Ainsi, chaque artiste devra avoir sa page, ainsi que chaque groupe d’artiste. De même, chaque photo pourra être multi-taggée avec une quinzaine de critères afin de répondre de manière complète à tout type de demande de la part des internautes.
  • L’ensemble de la plateforme devra être internationalisée, et mieux encore, localisée, c’est à dire que la couche éditoriale devra être différente sur les différents sites locaux. L’actualité de chaque version localisée étant adaptée au pays ciblé par la version, à l’inverse de sites internationalisés au contenu unique, traduit soit à la main soit par un traducteur automatique.

La conception

Nous sommes donc partis pour quatre mois de conception dès mi-2007, où il s’agissait d’abord de faire un état des lieux des technologies en présence. En effet, il fallait contourner par la technologie les problèmes suivants:

- Géolocalisation: Il était bien sûr hors de question de se baser sur des champs texte, qui laissent la part belle aux fautes en tout genre. Il fallait se baser sur une API (et donc sur des ID), et proposer un système souple et intelligent qui permettrait aux utilisateurs de renseigner les villes de manière intuitive. Côté API, elle devait être pérenne, et n’avoir aucun risque de cessation d’activité à court ou moyen terme. Nous avons opté pour les bases de Yahoo! Geoplanet (qui, hasard ou chance, sont sorties en plein milieu de notre phase de conception), car ce sont celles utilisées par Flickr et celles qui de loin présentent les fonctionnalités les plus puissantes et les meilleures garanties.

- Ce dernier point fut en outre à l’origine d’un problème plus global: ayant un contenu méta-taggée de manière très riche, il convenait d’adopter un système de tagging très simple à utiliser, très loin donc, des éléments de formulaires mis à notre disposition par le simple fruit de l’HTML (menu déroulants, boutons radio, etc..). Le JavaScript allait donc être intensivement utilisé sur certaines pages. En effet, plus vous rendez une information compliquée à rentrer, plus vous risquez d’avoir des informations lacunaires.

La solution à ces deux problèmes peuvent être illustrés au travers de l’exemple du tagging d’une ville. Voici à quoi ressemble le formulaire d’inscription, par exemple:

fig. 1

fig. 2

fig. 3

Comme vous le voyez sur le drapeau, on préselectionne automatiquement le pays dans lequel l’IP du visiteur se situe. S’il le souhaite, il peut évidemment changer ce pays. Cela nous permet de restreindre notre recherche de ville au pays sélectionné, évitant ainsi les multiples doublons constatés à l’échelle mondiale. Ensuite, la puissance de l’interactivité avec l’API se déploie lorsque la ville est inconnue en base (fig. 2). La, alors que l’utilisateur va taper entièrement le texte de sa ville, nous ne sommes pas encore en mesure de la relier à une ville issue de la base de données des villes Flickr, disponible à travers Yahoo! Geoplanet. Alors, une fois le texte rentré, nous effectuons par Ajax la bonne requete YQL, et sommes capables, s’il y a confusion, de proposer des options à sélectionner (fig. 3), ou, si nous avons un résultat unique, de simplement qualifier le texte tapé en une puce signalant la validation du contenu.

- Ensuite, il y a la spécificité d’un site au contenu localisé. Un tel site ne saurait abriter toutes ses différentes version sous un seul et même serveur. Au contraire, le contenu doit être servi au plus près des internautes, ce qui sous entend d’héberger chaque version dans le pays des visiteurs qu’il cible. Cela pose donc entre autres le problème de l’appel aux images, puisque des images sont chargées sur des serveurs distants de 7000 km, et que nous ne souhaitions pas utiliser de technologie de synchronisation des fichiers (même si unison a longuement été étudié), car technologie sujette aux lags, à la consommation frénétique de bande passante (qui n’est pas chère en France mais hors de prix aux Etats Unis), et sous-optimale en terme d’optimisation de l’espace disque.

Nous avons donc développé un système de gestion intelligent des assets, qui est capable de déterminer sur quel serveur du cluster une image a été chargée, et de l’afficher en conséquence, ainsi que de faire une copie permanente des assets sur le service de stockage tiers Amazon S3. Une fois une image répliquée (dans les 10mn de sa validation), c’est le chemin physique le plus court jusqu’au serveur qui est choisi, dans le but d’optimiser la vitesse et les couts.

Le design

Printemps – été 2008: Une fois les documents établis (specs fonctionnelles et techniques, wireframes détaillées, etc.), l’élaboration du design fut assez “simple”. Déja, parce que nous travaillions avec une des meilleures agences de Paris (CubeDesigners), mais aussi parce que nous avions une idée très claire de ce que nous souhaitions, facilitant les allers retours. Ainsi, élaborer une page clé complexe ne prenait pas plus d’une journée, sans que nous n’ayons, jusqu’au dernier jour, besoin d’y retoucher le moindre pixel.

Le défi ergonomique de ce design était de bâtir des listes filtrables, sur un système d’entonnoir. Ainsi, une liste de photo peut être celle d’un artiste, comme C215, mais aussi la liste des photos de Paris, celle de tous les “personnages” apparaissant dans une oeuvre, celle de France, de Californie, etc… C’est là la puissance du site: structurer à l’extrême un contenu par ailleurs désorganisé, rendu simple par une utilisation de repères identiques à travers la visite.

Un bon exemple de ce souci de facilitation du parcours de visite est la page de vue d’une photo. Sur cette page finale (rien après ce niveau de navigation), il convenait de proposer aux visiteurs d’autres contenus reliés. Etant donnés nos multiples niveaux de classification d’une photo, nous avons opté pour un coverflow, grâce auquel on peut continuer sa visite sur des frises, toutes classées selon un des critères clés choisis à travers le site (timeline, artiste, ville, type, style, support).

Le développement

Beaucoup de travail nous attendait chez SeedWeb. Nous avons passé l’été 2008 à concevoir le design, et l’automne fut l’occasion pour notre équipe d’intégrateurs HTML d’intégrer toutes ces maquettes en XHTML selons nos critères très stricts, dans le but d’améliorer le référencement naturel, et en parallèle pour notre équipe de développeurs front, de développer la couche Javascript (avec jQuery), en particulier les interfaces de tagging. Le développement lourd a donc commencé à l’hiver 2008-2009, ce qui concordait avec la sortie de Symfony 1.2, qui intégrait enfin Doctrine comme un ORM de choix, ce qui tombait bien car vue la complexité de certaines requêtes du site et la puissance du DQL, nous aurions difficilement pu nous en passer.

De cette base Symfony, nous avons presque tout étendu: les classes de base bien sûr, le moteur lui même, puisque nous lui avons adjoint la puissance des composants Zend Framework, notamment pour la gestion des services tiers (FatCap est un site ouvert, interfacé avec Twitter, Youtube, Dailymotion, Vimeo, Flickr, etc..), nous avons également étendu les actions de manière à ce qu’elles héritent d’une classe mère par application, qui hérite elle même d’une action commune à l’ensemble du projet, afin de factoriser au maximum le code. Idem pour les composants. Toute notre gestion des images (redimensionnement, intégration à notre système de réplication) est le fruit d’une nouvelle classe de traitement de l’upload des fichiers (qui étend sfValidatedFile), et qui se base sur des fichiers de configuration puissants afin de déterminer la liste des miniatures à effectuer, des emplacements de stockage, etc… L’ensemble des modèles de données est étendu grâce à des templates doctrine, comme par exemple le choix du serveur pour afficher une image, ou encore la réplication S3, le tout en minimisant les requêtes et le temps d’affichage, et en rendant toutes les actions longues asynchrones.

L’ensemble de cette belle machine est surveillée par des milliers de tests fonctionnels et unitaires, et servie par un cluster de serveurs répartis dans le monde, avec des systèmes de réplications de bases de données complets, une utilisation intensive de memcache, et un accent fort mis sur la sécurité. La base de données est constamment “purifiée” par une cinquantaine de démons qui tournent à longueur de journées et de nuits, et qui s’appuient sur un logging statistique étendu pour garder une base de données propre, qualifiée, et à jour (qui sert aussi à produire les différents graphiques sur le site).

En bref, un très long projet, et une belle prouesse technologique pour SeedWeb, qui synthétise l’ensemble de nos champs d’expertise, et qui correspond à notre positionnement ambitieux de s’employer à produire des sites de très haute qualité, facilement extensibles et utilisant un éventail de technologies matures et professionnelles, en utilisant notre expertise en marketing internet et en ergonomie pour maximiser l’expérience utilisateur, et diminuer les couts d’acquisition.

Poste par Cedric Sadai, le 14/04/08 - Technologie

Au lendemain du lancement par Google de App Engine, il est temps de revenir sur un des piliers de l’internet du futur, le cloud computing.

Depuis ses débuts, Internet se compose toujours de la même manière : un site, du trafic, une architecture serveur. Pour imager, on pourrait voir les serveurs comme la bâtisse d’un magasin, les sites comme les boutiques à proprement parler, et le trafic comme les chalands qui se déplacent dans ce centre commercial. Une même bâtisse peut contenir plusieurs boutiques, et plus cette bâtisse est solide et optimisée pour la chalandise (routes, parkings, solidité des fondations, service de sécurité etc..) plus elle est capable de drainer et de contenir de monde.

Il en va de même pour le web. Et c’est précisément là où le bat blesse. Reprenons notre exemple. Après avoir mené une formidable campagne de promotion (sur Internet évidemment), vous voila submergé : des kilomètres d’embouteillages encerclent votre centre commercial, si bien que votre infrastructure est dépassée et ne peut contenir tout cet afflux de visiteurs : vous fermez boutique, en attendant de décongestionner la zone.

Ce genre de problème arrive tous les jours sur Internet. Il est dû à la mauvaise adéquation entre l’architecture serveur et le trafic. Très souvent, les startups tentent d’économiser sur ce poste, en attendant de voir si le trafic augmente. Un beau jour, Michael Arrington leur accorde un article dans TechCrunch. Après les félicitations et la flatterie de rigueur, les créateurs sourient devant leurs courbes de suivi statistique en temps réel… avant de grimacer devant la lenteur soudaine de leur service. Quelques minutes après, la réponse se fait attendre plusieurs minutes, avant d’afficher une erreur 500.

Le Cloud Computing

Cloud Computing

C’est là qu’intervient la petite révolution du cloud computing. Le système est simple, les usines à gaz que sont Amazon et Google possèdent des architectures considérables de plusieurs dizaines de milliers de serveurs. Or, passé un certain stade, ajouter des machines à une architecture déjà existante et très bien structurée coûte très peu d’argent. Amazon s’est donc doté d’un parc additionnel considérable, qu’ils ont virtualisé pour le proposer au grand public. Ainsi est né Amazon EC2 (Elastic Computer Cloud). EC2 est un web service (une API) qui permet d’étendre un serveur facilement et rapidement, pour lui ajouter la puissance et la disponibilité des serveurs d’Amazon. La bande passante, la capacité de stockage, ainsi que la disponibilité sont théoriquement sans limite (dans la réalité, des accidents peuvent arriver). La startup a donc la possibilité, lorsqu’elle voit arriver une charge importante sur son serveur, de créer une image Amazon de leur système et de le dupliquer sur les serveurs distants du libraire Américain. Le trafic recevable est instantanément décuplé et la vitesse de chargement reste intacte pour les nouveaux arrivants.

Il s’agit d’une formidable innovation, qui aide à construire un web « scalable », évolutif et élastique. Une pratique rependue désormais au stockage d’image, avec Amazon S3 ou à la base de données avec SimpleDB. Ceci rend donc théoriquement possible de nouvelles pratiques : avoir un serveur minimal, indispensable pour bâtir son prototype et même lancer son service, et externaliser d’entrée le stockage de son contenu, ainsi que prévoir dès le départ l’addition de serveurs existants en préparant ses images disques prêtes à être lancées.

Un peu comme un supermarché dont la taille du bâtiment serait à même de changer selon l’affluence, permettant ainsi de réduire les couts de structure et de variabiliser des frais que l’on pensait condamnés à rester fixes. Une pratique destinée à se répandre et un marché que n’a pas voulu rater Google en proposant aux développeurs de bâtir leurs applications sur les mêmes serveurs que le célèbre moteur de recherche. La conquête des développeurs étant devenue stratégique pour les géants de l’Internet, on a du mal à croire que Yahoo! et Microsoft ne suivent pas la danse.