Le B-tree de Noël

Un article de saison pour clore cette année : un peu d’algorithmique et notamment le B-tree (de Noël ;ob). Le B-tree (ou arbre équilibré) est un algorithme très utilisé et notamment dans la gestion des bases de données et des systèmes de fichiers. Il permet d’effectuer des opérations sur les données triées qui le composent suivant un temps amorti logarithmique. Ce sujet n’est pas tant pour vous expliquer le fonctionnement d’un B-tree, même si le fonctionnement est intéressant au demeurant, mais pour vous sensibiliser à la connaissance des algorithmes (les grands classiques et leurs dérivés) qu’il est très pratique de comprendre pour optimiser les performances de nos architectures et effectuer les bons choix.

[...]

Tokyo Tyrant / Tokyo Cabinet, un key-value store à la Japonaise

Les bases de données non relationnelles sont mises en avant depuis quelques temps avec un panel important de systèmes de stockage de la forme clé/valeur (key/value store). Cette approche permet d’avoir des structures optimisées pour certains types de fonctionnel et facilement distribuables. Tokyo Cabinet est un de ces outils. C’est un outil de stockage clé/valeur open source sponsorisé et utilisé par Mixi (Facebook japonais). Il a été développé par Mikio Hirabayashi que vous pouvez retrouver ainsi que l’exhaustivité des produits qu’il met à disposition sur Mikio Hirabayashi’s homepage. Tokyo Cabinet est couplé à un autre produit : Tokyo Tyrant. Tokyo Tyrant est en fait l’interface réseau qui permet, entre autre, d’accéder à partir d’un serveur distant à Tokyo Cabinet. Il ne se limite cependant pas à cela et permet un certain nombre de fonctionnalités très intéressantes. Le point fort de ce couple est la rapidité de traitement des requêtes, ainsi que les possibilités de mise en oeuvre.

[...]

Le Cloud et Microsoft Windows Azure

Fin octobre 2008, Microsoft avait annoncé officiellement son offre de Cloud : la plateforme Windows Azure. Initialement prévue pour 2009, la sortie commerciale de Windows Azure a été repoussée à février 2010 et deviendra alors accessible aux entreprises moyennant finance. La plateforme Windows Azure regroupe un ensemble de services disponibles sur le nuage. Ces services sont physiquement hébergés dans les différents datacenters de Microsoft. Pour l’instant il existe deux datacenters aux Etats-Unis, un autre étant prévu prochainement en Europe. Les datacenters hébergeant les services et l’architecture de la plateforme Windows Azure sont conçus pour assurer une haute disponibilité et une forte scalabilité. Microsoft assure que la plateforme peut garantir une disponibilité de service sans interruption car les serveurs sont tous repliqués au moins deux fois. Le transfert vers le serveur de remplacement est automatique si le serveur principal a un problème. Les trois grands services proposés sont : Windows Azure, SQL Azure et .NET Services.

[...]

Les 9 principes de S3

Décidemment, encore un article sur les AWS (Amazon Web Services). Au-delà du fait, que ce sont de bons composants dans le cadre de la mise en place d’une infrastructure, il faut noter qu’ils couvrent un scope complet de ce que l’on peut trouver dans une infrastructure en termes de fonctionnalités (gestionnaire de files de messages -SQS-, base de données non relationnelle -SimpleDB- et relationnelle -RDS- depuis peu, traitement massif de données -MapReduce, bonjour BI ?-, instances virtuelles -EC2-, VPN -VPC-, …), mais également en termes de « background technique ». Je m’explique : prenons l’exemple de S3, qui sera notre sujet d’étude dans cet article d’ailleurs, quoi de plus simple qu’un système de stockage d’objets ? Ca se résume à « PUT », « GET » et « DELETE ». Et pourtant derrière cette apparente simplicité, se cache une complexité technique sous-jacente étonnante, qui reprend bons nombres de concepts « standards », mais que l’on implémente rarement soi-même, parceque complexes à mettre en place. On laisse donc cela aux outils que l’on utilise ou tout simplement on fait l’impasse dessus. Tout cela pour introduire les 9 principes sous-jacents au service S3 d’Amazon qui font de ce service apparemment succint, un bel exemple technique.

[...]

AWS SimpleDB / S3 user case trick

Une petite vidéo intéressante de Werner Vogels de moins de 3 min sur un retour utilisateur (Joshua Baer, co-fondateur et CEO de OtherInbox) sur les AWS (Amazon Web Services) et plus particulièrement l’utilisation qui est faite de SimpleDB et S3. Ce retour montre comment en utilisant différents services de stockage (en l’occurrence SimpleDB et S3) adaptés au type de la donnée à conserver et en se reposant sur l’architecture AWS, on optimise et facilite le développement de son propre service. En résumé, pourquoi refaire ce qui existe déjà.

[...]

Facebook et le graphe social : LAMP et Memcache

Facebook… En voilà une architecture qui fait rêver et qui laisse songeur au vue du volume de connexions simultanées et de données stockées. J’ai récemment regardé une vidéo très intéressante d’une conférence données par Aditya Agarwal (Director of Engineering chez Facebook) durant le QCon SF 2008 (San Fransisco) sur l’architecture de Facebook et plus exactement la couche logicielle utilisée, basée sur le modèle LAMP (Linux, Apache, MySQL, PHP). C’est essentiellement de MySQL et PHP que la conférence traite sur ce modèle. Une belle part est également faite à Memcache. Memcache, cache mémoire réseau qui n’est plus à présenter, et qui a été optimisé par les développeurs de Facebook pour l’occasion. Une brève présentation d’outils « maison » tels que Thrift, Scribe, … est également effectuée en fin de conférence.

[...]

Profiling applicatif et XDebug

Optimiser les performances d’un site doit passer avant tout chose par le profiling applicatif et c’est bien souvent là que l’on peut gagner une bonne partie des temps de réponse et optimiser la charge à moindre coût. Le profiling applicatif constiste à analyser l’exécution du code que l’on a mis en place pour voir les dépendances entre les méthodes/fonctions, le nombre de fois qu’elles sont appelées et surtout le temps que l’on passe dans chacune d’elles. Une fois ces informations extraites, une partie importante du travail est délivrée par les outils de mise en page (frontend) qui vont nous présenter les résultats agrégés de manière plus intelligible et analysable.

[...]

Comprendre l’offre Amazon Web Services en 20 min !

Voilà un webcast qui a pour objectif de vous aider à comprendre l’offre d’Amazon avec ses AWS (Amazon Web Services) et d’en avoir une vision globale. Les AWS proposent un gamme de services riche en fonctionalités, autant au niveau de l’infrastructure (EC2, S3, MapReduce, SimpleDB, SQS, CloudFront) qu’au niveau de besoins sortant de ce scope et plus spécifiques pour certains métiers (FPS, DevPay, Mechanical Turk, AWIS, Alexa Top Sites, FWS), comme la vente en ligne par exemple.

Le Cloud Computing vu par Amazon est promis à un bel avenir. Il s’inscrit en effet dans la démarche en vogue de restructuration des infrastructures et de réduction des coûts. Il rejoint de plus le modèle économique SaaS par ce que l’on pourrait appeler le modèle HaaS (Hardware as a Service). Ce modèle économique s’inscrit dans l’évolution naturelle des architectures vers les SOA (Services Oriented Architecture) et répond aux besoins des consommateurs.

[...]

Puppet et Capistrano : la clé de l’automatisation

Puppet est un produit open source qui permet de gérer à moindre frais une infrastructure importante en centralisant la gestion de la configuration des machines : il permet de maintenir la configuration des différents types de machines d’une infrastructure iso entre elles et de démarrer rapidement une instance en l’associant à un type de nœud Puppet. Il capitalise également les connaissances sur les composants/paramétrages de chaque type de machines via ses descripteurs.

Capistrano est produit open source qui permet d’associer des machines à des rôles (exemple : role :web, « frontal1 », « frontal2 ») et d’exécuter une tâche donnée en parallèle sur toutes les machines d’un ou plusieurs rôles. Il permet également de capitaliser les connaissances sur les différentes tâches de l’infrastructure et les rend reproductibles et centralisées, donc fiables. il se connecte en SSH et donc assure un niveau de sécurité minimum.

[...]

Cacti : un monitoring au fil de l’eau

Ce webcast a pour objectif de vous présenter un outil de monitoring d’infrastructure fort sympathique : Cacti. Cacti est un outil dont la valeur ajoutée est de permettre un suivi d’une infrastructure au sens large au fil de l’eau. Il permet ainsi de détecter les impacts d’une modification de l’architecture, du paramétrage d’un service ou bien de la livraison d’une nouvelle version d’une application.

L’approche open source du produit lui a permis d’obtenir une diversité de templates via la communauté.
Il est possible de créer ses propres templates pour n’importe quel outil à partir du moment où celui-ci est capable de fournir des statistiques. Il est ainsi même possible de mettre en place des graphiques pour suivre le fonctionnel d’une application par exemple (nombre de visites ou de joueurs connectés, nombre de transactions effectuées, …).

[...]