<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Decrypt &#187; Infrastructure</title>
	<atom:link href="http://decrypt.ysance.com/category/infrastructure/feed/" rel="self" type="application/rss+xml" />
	<link>http://decrypt.ysance.com</link>
	<description>Le site de decryptage des technologies de l&#039;informatique</description>
	<lastBuildDate>Thu, 01 Jul 2010 14:41:53 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Scaler une infrastructure AWS 2/2 : le modèle</title>
		<link>http://decrypt.ysance.com/2010/07/scaler-une-infrastructure-aws-2-le-modele/</link>
		<comments>http://decrypt.ysance.com/2010/07/scaler-une-infrastructure-aws-2-le-modele/#comments</comments>
		<pubDate>Thu, 01 Jul 2010 14:41:53 +0000</pubDate>
		<dc:creator>Frédéric Faure</dc:creator>
				<category><![CDATA[Architecture]]></category>
		<category><![CDATA[Cloud Computing]]></category>
		<category><![CDATA[Infrastructure]]></category>
		<category><![CDATA[Scalability]]></category>
		<category><![CDATA[Sharding / Partitionnement]]></category>
		<category><![CDATA[Amazon Web Services]]></category>
		<category><![CDATA[Casual Gaming]]></category>
		<category><![CDATA[LVM]]></category>
		<category><![CDATA[Memcached]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[RAID]]></category>
		<category><![CDATA[REST]]></category>
		<category><![CDATA[Tokyo Cabinet]]></category>
		<category><![CDATA[Tokyo Tyrant]]></category>

		<guid isPermaLink="false">http://decrypt.ysance.com/?p=1304</guid>
		<description><![CDATA[<img class="size-medium wp-image-1411 alignleft" title="Scale-Out in the Matrix" src="http://decrypt.ysance.com/wp-content/uploads/2010/06/MatrixScaleOut-300x123.png" alt="Scale-Out in the Matrix" width="204" height="82" />

Comment scaler une infrastructure <a title="Site de Amazon Web Services" href="http://aws.amazon.com/">AWS</a> (Amazon Web Services) ? Je vais décrire dans cette deuxième partie de l'article le modèle de l'architecture et les composants techniques sous-jacents à adopter afin de mettre en place une infrastructure scalable. Nous aborderons tout particulièrement le sujet de l'optimisation de l'accès aux données dans les architectures de type scale-out propices à la distribution, autant au niveau du modèle de données que des couches basses pour l'optimisation des I/O. Nous verrons également les concepts de développement à privilégier tel que le stateless dans la plus pure tradition REST. Je terminerai par quelques trucs et astuces en fin d'article. Le but est de vous permettre de constituer et d'optimiser votre infrastructure en comprenant le fonctionnement des outils proposés par Amazon pour en tirer le meilleur parti.

[...]]]></description>
			<content:encoded><![CDATA[<p><img class="size-medium wp-image-1411 alignleft" title="Scale-Out in the Matrix" src="http://decrypt.ysance.com/wp-content/uploads/2010/06/MatrixScaleOut-300x123.png" alt="Scale-Out in the Matrix" width="204" height="82" /></p>
<p>Comment scaler une infrastructure <a title="Site de Amazon Web Services" href="http://aws.amazon.com/">AWS</a> (Amazon Web Services) ? Je vais décrire dans cette deuxième partie de l&#8217;article le modèle de l&#8217;architecture et les composants techniques sous-jacents à adopter afin de mettre en place une infrastructure scalable. Nous aborderons tout particulièrement le sujet de l&#8217;optimisation de l&#8217;accès aux données dans les architectures de type scale-out propices à la distribution, autant au niveau du modèle de données que des couches basses pour l&#8217;optimisation des I/O. Nous verrons également les concepts de développement à privilégier tel que le stateless dans la plus pure tradition REST. Je terminerai par quelques trucs et astuces en fin d&#8217;article. Le but est de vous permettre de constituer et d&#8217;optimiser votre infrastructure en comprenant le fonctionnement des outils proposés par Amazon pour en tirer le meilleur parti.</p>
<p><strong><em>Le scale-out</em></strong><br />
<img class="size-full wp-image-1424 alignright" title="Scale-Up in Ghost Buster" src="http://decrypt.ysance.com/wp-content/uploads/2010/06/GhostBusterScaleUp.jpg" alt="Scale-Up in Ghost Buster" width="116" height="170" />Le scale-out est à opposer au scale-up : ce dernier correspond à l&#8217;augmentation dynamique des ressources d&#8217;un serveur donné (ajout de RAM ou de CPU) à la volée. Ainsi l&#8217;application continue à s&#8217;exécuter sur une même machine dont le potentiel à augmenté. Le scale-out, lui, pour répondre à la montée en charge d&#8217;une application propose d&#8217;augmenter le nombre de serveurs. Au final, le potentiel global de l&#8217;infrastructure augmente aussi, mais est réparti entre plusieurs serveurs. Cela implique que l&#8217;application supportée sur le serveur ait été pensée en termes de distribution, c&#8217;est à dire qu&#8217;elle puisse s&#8217;exécuter en parallèle sur plusieurs serveurs sans que cela n&#8217;en corrompe la logique métier ou ne pose des problèmes d&#8217;accès aux ressources (qui doivent alors être disponibles via le réseau et non en local sur un serveur donné par exemple).</p>
<p>Le scale-out, c&#8217;est un peu l&#8217;agent Smith de Matrix. Pour le scale-up, pensez plutôt au gentil bibendum de Ghost Buster !</p>
<p><em><strong>Stateless</strong></em><br />
Le meilleur moyen d&#8217;obtenir une application facilement distribuable et performante est de la penser en mode stateless. C&#8217;est à dire que c&#8217;est la requête du client qui doit contenir l&#8217;ensemble des informations qui vont permettre le traitement de ladite requête côté serveur, soit via un cookie ou bien via les paramètres de l&#8217;URL. Quand cela est possible il faut privilégier cette approche à tout prix par rapport au mode statefull dans lequel la partie serveur doit maintenir un contexte pour chaque client afin de pouvoir résoudre sa requête. La conception stateless fait parti des grands concepts du REST. A ce sujet, je ne peux que vous conseiller de lire cet <a title="REST, un style d'architecture universel" href="http://www.figer.com/publications/REST.htm">excellent article sur REST</a> de Jean-Paul Figer dans lequel vous pourrez comprendre toute la simplicité et la puissance du style.</p>
<p>Si vous êtes obligés de gérer du statefull, il vous faudra utiliser un cache réseau, tel que <a title="Site de Memcached" href="http://memcached.org/">Memcached</a>, pour partager les contextes entre vos différents serveurs. N&#8217;envisagez pas la formule cache local et sticky session, car vous aurez du mal à bénéficier d&#8217;une répartition fluide au niveau de votre load balancing. N&#8217;envisagez pas non plus un cluster qui communique en multicast car le réseau Amazon ne permet pas d&#8217;en faire&#8230; Ou bien alors il faudrait que tous les serveurs communiquent en unicast avec une gateway qui s&#8217;occupe de la redistribution des communications&#8230; Vous êtes sûr que vous ne préférez pas du stateless ? ;ob</p>
<p>La mise en place d&#8217;applications stateless n&#8217;est pas arrivée avec le Cloud Computing et les AWS, en revanche ne pas penser dans ce sens, vous empêcherait de bénéficier de tout le dynamisme et la souplesse proposés par ces services.</p>
<p><em><strong>Optimisation de l&#8217;accès aux données</strong></em><br />
L&#8217;optimisation de l&#8217;accès aux données passe par 2 éléments :</p>
<ul>
<li>Le modèle de données et l&#8217;architecture logicielle que l&#8217;on retrouve  dans les architectures scalables, que l&#8217;on soit sur une infrastructure  AWS ou non.</li>
<li>La gestion des I/O que l&#8217;on peut optimiser, notamment via une utilisation approfondie des AWS.</li>
</ul>
<p><em><span style="text-decoration: underline;">Le modèle scalable</span></em><br />
Cela pourrait faire l&#8217;objet d&#8217;un article à part entière, mais correspond  à un modèle assez classique au sein des applications de type casual  gaming ou bien plus généralement liées à des applications basées sur les  graphes sociaux ou bien centrées sur une notion métier forte en particulier.</p>
<p>Pour résumer, 2 méthodes de stockage de données :</p>
<ul>
<li>Un stockage de ce que l&#8217;on peut appeler le méta-modèle, qui n&#8217;a pas  vocation à être distribué, basé sur une base relationnelle (même si  essentiellement utilisée sous forme d&#8217;accès clé-valeur) structurée,  indexée, contenant les informations générales de chaque utilisateur  (dans la cas d&#8217;une application sociale, avec les informations <em>nom</em>, <em>top score</em>, <em>gains de la veille</em>, &#8230;), essentiellement accédées en  lecture et dont il est possible d&#8217;alléger la charge via un Memcached en  frontal. Il est donc possible d&#8217;effectuer des requêtes ensemblistes de type SQL et ainsi de récupérer des informations via l&#8217;utilisation de clauses (<em>WHERE</em>). Cette base peut être un MySQL ou un PgSQL par exemple. Je vous invite à lire ce <a title="Dotdeb, MySQL et Amazon : RDS vs EC2" href="http://www.dotdeb.org/2010/05/04/mysql-on-amazon-benchmarks-rds-vs-ec2/">comparatif très intéressant</a> de Guillaume Plessis entre l&#8217;utilisation de MySQL installé sur un <a title="Site de Amazon Web Services, Rubrique EC2" href="http://aws.amazon.com/ec2/">EC2</a> et l&#8217;utilisation du service <a title="Site de Amazon Web Services, Rubrique RDS" href="http://aws.amazon.com/rds/">RDS</a> (Relational Database Service) d&#8217;Amazon. Je ne trahirai en rien le suspens en vous disant que la base de données c&#8217;est une histoire de barbus ! :o)</li>
<li>Un stockage pour les données plus volatiles (comme les données de jeu, &#8230;), avec un fort rapport  écriture/lecture, difficilement cachables, et pour lesquelles il faut  opter pour une réelle solution de stockage structurée non relationnelle  de type clé-valeur (NoSQL / Not only SQL diront certains), permettant  ainsi de distribuer facilement les données sur X serveurs. On peut citer un nombre  certain de candidats : <a title="Site de Redis" href="http://code.google.com/p/redis/">Redis</a>, <a title="Site de Tokyo Tyrant" href="http://1978th.net/tokyotyrant/">Tokyo Tyrant</a>/<a title="Site de Tokyo Cabinet" href="http://1978th.net/tokyocabinet/">Tokyo Cabinet</a>, <a title="Site de MemcacheDB" href="http://memcachedb.org/">MemcacheDB</a>, &#8230; Et également les nouveaux modèles peer to peer tels que <a title="Site de Cassandra" href="http://cassandra.apache.org/">Cassandra</a>, &#8230;</li>
</ul>
<div id="attachment_1353" class="wp-caption alignright" style="width: 291px"><img class="size-full wp-image-1353" title="Tokyo Cabinet" src="http://decrypt.ysance.com/wp-content/uploads/2010/06/TokyoCabinet.png" alt="Tokyo Cabinet" width="281" height="183" /><p class="wp-caption-text">Tokyo Cabinet</p></div>
<p>En l&#8217;occurrence, Tokyo Tyrant / Tokyo Cabinet est une solution que j&#8217;ai mise en place et qui me semble bonne. C&#8217;est un couple gérant respectivement les requêtes à partir de  serveurs distants (interface réseau) et les accès au système de  stockage. 6 APIs sont disponibles afin de stocker les données :</p>
<ol>
<li> On memory Hash,</li>
<li>On memory B+tree,</li>
<li>File Hash,</li>
<li>File B+tree,</li>
<li>Fixed-length Array,</li>
<li>Table.</li>
</ol>
<p>Chacune d’entre elles a ses propres spécificités et répond à des  besoins particuliers en termes de performances et de fonctionnalités.</p>
<p>Au niveau performances, outre ses performances naturelles, il a  l&#8217;avantage, notamment, de ne pas gérer l&#8217;authentification (standard chez les  systèmes de stockage clé-valeur, la sécurité est censée être assurée au niveau réseau pour les accès au système de stockage et au niveau applicatif pour les accès à la donnée &#8211; pour ne récupérer que ce qui vous concerne), ce qui allège le nombre d&#8217;accès (pas besoin de  requêtes d&#8217;authentification) par rapport à une base de données classique.  De plus, pas de gestion d&#8217;index lourds à reconstruire (possible  cependant sur l&#8217;API &laquo;&nbsp;Table&nbsp;&raquo; de la Tokyo Team), &#8230; Est-il nécessaire de préciser que ce  qui vous prendra du temps sur l’accès à la donnée via le réseau (entre  le serveur web ou applicatif et Tokyo Tyrant) c’est… Le réseau ! Donc  dans tous les cas, préférez l’utilisation au niveau client (API) de  « mget » (multi get), par exemple, en positionnant en paramètre le  tableau de clés que vous souhaitez récupérer, plutôt que d’effectuer N  fois un « get » à partir du client, donc N accès réseau. « mget » se  résoudra, lui, au niveau de Tokyo Tyrant.</p>
<p>Ces raisonnements appliqués sur cet outil doivent être appliqués à tout stockage de type clé-valeur.</p>
<p><span style="text-decoration: underline;"><em>La gestion des I/O</em></span><br />
Venons-en à la spécificité des AWS en termes de stockage : les <a title="Site de Amazon Web Services, Rubrique EBS" href="http://aws.amazon.com/ebs/">EBS</a> (Elastic Block Store). Les EBS sont des disques réseau optimisés en I/O, faciles à  manipuler, permettant d&#8217;assurer la durabilité des données qui ne doivent  pas être perdues lors de l&#8217;arrêt d&#8217;un EC2 (volatile). J&#8217;ai cependant  constaté de manière empirique des écarts de latence : pas énormes, mais  sur une application réellement sollicitée, il y a un ressenti.  Ce n&#8217;est pas rédhibitoire, il faut juste en tenir compte. Si le Load  Average de vos serveurs augmente, ce n&#8217;est pas forcément le CPU en  cause&#8230; Pensez I/O ! ;ob</p>
<p>Tout d&#8217;abord penser striping, donc RAID0. Pas besoin de mirroring (RAID1), la  durabilité des EBS est déjà assurée par Amazon, de manière transparente, par réplication réseau :  tirons parti de ce service et concentrons nous sur le striping. Pensez  également à répartir les écritures des différents fichiers physiques  (données, updates logs, …) sur différents disques (dans le cas d&#8217;outils  utilisant des update logs, et c&#8217;est le cas pour MySQL et Tokyo Tyrant  par exemple, pensez à bien paramétrer leur taille). C&#8217;est ce qui permet  d&#8217;avoir les meilleures optimisations. Ensuite, choisissez bien votre  système de fichier par rapport à votre outil (EXT3, XFS, …) et pensez  aux options de montage (noatime, nodiratime, &#8230;). Finalement vérifiez  bien le scheduler/ordonnanceur par défaut sur les instances EC2 que vous  démarrez : par défaut, il s&#8217;agit de l&#8217;ordonnanceur NOOP (requêtes I/O  dans une simple file FIFO). Envisagez quelque chose de plus performant  comme CFQ (Completely Fair Queuing) par exemple&#8230; Enfin je dis ça, mais cela dépend toujours de la couche logiciel au-dessus et si et comment elle gère les priorités : <a title="MySQL Performance Blog, Linux schedulers in tpcc like benchmark" href="http://www.mysqlperformanceblog.com/2009/01/30/linux-schedulers-in-tpcc-like-benchmark/">dans cet exemple</a> (qui n&#8217;est pas sur EBS) sur MySQL Performance Blog, il apparaît que les ordonnanceurs NOOP et DEADLINE peuvent être de meilleure facture pour améliorer les I/O InnoDB. Comme quoi, il faut quand même mieux tester dans son propre cas ! ;ob</p>
<div id="attachment_1177" class="wp-caption alignleft" style="width: 310px"><img class="size-medium wp-image-1177" title="Logical Volume Management" src="http://decrypt.ysance.com/wp-content/uploads/2010/06/Archi_LVM-300x280.png" alt="Logical Volume Management" width="300" height="280" /><p class="wp-caption-text">Logical Volume Management</p></div>
<p>Un autre outil que j&#8217;ai utilisé avec les EBS et qui fonctionne très  bien est LVM2 (Logical Volume Management, version 2). Je ne l&#8217;ai pas  utilisé dans le cadre d&#8217;une architecture avec un nombre élevé d&#8217;IOPS (I/O operations Per Second) et n&#8217;ai donc pas  testé les possibilités de striping (RAID0) offertes par l&#8217;outil. En revanche, je l&#8217;ai utilisé dans  le cadre d&#8217;une infrastructure nécessitant de pouvoir supporter des  augmentations conséquentes du volume de données et ceci sans  interruption de service. L&#8217;opération de snapshot d&#8217;un EBS et de  recréation du volume est trop longue. LVM est la solution, puisque cette couche d&#8217;abstraction permet de gérer des volumes logiques de manière indépendante  des ressources physiques : il suffit de lever une nouvelle ressource EBS  (une ligne de commande), de l&#8217;associer à l&#8217;instance EC2 (une autre  ligne de commande) et d&#8217;ajouter cette ressource au pool de ressources  LVM. Il suffit alors d&#8217;agrandir le volume logique (toujours transparent et sans arrêt du service), puis  d&#8217;étendre le système de fichiers. C&#8217;est la dernière  opération (qui est commune avec celle de la recréation du volume EBS) qui peut nécessiter d&#8217;arrêter le service quelques instants (une dizaine de secondes). A noter qu&#8217;il est possible d&#8217;étendre son système de fichiers à chaud avec EXT3, personnellement, je préfère une interruption de service de quelques secondes sur ce genre d&#8217;opérations très courtes mais cruciales. ;ob En  prime, il est facile de d&#8217;effectuer des backups sur un système LVM qui  propose une option de snapshot différentiel que l&#8217;on peut monter comme  un volume logique indépendant : lorsqu&#8217;il y a une modification sur le  volume origine, la valeur initiale est copiée dans le volume snapshoté,  donc on peut snapshoter des volumes importants sur un espace réduit car  seule la fréquence de modification est importante. Vous pourrez trouver de plus amples informations sur LVM2 et EBS en consultant ce <a title="Decrypt, EBS et LVM2 ou comment optimiser l’élasticité des AWS" href="http://decrypt.ysance.com/2010/06/ebs-et-lvm2-ou-comment-optimiser-elasticite-des-aws/">très bon article</a> de Laurent Roux.</p>
<p>Tous ces exemples, pour montrer que les EBS sont une ressource très  intéressante : il faut les considérer tout d&#8217;abord comme un moyen d&#8217;assurer la durabilité des ressources importantes avant de considérer l&#8217;aspect performance. En effet, la performance n&#8217;est pas forcément meilleure sur un EBS que sur les disques locaux d&#8217;une instance EC2 (Cf. <a title="Ma petite présentation au Amazon web service french user group 2010" href="http://www.karlesnine.com/post/2010/05/07/Amazon-web-service-french-user-group-2010">un test simple et intéressant</a> de Charles-Christian Croix ou bien encore des tests un peu plus complexes que vous pourrez retrouver en tapant <em>&laquo;&nbsp;performance ephemeral disk ebs volume raid&nbsp;&raquo;</em> dans Goggle, il y en a un certain nombre de très intéressants et je dois avouer que j&#8217;ai du mal à faire mon choix ;ob). Cependant, quand on prend le parti d&#8217;assurer la durabilité de ses données et donc d&#8217;utiliser un EBS (qui, pour ceux qui connaissent, est comparable à un LUN sur un SAN), il y a divers moyens d&#8217;optimiser leur performance.</p>
<p>Il est à noter que les utiliser pour répartir les fichiers (et donc les I/O) sur plusieurs disques EBS peut être une solution de performance pure.</p>
<p>A noter tout de même que la bande passante de l&#8217;EC2 est forcément limitant arrivée à un certain seuil : ajouter des EBS est intéressant pour lisser les écarts de variance (en RAID0) ou bien pour optimiser le débit, mais il n&#8217;en reste pas moins que si vous ajoutez plusieurs EBS à votre instance EC2 et qu&#8217;ils sont tous sollicités fortement&#8230; C&#8217;est la bande passante de l&#8217;EC2 qui bloque. Il va falloir ajouter un nouvel EC2 (scale-out pour augmenter les ressources, en l&#8217;occurrence la bande passante), lui attacher de nouveaux EBS (n&#8217;oubliez pas qu&#8217;un EBS ne peut être attaché qu&#8217;à un et un seul EC2) et distribuer la donnée dessus (sharding).</p>
<p>Dans tous les cas, la manipulation des EBS est aisée et cette souplesse est un  atout.</p>
<p><em><strong>Tips &amp; tricks</strong></em><br />
Cette dernière partie regroupe quelques trucs et astuces.</p>
<p><em><span style="text-decoration: underline;">Alias &amp; IPs</span></em><br />
Pensez sur une infrastructure AWS à positionner des alias  correspondant aux IPs privées de vos instances dans le fichier des &laquo;&nbsp;hosts&nbsp;&raquo;, que vous pouvez déployer ensuite via <a title="Site de Puppet" href="http://www.puppetlabs.com/">Puppet</a> pour plus de réactivité vu que les IPs sont &laquo;&nbsp;variables&nbsp;&raquo; (lorsque vous arrêtez une instance et que vous en redémarrez une juste après, vous ne conservez pas la même IP). L&#8217;utilisation du  fichier &laquo;&nbsp;hosts&nbsp;&raquo; évite des résolutions DNS internes chez Amazon.</p>
<p><em><span style="text-decoration: underline;">CDN &amp; S3 Headers</span></em><br />
Pour les CDN (Content Delivery Network) que vous utilisez  obligatoirement dans une architecture scalable, pensez à utiliser S3 afin  de mettre à disposition les images et autres contenus statiques.  Inutile de maintenir un serveur Web à cette seule fin, S3 est là pour ça  pour un coût minime.</p>
<p>Pensez également dans certains cas où votre trafic est plus modéré et que vous ne souhaitez pas passez sur un CDN (pour des questions de coût par exemple ;ob), que vous pouvez toujours optimiser la gestion de vos ressources sur S3 en utilisant les méta-données attribuées aux dites ressources sur S3, en positionnant, par exemple, les headers de type <em>Cache-Control</em> ou <em>Expires</em>. Vous pouvez visualiser ces méta-données via le nouvel <a title="Site de Amazon Web Services, Console AWS, Onglet S3" href="https://console.aws.amazon.com/s3/home">onglet S3</a> de la console d&#8217;administration Amazon.</p>
<p><span style="text-decoration: underline;"><em>Backups&#8230;</em><em> What else ?</em></span><br />
S3 est également la solution pour les backups. Je n&#8217;ai pas trouvé  d&#8217;outils intégré satisfaisant pour cette tâche : j&#8217;utilise simplement un  outil en ligne de commande &laquo;&nbsp;<a title="Site de s3tools, s3cmd" href="http://s3tools.org/s3cmd">s3cmd</a>&nbsp;&raquo; afin de stocker mes backups. J&#8217;ai intégré cet  outil dans des tâches <a title="Site de Capistrano" href="http://www.capify.org/">Capistrano</a> appelées par cron. Très  simple d’utilisation, s3cmd permet de consommer les services de S3 et offre la  possibilité de transférer les données en HTTPS et également de les  stocker sous un format crypté.</p>
<p><em><strong>Conclusion</strong></em><br />
Il y aurait encore beaucoup de choses à dire sur ce sujet, mais ce  sont à mon avis les principales, en tout cas par rapport à l&#8217;utilisation des services mis à disposition par les AWS. Ce qu&#8217;il en ressort, c&#8217;est :</p>
<ul>
<li>Le stateless et REST de manière générale, sont d&#8217;autant plus adaptés aux AWS qu&#8217;ils permettent de distribuer aisément la charge sur une infrastructure s&#8217;adaptant à la montée en charge sur un modèle scale-out.</li>
<li>L&#8217;accès aux données est toujours le goulet d&#8217;étranglement des applications distribuées devant scaler. Il s&#8217;agit de travailler à ce niveau le modèle de données et de tirer parti des systèmes de stockage adéquates :
<ul>
<li>Technologies SQL pour les méta-données pouvant nécessiter du requêtage ensembliste et de la mise en  relation, tout en utilisant au maximum un cache réseau pour les informations avec un fort ratio lecture sur écriture.</li>
<li>Technologies NoSQL / Not only SQL / clé-valeur pour les informations pouvant être accédées par une clé unique, et ainsi bénéficier de la distribution inhérente au scale-out.</li>
</ul>
</li>
<li>Penser finalement aux couches basses en sélectionnant convenablement le système de fichiers et l&#8217;ordonnanceur. Pensez également RAID (striping) et LVM (extension de volume et snapshot différentiel) pour tirer parti de la souplesse d&#8217;utilisation des EBS et répartition des I/O sur différents devices (en prenant toujours garde à votre bande passante, au niveau EC2, qui peut devenir limitant : dans ce cas ajouter une ou plusieurs instances EC2 pour gagner en bande passante et distribuer &#8211; sharder &#8211; la donnée sur de nouveaux EBS).</li>
</ul>
<p>J&#8217;espère que ce deuxième volet de mon retour d&#8217;expérience sur la scalabilité des infrastructures AWS vous aura intéressé.</p>
<p><em><strong>Frédéric FAURE</strong></em> <a title="Frédéric FAURE @Twitter" href="http://twitter.com/fredericfaure">@Twitter</a> <a title="Ysance, Simplifions les projets informatiques" href="http://www.ysance.com/">@Ysance</a></p>
]]></content:encoded>
			<wfw:commentRss>http://decrypt.ysance.com/2010/07/scaler-une-infrastructure-aws-2-le-modele/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Scaler une infrastructure AWS 1/2 : les outils</title>
		<link>http://decrypt.ysance.com/2010/06/scaler-une-infrastructure-aws-1-les-outils/</link>
		<comments>http://decrypt.ysance.com/2010/06/scaler-une-infrastructure-aws-1-les-outils/#comments</comments>
		<pubDate>Fri, 25 Jun 2010 15:03:56 +0000</pubDate>
		<dc:creator>Frédéric Faure</dc:creator>
				<category><![CDATA[Architecture]]></category>
		<category><![CDATA[Automatisation]]></category>
		<category><![CDATA[Cloud Computing]]></category>
		<category><![CDATA[Infrastructure]]></category>
		<category><![CDATA[Monitoring]]></category>
		<category><![CDATA[Scalability]]></category>
		<category><![CDATA[Amazon Web Services]]></category>
		<category><![CDATA[Capistrano]]></category>
		<category><![CDATA[Métrologie]]></category>
		<category><![CDATA[Puppet]]></category>
		<category><![CDATA[Supervision]]></category>
		<category><![CDATA[Syslog-NG]]></category>
		<category><![CDATA[Webistrano]]></category>

		<guid isPermaLink="false">http://decrypt.ysance.com/?p=1056</guid>
		<description><![CDATA[<img class="size-full wp-image-510 alignleft" title="Logo AWS" src="http://decrypt.ysance.com/wp-content/uploads/2009/08/logo_aws.gif" alt="Logo AWS" width="164" height="60" />

Comment scaler une infrastructure <a title="Site de Amazon Web Services" href="http://aws.amazon.com/">AWS</a> (Amazon Web Services) ? C'est une réponse détaillée que va apporter cet article en 2 parties : les outils à utiliser pour tirer parti du dynamisme des services Amazon et le modèle d'architecture à adopter pour une infrastructure scalable. Je me base sur mes expériences tirées de plusieurs projets de production sur les AWS, à la fois dans le domaine du casual gaming (sur Facebook), dans celui des infrastructures e-commerce ou bien encore dans le cadre du SIG (Système d'Information Géographique) grand public. Il est vrai que l'expérience dans le domaine du jeu est celle qui est actuellement la plus représentative en termes de scalabilité, du fait du nombre d'utilisateurs (&#62; 800K DAU - Daily Active User - et plus de 20M de pages vues par jour), cependant les expériences dans le e-commerce et le SIG (expérience en cours :o)) offrent également une autre vision de la scalabilité, prenant en compte des problématiques différentes de disponibilité et de gestion des données. Je vais donc tenter de brosser un tableau exhaustif des éléments à prendre en compte afin d'optimiser le dynamisme d'une infrastructure montée dans un environnement de Cloud Computing et en l'occurrence dans celui des AWS.

[...]]]></description>
			<content:encoded><![CDATA[<p><img class="size-full wp-image-510 alignleft" title="Logo AWS" src="http://decrypt.ysance.com/wp-content/uploads/2009/08/logo_aws.gif" alt="Logo AWS" width="164" height="60" /></p>
<p>Comment scaler une infrastructure <a title="Site de Amazon Web Services" href="http://aws.amazon.com/">AWS</a> (Amazon Web Services) ? C&#8217;est une réponse détaillée que va apporter cet article en 2 parties : les outils à utiliser pour tirer parti du dynamisme des services Amazon et le modèle d&#8217;architecture à adopter pour une infrastructure scalable. Je me base sur mes expériences tirées de plusieurs projets de production sur les AWS, à la fois dans le domaine du casual gaming (sur Facebook), dans celui des infrastructures e-commerce ou bien encore dans le cadre du SIG (Système d&#8217;Information Géographique) grand public. Il est vrai que l&#8217;expérience dans le domaine du jeu est celle qui est actuellement la plus représentative en termes de scalabilité, du fait du nombre d&#8217;utilisateurs (&gt; 800K DAU &#8211; Daily Active User &#8211; et plus de 20M de pages vues par jour), cependant les expériences dans le e-commerce et le SIG (expérience en cours :o)) offrent également une autre vision de la scalabilité, prenant en compte des problématiques différentes de disponibilité et de gestion des données. Je vais donc tenter de brosser un tableau exhaustif des éléments à prendre en compte afin d&#8217;optimiser le dynamisme d&#8217;une infrastructure montée dans un environnement de Cloud Computing et en l&#8217;occurrence dans celui des AWS.</p>
<p><em><strong>Les outils</strong></em><br />
Je propose des exemples d&#8217;outils que j&#8217;ai utilisés dans mes différentes expériences de production et qui m&#8217;ont convaincu par leur efficacité. Cependant, ce n&#8217;est pas tant l&#8217;outil qui est mis en valeur que la  fonctionnalité sous-jacente qu&#8217;il va falloir implémenter pour tirer parti au mieux des AWS.</p>
<p><strong><em>Différence entre une infra AWS et une infra standard</em></strong><br />
Il y a 2 éléments de réponse :</p>
<ul>
<li> Tout d&#8217;abord, les AWS permettent de manipuler les composants  Hardware et d&#8217;Infrastructure via la code (en passant par des APIs), cela  permet un dynamisme qu&#8217;il va falloir exacerber en sélectionnant  convenablement ses outils. Amazon propose de plus un certain nombre de  garanties techniques sur leurs services, il conviendra d&#8217;en tirer parti  afin de se concentrer sur l&#8217;essentiel.</li>
<li> Ensuite, une seconde partie de la réponse devrait être : « aucune !  ». Cependant, force est de constater que bien souvent le côté plus  douillet de l’infrastructure hébergée « à la maison » pousse à une  certaine forme de laxisme sur un certain nombre de points. Le fait que  Amazon, avec ses AWS, propose une solution volatile, au niveau des EC2  notamment, oblige à mettre en place des mécanismes qui devraient être  standards.</li>
</ul>
<p><strong><em>Gestion de configuration centralisée<br />
</em></strong>La possibilité d&#8217;instancier de multiple serveurs (EC2) à la volée pour répondre à un pic de charge ou des traitements ponctuels, nous oblige à utiliser un outil de gestion de configuration centralisée. L’utilité est multiple :</p>
<ul>
<li>Instancier rapidement une machine correspondant à un type prédéfini : serveur Web, serveur de cache, …</li>
<li>Assurer l’homogénéité de la configuration de l&#8217;ensemble des instances d’un même type à tout instant.</li>
<li>Capitaliser un savoir faire : les packages, configurations, services, &#8230; de chaque type d&#8217;instance est contenu dans un descripteur. Cela permet aux nouveaux venus (et aux autres) de connaitre la composition des serveurs sur la simple lecture du ou des descripteurs associés.</li>
</ul>
<p><img class="size-full wp-image-890 alignright" title="Logo Puppet - Reductive Labs" src="http://decrypt.ysance.com/wp-content/uploads/2010/02/puppet-short.png" alt="Logo Puppet - Reductive Labs" width="151" height="44" /></p>
<p><a title="Site de Puppet" href="http://reductivelabs.com/">Puppet</a> est une solution très intéressante pour cette tâche. L&#8217;architecture Puppet est constituée de:</p>
<ul>
<li>Un Puppet Master, gardien des configurations, il contient les descripteurs des packages à installer, fichiers de configuration à déposer et services à démarrer pour une nouvelle instance EC2 afin de la préparer suivant le type du ou des nœuds auxquels on l’a associée ou tout simplement pour maintenir à jour une instance existante.</li>
<li>De multiples clients Puppet installés sur les instances EC2. Régulièrement, le client pull le master afin de vérifier que sa configuration est à jour. Il est également possible de faire du push sur les clients à partir du master pour déclencher une mise à jour urgente.</li>
</ul>
<p>Il est ainsi très simple de monter une nouvelle instance d’un type donné et d’être sûr que, d’un serveur à un autre, la configuration est complètement identique. Il est à noter que les descripteurs du Puppet Master fonctionnent sur un système de nœuds et un serveur peut faire référence à plusieurs nœuds. On obtient donc une configuration très modulaire.</p>
<div id="attachment_1310" class="wp-caption alignleft" style="width: 306px"><img class="size-medium wp-image-1310 " title="Descripteur Module Puppet" src="http://decrypt.ysance.com/wp-content/uploads/2010/06/puppet_type_node_def-296x300.png" alt="Descripteur Module Puppet" width="296" height="300" /><p class="wp-caption-text">Descripteur Module Puppet</p></div>
<p>Le gestionnaire de configuration centralisée est indispensable sur une infrastructure scalable qui est amenée à avoir un grand nombre d&#8217;instances dont certaines devront être montées rapidement afin de répondre aux sollicitations des utilisateurs lors des pics de charge.</p>
<p>« Mais… », me direz-vous, « il faut bien installer le client sur la nouvelle machine ? ». Et oui, d’autant plus qu’il y a un système de requête/acceptation de certificat entre le client et le master afin que n’importe qui ne puisse accéder aux configurations. « Très simple ! », vous répondrais-je, au lieu d’utiliser une IHM, comme Elastic Fox, afin de se connecter aux APIs des services Amazon, il suffit de s’y connecter en lignes de commande via un script qui instancie un EC2, éventuellement crée un volume EBS et l’associe, se connecte en SSH sur la nouvelle machine et installe le client, se connecte sur le master et accepte la requête de certificat, redémarre le client et « hop ! ». L&#8217;instance s&#8217;installe et se configure toute seule. Les possibilités de réactivité et de dynamisme inhérentes aux EC2 et aux AWS de manière générale nous impose cela, sinon ce serait sous exploiter l’outil, voire le més-exploiter.</p>
<p>Et les AMIs (instance-store root devices) ou les EBS root devices (à noter que pour ces dernier, il n&#8217;y a pas encore beaucoup de choix en termes de templates) ? Il est cependant possible de se constituer une AMI ou bien un EBS root device avec le client Puppet installé dessus (et d&#8217;utiliser éventuellement les user-data au lancement de l&#8217;instance afin de le paramétrer si une configuration &laquo;&nbsp;statique&nbsp;&raquo; sur l&#8217;AMI n&#8217;est pas suffisante). Cependant, dans un environnement de production, l&#8217;AMI ou l&#8217;EBS root device ne permettent pas de remplacer un Puppet : si il faut modifier l’AMI à chaque modification de paramétrage et redéployer les EC2… On n’a pas fini. L’AMI est un bon outil pour instancier un template de base (au sens basique), pas pour conserver une infrastructure de production en bon ordre de fonctionnement.</p>
<p>Pour conclure, il est même possible d&#8217;envisager une auto-scalabilité (plus complète que celle proposée par le service <a title="Site de Amazon Web Services, Rubrique Auto Scaling" href="http://aws.amazon.com/autoscaling/">Auto Scaling</a> d&#8217;Amazon basé sur <a title="Site de Amazon Web Services, Rubrique Amazon CloudWatch" href="http://aws.amazon.com/cloudwatch/">CloudWatch</a>) qui reviendrait à déclencher ce script sur le dépassement d’une valeur d’un graphe de monitoring (métrologie), instanciant donc une nouvelle machine pour supporter la période de pic, instance qui serait « terminée » suite au passage en dessous d&#8217;un autre seuil sur ledit graphe. Les possibilités sont énormes. Cependant, le coût des derniers éléments à mettre en place sur une infrastructure importante de production pour accéder à l&#8217;auto-scalabilité est conséquent (complexité exponentielle). Si on a l&#8217;opportunité, c&#8217;est un bel ouvrage, sinon se &laquo;&nbsp;contenter&nbsp;&raquo; d&#8217;une solution aisément scalable où il suffit de lancer un script manuellement (ou bien à heure fixe basé sur l&#8217;étude des métriques remontés par la métrologie, ce qui est une bonne alternative) et éventuellement d&#8217;ajouter manuellement une ou deux références dans un fichier est une alternative tout à fait respectable.</p>
<p><strong><em>Exécution de tâches automatisées en parallèle<br />
</em></strong>Du fait de la variation du nombre d’instances en fonction de la charge d&#8217;une infrastructure scalable et surtout du nombre potentiellement important desdites instances, il n’est pas envisageable d’effectuer les opérations de maintenance et de déploiement unitairement sur chaque machine (et encore pire à la main !), ce qui non seulement serait chronophage, mais de surcroît source d’erreurs. Il est alors indispensable d’utiliser des outils spécialisés dans l’automatisation et l’exécution parallèle de tâches, tel que <a title="Site de Capistrano" href="http://www.capify.org/">Capistrano</a>, dont les bénéfices sont multiples :</p>
<ul>
<li>Scripter un certain nombre de tâches, complexes ou non, (livraisons, backups, publication/maintenance du site, …) et de les exécuter rapidement en parallèle sur X machines en une seule commande.</li>
<li>Assurer la reproductibilité d’une tâche.</li>
<li>Capitaliser un savoir faire (Cf. Puppet).</li>
</ul>
<div id="attachment_1311" class="wp-caption alignnone" style="width: 654px"><img class="size-full wp-image-1311" title="Descripteur Tache Capistrano" src="http://decrypt.ysance.com/wp-content/uploads/2010/06/cap_task.png" alt="Descripteur Tache Capistrano" width="644" height="46" /><p class="wp-caption-text">Descripteur Tache Capistrano</p></div>
<p><img class="size-medium wp-image-429 alignright" title="Logo Capistrano" src="http://decrypt.ysance.com/wp-content/uploads/2009/07/capistrano-logo-big-300x114.png" alt="Logo Capistrano" width="300" height="114" /></p>
<p>Cet outil est très simple d’utilisation et très pratique. Il exécute des tâches en parallèle (en se connectant en SSH &#8211; n&#8217;utilisez pas la clé &laquo;&nbsp;root&nbsp;&raquo; de vos instances EC2 dans l&#8217;outil, mais une autre dédiée, c&#8217;est plus classe&#8230;) sur un ou des groupes de serveurs définis par des rôles.</p>
<p>C&#8217;est un complément à Puppet et non un doublon car ils n&#8217;ont pas la même cible :</p>
<p><span style="text-decoration: underline;"><em>Objectif</em></span><br />
<span style="color: #339966;"><em>Puppet </em></span>- Homogénéité de la configuration du parc de serveurs.<br />
<span style="color: #800080;"><em>Capistrano </em></span>- Reproductibilité des tâches et exécution en parallèle.</p>
<p><span style="text-decoration: underline;"><em>Mode de fonctionnement</em></span><br />
<em><span style="color: #339966;">Puppet </span></em>- Pull régulier des clients (voire push du master).<br />
<span style="color: #800080;"><em>Capistrano </em></span>- Tâches ponctuelles (appel manuel ou par cron).</p>
<p><span style="text-decoration: underline;"><em>Orientation</em></span><br />
<span style="color: #339966;"><em>Puppet </em></span>- Objets / notions prédéfinis tels que « Package », « Service », « File », …<br />
<em><span style="color: #800080;">Capistrano </span></em>- Des commandes génériques comme « upload », « download », « system », « run », …</p>
<p><span style="text-decoration: underline;"><em>Cible</em></span><br />
<span style="color: #339966;"><em>Puppet </em></span>- Infrastructure et services.<br />
<span style="color: #800080;"><em>Capistrano </em></span>- Services et applicatif.</p>
<p>A noter, <a title="Site de Webistrano" href="http://labs.peritor.com/webistrano">Webistrano</a> est une IHM  permettant d’accéder aux fonctionnalités de Capistrano et introduisant  une notion de gestion de projet par la possibilité de gérer les accès  aux tâches en fonction de son profil, de tracer qui a déployé quoi sur  quel serveur et d’envoyer des alertes mails sur certaines actions. Je trouve cette jointure avec la gestion de  projet intéressante.</p>
<p><em><strong>Monitoring</strong></em><br />
C&#8217;est un des éléments cruciaux d&#8217;une architecture scalable, si ce n&#8217;est le principal. Il est indispensable d’avoir à disposition des métriques afin de savoir justement quand scaler. Il permet d’identifier les points d’engorgement de l’infrastructure, d&#8217;analyser l’évolution du trafic sur votre site et d&#8217;en déduire les comportements des utilisateurs et permet également de déclencher des alertes.</p>
<p>Cet apport de métriques est plus représentatif de la métrologie que de la supervision. On verra que, dans le cadre d&#8217;une infrastructure sur AWS, la métrologie a une valeur ajoutée plus importante que celle de la supervision (même si cette dernière reste indispensable). A ce propos, voici un éclaircissement sur les 2 disciplines du monitoring qu&#8217;il faut identifier :</p>
<ul>
<li>La <strong>supervision </strong>vérifie l’état d’un hôte ou d’un service et remonte une alerte sur la détection d’un comportement anormal (temps de réponse trop long, statut NOK, …) et implique une action immédiate de la part des interlocuteurs concernés. Une alerte doit signifier que l’hôte ou le service est inutilisable (critical) ou risque de l’être (warning) et ne pas renvoyer de « simples informations » qui pollueraient la visibilité des réels incidents.</li>
<li>La <strong>métrologie </strong>permet d’historiser les données, éventuellement d’appliquer un traitement ou filtre dessus, avant de les présenter sous forme de graphiques ou de reporting. Ces données permettent d’apporter un correctif à postériori au niveau développement ou paramétrage des services afin d’apporter une optimisation desdits services et également de définir les ressources à attribuer aux services au plus  juste. Cet aspect du monitoring est tout aussi important car il va permettre d’améliorer le service et donc le rendu des utilisateurs (internes ou clients finaux) et également de lisser les coûts. Les résultats issus de la métrologie doivent mettre aisément en valeur les améliorations à apporter en corrélant les valeurs récupérées.</li>
</ul>
<p>Un certain nombre existent sur le marché avec leurs avantages et inconvénients, certains plus orientés supervision, d&#8217;autres plus métrologie. On citera <a title="Site de Centreon" href="http://www.centreon.com/">Centreon</a>/<a title="Site de Nagios" href="http://www.nagios.org/">Nagios</a>, <a title="Site de Zabbix" href="http://www.zabbix.com/">Zabbix</a>, <a title="Site de Cacti" href="http://www.cacti.net/">Cacti </a>ou encore <a title="Site de Munin" href="http://munin.projects.linpro.no/">Munin</a>. Personnellement, j&#8217;utilise Centreon/Nagios essentiellement pour la  supervision et Cacti pour la métrologie orientée logicielle avec des  graphes pré-packagés comme pour Apache, MySQL, Memcached, &#8230; Mais j&#8217;ai  eu de nombreux bons écho sur Zabbix pour son exhaustivité de  fonctionnalités et Munin pour sa simplicité d&#8217;utilisation.</p>
<div id="attachment_388" class="wp-caption alignright" style="width: 414px"><img class="size-full wp-image-388 " title="Thread Scoreboard Apache - Yearly - 1 Day Average" src="http://decrypt.ysance.com/wp-content/uploads/2009/07/Thread-Scoreboard-Apache-Yearly-1-Day-Average.png" alt="Thread Scoreboard Apache - Yearly - 1 Day Average" width="404" height="262" /><p class="wp-caption-text">Thread Scoreboard Apache - Yearly - 1 Day Average</p></div>
<p>Il est à noter que ces outils fonctionnent pour la plupart (Centreon, Cacti et Munin) sur <a title="Site de RRDtool" href="http://oss.oetiker.ch/rrdtool/">RRDtool</a> (Round-Robin Database), un outil de gestion de base de données permettant également de représenter graphiquement les données contenues dans la base. Le gros avantage tient dans le fait que le volume de données stockées est minimal même pour la conservation de plusieurs mois, voire années de données. Cela est rendu possible par le calcul de moyennes sur des périodes (de 1 minute à 1 jour) : les données récentes sont exactes, alors que les plus anciennes sont approximées. Très pratique car nous avons à la fois des métriques récentes exactes et conservons un historique, une représentation de l&#8217;évolution de notre architecture, ce qui est capital afin de visualiser l&#8217;évolution des métriques clés et de comprendre les impacts de l’évolution des composants de ladite infrastructure ou bien des applications supportées au fur et à mesure des livraisons des différentes releases.</p>
<p>Concernant les infrastructures de type Cloud Computing, la discipline  ayant la plus forte valeur ajoutée est la métrologie, car c&#8217;est elle qui  va permettre d&#8217;apporter un feed back à vos outils d&#8217;automatisation.</p>
<p>Gardez à l&#8217;esprit également qu&#8217;il est intéressant de pouvoir intégrer dynamiquement les nouvelles machines installées et configurées par Puppet dans l&#8217;outil de monitoring. Privilégiez donc les outils de monitoring avec une configuration modulaire, ou simple d&#8217;accès via APIs.</p>
<p><em><strong>Gestion des logs centralisée</strong></em><br />
C&#8217;est indéniable, plus vous aurez d&#8217;instances, plus vous aurez de logs éparses sur les diverses instances. De plus, diriger tous les logs vers le daemon syslog devient problématique car tous les composants de l&#8217;infrastructure ne gèrent pas forcément bien cela (redirection, respect du protocole syslog, &#8230;), sans parler de la ou des applications/briques fonctionnelles qui peuvent loguer dans des fichiers disparates sur le serveur.</p>
<p><img class="size-full wp-image-1082 alignleft" title="Logo Syslog-NG" src="http://decrypt.ysance.com/wp-content/uploads/2010/03/syslog-ng.gif" alt="Logo Syslog-NG" width="200" height="47" /></p>
<p>Pensez à des outils comme <a title="Site de Syslog-NG" href="http://www.balabit.com/network-security/syslog-ng/">Syslog-NG</a> : il est composé d&#8217;un serveur et de plusieurs clients, en fait le même outil mais avec des configurations différentes. En plus, il est capable de vérifier régulièrement des fichiers de logs (d&#8217;applications métier par exemple) et de transmettre uniquement le différentiel, même si celui-ci ne respecte pas le protocole syslog :</p>
<ul>
<li>Le client récupère les logs de files(fichiers)/pipe/unix-dgram/&#8230; et envoie les infos sur le réseau (tcp/udp).</li>
<li>Le serveur récupère les infos du réseau (tcp/udp) et les enregistre dans des fichiers, bases de données, &#8230;</li>
</ul>
<div id="attachment_1314" class="wp-caption alignleft" style="width: 432px"><img class="size-full wp-image-1314 " title="Architecture Syslog-NG" src="http://decrypt.ysance.com/wp-content/uploads/2010/06/syslog-ng-archi.png" alt="Architecture Syslog-NG" width="422" height="255" /><p class="wp-caption-text">Architecture Syslog-NG</p></div>
<p>Il s&#8217;agit juste de différences minimes en termes de configuration. Le composant peut également servir de relai sur des infrastructures plus complexes en recevant les logs du réseau à partir de divers clients et en les envoyant à nouveau sur le réseau à destination d’un serveur.</p>
<p>Il est possible d’appliquer des filtres avant d’envoyer les logs sur le réseau pour ne faire transiter que le nécessaire et ensuite il est également possible d’en appliquer au niveau du serveur pour gérer différemment les logs en provenance des clients en fonction de leur criticité, programme émetteur, hôte d’origine, …</p>
<p>C’est un outil simple et non intrusif pouvant prendre en compte les logs des applications éparses sur un serveur (même si ces logs ne respectent pas le format du protocole « syslog » &#8211; il y a cependant un plus à respecter ce protocole pour avoir une meilleure précision au niveau des « facilities » et « priorities »).</p>
<p>De même que pour le monitoring, gardez à l&#8217;esprit qu&#8217;il est intéressant de pouvoir intégrer (et retirer) dynamiquement les nouvelles instances à gérer au niveau du système de logs.</p>
<p><em><strong>Conclusion</strong></em><br />
Au delà des outils présentés, ce sont les fonctionnalités sous-jacentes qui sont importantes. Ce qu&#8217;il  en ressort, c&#8217;est :</p>
<ul>
<li>Les outils comme  les gestionnaires de configuration centralisée, les  outils d&#8217;exécution  de tâches automatisées en parallèle ou bien les gestionnaires  de logs vont  prendre encore plus d&#8217;importance. Il n&#8217;est plus  envisageable de  travailler sans sur de telles infrastructures.</li>
<li>Le monitoring est  toujours une valeur clé et le restera, mais la métrologie  permet avec l&#8217;analyse des métriques clés définis dans son infrastructure d&#8217;alimenter les outils d&#8217;automatisation.</li>
<li>L&#8217;automatisation est bien le mot clé mis en  avant par les AWS :  l&#8217;accessibilité des ressources Hardware ou  d&#8217;Infrastructure via du code  permet d&#8217;aller vers des architectures de  plus en plus autonomes. Il faut  cependant positionner le curseur  convenablement, sachant que les  dernières étapes d&#8217;une automatisation  complète seront les plus  coûteuses.</li>
</ul>
<p>J&#8217;espère que ce retour  d&#8217;expérience vous aura intéressé autant que  j&#8217;ai eu de plaisir à  travailler sur ces infrastructures. Je continuerai cet article dans une deuxième partie consacrée au modèle d&#8217;architecture à appliquer pour des infrastructures scalables.</p>
<p><em><strong>Frédéric FAURE</strong></em> <a title="Frédéric FAURE @Twitter" href="http://twitter.com/fredericfaure">@Twitter</a> <a title="Ysance, Simplifions les projets informatiques" href="http://www.ysance.com/">@Ysance</a></p>
]]></content:encoded>
			<wfw:commentRss>http://decrypt.ysance.com/2010/06/scaler-une-infrastructure-aws-1-les-outils/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Ysance recrute Admin Système Cloud Computing</title>
		<link>http://decrypt.ysance.com/2010/06/ysance-recrute-admin-systeme-cloud-computing/</link>
		<comments>http://decrypt.ysance.com/2010/06/ysance-recrute-admin-systeme-cloud-computing/#comments</comments>
		<pubDate>Fri, 11 Jun 2010 17:07:15 +0000</pubDate>
		<dc:creator>Frédéric Faure</dc:creator>
				<category><![CDATA[Cloud Computing]]></category>
		<category><![CDATA[Infrastructure]]></category>
		<category><![CDATA[Offre Emploi]]></category>

		<guid isPermaLink="false">http://decrypt.ysance.com/?p=1229</guid>
		<description><![CDATA[Je profite de Decrypt pour annoncer qu'Ysance recrute un Administrateur Système "<em>Cloud Computing</em>" . Je joins ci-dessous la fiche descriptive de l'offre d'emploi communiquée. Si vous êtes intéressés pour nous rejoindre, vous pouvez contacter notre Chargée de Recrutement, Soria Boucebaine, à l'adresse <a href="mailto:soria.boucebaine@ysance.com">soria.boucebaine@ysance.com</a> ou bien par téléphone au <em>01 83 62 11 08</em>.

[...]
]]></description>
			<content:encoded><![CDATA[<p>Je profite de Decrypt pour annoncer qu&#8217;Ysance recrute un Administrateur Système &laquo;&nbsp;<em>Cloud Computing</em>&nbsp;&raquo; . Je joins ci-dessous la fiche descriptive de l&#8217;offre d&#8217;emploi communiquée. Si vous êtes intéressés pour nous rejoindre, vous pouvez contacter notre Chargée de Recrutement, Soria Boucebaine, à l&#8217;adresse <a href="mailto:soria.boucebaine@ysance.com">soria.boucebaine@ysance.com</a> ou bien par téléphone au <em>01 83 62 11 08</em>.</p>
<p><em><strong>Missions :</strong></em></p>
<ul>
<li> Installer et administrer des serveurs physiques et virtuels de type Cloud Computing (Amazon Web Services)</li>
<li>Superviser les serveurs</li>
<li>Assurer une continuité de service</li>
<li>Gérer les relations avec Amazon ainsi qu’avec les clients</li>
<li>Assurer une veille R&amp;D sur les nouveautés du marché</li>
<li>Mettre en place des PRA</li>
</ul>
<p><em><strong>Profil :</strong></em></p>
<p>Diplômé(e) d&#8217;un Bac + 2 à Bac + 5 en administration des réseaux, vous avez au minimum 3 ans d’expérience professionnelle sur un poste similaire. Vous démontrez un intérêt certain pour l’applicatif et connaissez obligatoirement Linux. Une expérience des projets soumis à des contraintes de montée en charge est indispensable.</p>
<p>Autonome, rigoureux(se), doté(e) d’un très bon relationnel et de fortes capacités d’adaptation, vous faites preuve d’un goût prononcé pour la technique. Vos qualités rédactionnelles, votre orientation client et votre empathie seront les clés de votre réussite sur ce poste. La maîtrise de l’anglais est impérative (l’ensemble de la documentation est en Anglais).</p>
<p>Pro-actif(ve), apte à travailler en équipe, passionné(e) de nouvelles technologies, vous souhaitez contribuer à la réalisation de projets ambitieux.</p>
<p>Référencés auprès de grands groupes de tous secteurs d&#8217;activités (banque/finance, distribution, services, transport, communication), nous vous proposons dès aujourd&#8217;hui de participer à de grands projets, riches techniquement et fonctionnellement.</p>
<p>En rejoignant Ysance, venez découvrir des projets innovants dans un environnement dynamique, à forte valeur ajoutée, et propice à des opportunités de carrière.</p>
<p><em><strong>A noter :</strong></em></p>
<ul>
<li> Poste basé sur Paris</li>
<li>CDI à pourvoir rapidement</li>
<li>Rémunération selon profil</li>
</ul>
<p>A bientôt !</p>
<p><em><strong>Frédéric FAURE</strong></em></p>
]]></content:encoded>
			<wfw:commentRss>http://decrypt.ysance.com/2010/06/ysance-recrute-admin-systeme-cloud-computing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>EBS et LVM2 ou comment optimiser l&#8217;élasticité des AWS</title>
		<link>http://decrypt.ysance.com/2010/06/ebs-et-lvm2-ou-comment-optimiser-elasticite-des-aws/</link>
		<comments>http://decrypt.ysance.com/2010/06/ebs-et-lvm2-ou-comment-optimiser-elasticite-des-aws/#comments</comments>
		<pubDate>Thu, 03 Jun 2010 09:26:44 +0000</pubDate>
		<dc:creator>Laurent Roux</dc:creator>
				<category><![CDATA[Cloud Computing]]></category>
		<category><![CDATA[Haute Disponibilité]]></category>
		<category><![CDATA[Infrastructure]]></category>
		<category><![CDATA[Scalability]]></category>
		<category><![CDATA[Amazon Web Services]]></category>
		<category><![CDATA[EBS]]></category>
		<category><![CDATA[LVM]]></category>

		<guid isPermaLink="false">http://decrypt.ysance.com/?p=1176</guid>
		<description><![CDATA[Le stockage de données en lui même n'est plus réellement un problème de nos jours. Nous pouvons facilement trouver des solutions qui permettent, selon les moyens techniques et financiers, de stocker un grand nombre de données. De son côté, Amazon, avec ses <a title="Site de Amazon Web Services" href="http://aws.amazon.com/">AWS</a>, propose une solution "In the Cloud" permettant de créer un disque réseau de la taille désirée et de le raccrocher à une instance virtuelle. Cette solution, nommée <a title="Site de Amazon Web Services, rubrique Elastic Block Store" href="http://aws.amazon.com/ebs/">EBS</a> (Elastic Block Store), permet de créer à la volée des disques qui peuvent être attachés à chaud à une instance <a title="Site de Amazon Web Services, rubrique Elastic Compute Cloud" href="http://aws.amazon.com/ec2/">EC2</a> (Elastic Compute Cloud). Bien évidemment le coût financier de ce service est fonction de l'espace alloué. Trois solutions s'offrent alors à nous :
<ul>
	<li> Allocation surestimée d'un disque permettant en théorie de subvenir aux besoins futurs du système ce qui occasionne un surcoût.</li>
	<li> Allocation d'un disque pour assurer la pérennité à court ou moyen terme puis migration des données sur un disque plus grand quand le premier sera trop petit. Cette solution va demander un coût élevé en termes de maintenance et d'indisponibilité du système.</li>
	<li> Utilisation de LVM2 (Logical Volume Manager, version 2) pour la gestion des disques. Elle permet de lisser l'augmentation de la quantité d'espace alloué en ajoutant des  disques au fur et à mesure des besoins tout en assurant un minimum d'indisponibilité.</li>
</ul>

[...]]]></description>
			<content:encoded><![CDATA[<p>Le stockage de données en lui même n&#8217;est plus réellement un problème de nos jours. Nous pouvons facilement trouver des solutions qui permettent, selon les moyens techniques et financiers, de stocker un grand nombre de données. De son côté, Amazon, avec ses <a title="Site de Amazon Web Services" href="http://aws.amazon.com/">AWS</a>, propose une solution &laquo;&nbsp;In the Cloud&nbsp;&raquo; permettant de créer un disque réseau de la taille désirée et de le raccrocher à une instance virtuelle. Cette solution, nommée <a title="Site de Amazon Web Services, rubrique Elastic Block Store" href="http://aws.amazon.com/ebs/">EBS</a> (Elastic Block Store), permet de créer à la volée des disques qui peuvent être attachés à chaud à une instance <a title="Site de Amazon Web Services, rubrique Elastic Compute Cloud" href="http://aws.amazon.com/ec2/">EC2</a> (Elastic Compute Cloud). Bien évidemment le coût financier de ce service est fonction de l&#8217;espace alloué. Trois solutions s&#8217;offrent alors à nous :</p>
<ul>
<li> Allocation surestimée d&#8217;un disque permettant en théorie de subvenir aux besoins futurs du système ce qui occasionne un surcoût.</li>
<li> Allocation d&#8217;un disque pour assurer la pérennité à court ou moyen terme puis migration des données sur un disque plus grand quand le premier sera trop petit. Cette solution va demander un coût élevé en termes de maintenance et d&#8217;indisponibilité du système.</li>
<li> Utilisation de LVM2 (Logical Volume Manager, version 2) pour la gestion des disques. Elle permet de lisser l&#8217;augmentation de la quantité d&#8217;espace alloué en ajoutant des  disques au fur et à mesure des besoins tout en assurant un minimum d&#8217;indisponibilité.</li>
</ul>
<p><em><strong>Principe de fonctionnement</strong></em><br />
L&#8217;unité de base est le volume physique représenté par un disque (PV : Physical Volume). Un ou plusieurs  PV sont nécessaires pour construire un VG (Volume Group). Cette entité va donc fédérer les PV pour mettre leur espace en commun et le rendre disponible pour créer un ou des LV (Logical Volume). C&#8217;est le LV qui sera formaté et utilisé comme un disque standard.</p>
<div id="attachment_1177" class="wp-caption alignnone" style="width: 310px"><img class="size-medium wp-image-1177" title="Logical Volume Management" src="http://decrypt.ysance.com/wp-content/uploads/2010/06/Archi_LVM-300x280.png" alt="Logical Volume Management" width="300" height="280" /><p class="wp-caption-text">Logical Volume Management</p></div>
<p><em><strong>Monter un système LVM2</strong></em><br />
LVM2 est relativement simple à exploiter. Quand on dispose d&#8217;un disque physique attaché au système et accessible via les devices habituels (<em>/dev/hdx</em> ou <em>/dev/sdx</em>), il est simple d&#8217;ajouter ce disque à un système LVM ou de créer celui-ci.<br />
LVM2 dispose de 3 niveaux de commandes :</p>
<ul>
<li>Les commandes destinées à la partie devices physiques qui sont préfixées par &laquo;&nbsp;pv&nbsp;&raquo; (<em>pvcreate, pvscan, pvs, pvdisplay, pvremove, pvmove, pvchange</em>).</li>
<li>Les commandes destinées à gérer les &laquo;&nbsp;volume group&nbsp;&raquo; qui sont préfixées par &laquo;&nbsp;vg&nbsp;&raquo; (<em>vgcreate, vgdisplay, vgscan, vgs, vgck, vgremove, vgchange, vgimport, vgexport</em>).</li>
<li>Les commandes destinées à gérer les &laquo;&nbsp;logical volume&nbsp;&raquo; qui sont préfixées par &laquo;&nbsp;lv&nbsp;&raquo; (<em>lvcreate, lvmdiskscan, lvs, lvdisplay, lvremove, lvextend</em>).</li>
</ul>
<p>De plus, il existe une commande de bas niveau, <em>dmsetup</em>, prévue pour la gestion de LVM2, mais elle est réservée aux cas exceptionnels (récupération de données après un crash très grave du système LVM, par exemple).</p>
<p>Pour créer un système LVM2 il suffit d&#8217;ajouter un disque physique à la liste des devices utilisables par LVM2 avec la commande &laquo;&nbsp;pvcreate&nbsp;&raquo; :</p>
<blockquote><p>pvcreate /dev/sdd</p></blockquote>
<p>Une fois le device connu par LVM2, on peut le rattacher à un volume group ou créer un nouveau volume group (un système peut comporter plusieurs volume groups) :</p>
<blockquote><p>vgcreate vg_exemple /dev/sdd (pour la création d&#8217;un VG)</p>
<p>vgextend vg_exemple /dev/sde (pour l&#8217;ajout d&#8217;un PV à un VG existant du nom de &laquo;&nbsp;vg_exemple&nbsp;&raquo;)</p></blockquote>
<p>Cette opération a permis d&#8217;ajouter des Physical Extents (PE) au VG. Ces PE sont des blocs d&#8217;espace disque : le PE est l&#8217;unité de calcul de LVM, exprimé en Ko. Une fois cette opération réalisée nous disposons donc d&#8217;un VG avec de l’espace supplémentaire que nous pouvons, à loisir, destiner à la création d&#8217;un nouveau LV ou à l&#8217;augmentation de la taille d&#8217;un LV ou aux deux en même temps :</p>
<blockquote><p>lvcreate -l 10230 vg_exemple -n lv_exemple (va créer une LV du nom de &laquo;&nbsp;lv_exemple&nbsp;&raquo; sur le VG &laquo;&nbsp;vg_exemple&nbsp;&raquo;.</p></blockquote>
<p>Il ne reste plus qu&#8217;à formater le LV (ext3, xfs, &#8230;). Il faut cependant faire attention au type de Filesystem que l&#8217;on y place. Tous les Filesystems ont leurs spécificités et leurs contraintes, certain n&#8217;acceptent pas le redimensionnement à la volée, d&#8217;autres n&#8217;accepteront tout simplement pas la diminution de taille.</p>
<p><span style="text-decoration: underline;">Remarque :</span> Il est possible de monter un système Linux bootable sur un volume LVM mais cette opération est délicate et relativement dangereuse à réaliser.</p>
<p><em><strong>Elasticité et souplesse de la solution</strong></em><br />
Une fois que nous disposons d&#8217;un système comportant LVM2 il est possible ensuite d&#8217;ajouter des disques, d&#8217;en retirer, de faire migrer les données d&#8217;un disque à un autre ou de répartir les données d&#8217;un disque vers la place libre du VG dont il fait parti. Toutes ces opérations se font sans stopper les traitements en cours sur un disque (copies de fichiers, base de données… etc). Il est à noter que certaines opérations peuvent avoir un léger impact sur les performances pendant leur déroulement (migration de données). Mais ces opérations sont relativement rapides et ne causeront donc que peu de dérangement.<br />
Seule les opérations d&#8217;augmentation et, à fortiori, de réduction de la taille d&#8217;un Filesystem peut nécessiter l&#8217;arrêt des traitements sur un LV. Cependant, le redimensionnement d&#8217;un Filesystem est une opération rapide qui ne dure en général jamais plus que quelques dizaines de secondes.</p>
<p><em><strong>Fonctionnalités avancées</strong></em><br />
LVM2 ne s&#8217;arrête pas là. Il dispose de fonctionnalités qui vont nous faciliter la vie.</p>
<p><span style="text-decoration: underline;"><em>Snapshot</em></span><br />
Le Snapshot est un volume logique permettant de prendre une photo à un instant &#8216;t&#8217; d&#8217;un autre volume logique du même volume groupe. Cette photo permettra de travailler sur des données qui ne bougent pas (ex: sauvegarde). De plus le Snapshot ne nécessite pas autant de place que le volume d&#8217;origine. On peut considérer qu&#8217;il faut réserver 15% de la taille du volume pour un Snapshot. Ces 15% sont destiné à absorber les modifications effectuées sur le volume d&#8217;origine ce qui permet de figer le Snapshot. Mais ces 15% ne sont qu&#8217;une estimation et il faut adapter cette taille à la quantité prévisible de données écrites pendant l&#8217;utilisation du Snapshot.<br />
La principale limite du Snapshot est sa volatilité. Il n&#8217;existera plus après un reboot de l&#8217;OS.</p>
<p><span style="text-decoration: underline;"><em>Stripping</em></span><br />
Le principe du Stripping LVM2, à l&#8217;instar de RAID0, est de répartir les écritures d&#8217;un volume logique sur plusieurs volumes physiques. A la création du volume logique nous devons spécifier le nombre d&#8217;unités physiques à utiliser (unités présentes dans le VG). Cette technique permet d&#8217;améliorer les performances mais rend LVM plus sensible aux pannes d&#8217;un disque. En ce qui concerne les pannes, nous pouvons nous appuyer sur la robustesse des EBS (qui assure la durabilité des données via RAID1) pour garantir un maximum de sécurité à ce sujet.</p>
<p><span style="text-decoration: underline;"><em>Mirroring</em></span><br />
Tout comme en RAID1, LVM2 propose une solution de mirroring. Ce mirroring s’effectue entre deux VG distincts (donc des disques physiques séparés). Il permet d’ajouter un niveau de sécurité supplémentaire au système LVM2.</p>
<p><em><strong>LVM2 hors du nuage</strong></em><br />
Les avantages de LVM2 sont également appréciables dans une infrastructure physique. Dans ce cas, les volumes physiques peuvent être de différentes formes. Nous pouvons aussi bien avoir des disques physiques de différentes technologies que des disques réseau (LUNs dans un SAN, …). La solution de mirroring de LVM2 est appréciable quand le RAID1 n’est pas applicable entre deux unités de stockage.</p>
<p><em><strong>Conclusion</strong></em><br />
Vous l&#8217;aurez compris, le couple EBS/LVM2 est parfait pour permettre une maitrise au plus juste de la quantité d&#8217;espace à allouer et ainsi de mieux maitriser les coûts. Mais ce couple va plus loin en proposant une souplesse d&#8217;utilisation et une sécurité en termes de manipulation des unités de stockage. Il offre de plus des fonctionnalités permettant d&#8217;améliorer les performances.</p>
<p><em><strong>Laurent ROUX</strong></em></p>
]]></content:encoded>
			<wfw:commentRss>http://decrypt.ysance.com/2010/06/ebs-et-lvm2-ou-comment-optimiser-elasticite-des-aws/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Puppet et FarmVille</title>
		<link>http://decrypt.ysance.com/2010/02/puppet-et-farmville/</link>
		<comments>http://decrypt.ysance.com/2010/02/puppet-et-farmville/#comments</comments>
		<pubDate>Fri, 12 Feb 2010 16:03:22 +0000</pubDate>
		<dc:creator>Frédéric Faure</dc:creator>
				<category><![CDATA[Architecture]]></category>
		<category><![CDATA[Automatisation]]></category>
		<category><![CDATA[Infrastructure]]></category>
		<category><![CDATA[Scalability]]></category>
		<category><![CDATA[Puppet]]></category>

		<guid isPermaLink="false">http://decrypt.ysance.com/?p=869</guid>
		<description><![CDATA[<img class="size-full wp-image-870 alignleft" title="Farm Ville" src="http://decrypt.ysance.com/wp-content/uploads/2010/02/farmville.jpg" alt="Farm Ville" width="183" height="139" />
&#160;
Pour ceux qui doutaient encore de l'efficacité de <a title="Site de Puppet" href="http://reductivelabs.com/">Puppet</a>, voilà encore un bel exemple de réalisation utilisant cet outil ! Allez consulter cet article de High Scalability : <a title="High Scalability, How FarmVille Scales to Harvest 75 Million Players a Month" href="http://highscalability.com/blog/2010/2/8/how-farmville-scales-to-harvest-75-million-players-a-month.html">How FarmVille Scales to Harvest 75 Million Players a Month</a> ! [...]

<img class="size-full wp-image-890" title="Logo Puppet - Reductive Labs" src="http://decrypt.ysance.com/wp-content/uploads/2010/02/puppet-short.png" alt="Logo Puppet - Reductive Labs" width="151" height="44" />]]></description>
			<content:encoded><![CDATA[<p>Pour ceux qui doutaient encore de l&#8217;efficacité de <a title="Site de Puppet" href="http://reductivelabs.com/">Puppet</a>, voilà encore un bel exemple de réalisation utilisant cet outil ! Allez consulter cet article de High Scalability : <a title="High Scalability, How FarmVille Scales to Harvest 75 Million Players a Month" href="http://highscalability.com/blog/2010/2/8/how-farmville-scales-to-harvest-75-million-players-a-month.html">How FarmVille Scales to Harvest 75 Million Players a Month</a> !</p>
<p><img class="size-full wp-image-870 alignnone" title="Farm Ville" src="http://decrypt.ysance.com/wp-content/uploads/2010/02/farmville.jpg" alt="Farm Ville" width="183" height="139" /></p>
<p>Merci qui ?</p>
<p><img class="size-full wp-image-430" title="Logo Puppet" src="http://decrypt.ysance.com/wp-content/uploads/2009/07/puppet2.png" alt="Logo Puppet" width="96" height="108" /><img class="size-full wp-image-890" title="Logo Puppet - Reductive Labs" src="http://decrypt.ysance.com/wp-content/uploads/2010/02/puppet-short.png" alt="Logo Puppet - Reductive Labs" width="151" height="44" /></p>
<p>Merci Puppet !</p>
<p>Pour <span style="text-decoration: underline;">plus d&#8217;informations sur Puppet</span>, vous pouvez également consulter cette <a title="Site de Decrypt, Rubrique Puppet" href="http://decrypt.ysance.com/tag/puppet/">rubrique</a> sur Decrypt.</p>
<p><em><strong>Frédéric FAURE</strong></em></p>
]]></content:encoded>
			<wfw:commentRss>http://decrypt.ysance.com/2010/02/puppet-et-farmville/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Puppet et Capistrano : la clé de l&#8217;automatisation</title>
		<link>http://decrypt.ysance.com/2009/07/automatisation-puppet-capistrano/</link>
		<comments>http://decrypt.ysance.com/2009/07/automatisation-puppet-capistrano/#comments</comments>
		<pubDate>Thu, 30 Jul 2009 16:02:49 +0000</pubDate>
		<dc:creator>Frédéric Faure</dc:creator>
				<category><![CDATA[Automatisation]]></category>
		<category><![CDATA[Infrastructure]]></category>
		<category><![CDATA[Capistrano]]></category>
		<category><![CDATA[Puppet]]></category>
		<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://decrypt.ysance.com/?p=425</guid>
		<description><![CDATA[<a href="http://reductivelabs.com/" title="Site de Puppet">Puppet</a> 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.

<a href="http://www.capify.org/" title="Site de Capistrano">Capistrano</a> 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.

[...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://reductivelabs.com/" title="Site de Puppet">Puppet</a> 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.</p>
<p><a href="http://www.capify.org/" title="Site de Capistrano">Capistrano</a> est un 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.</p>
<div id="media"><object id="csSWF" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="640" height="498" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="src" value="http://www.labdecisionnel.fr/decrypt-content/Web/Ysance-Automatisation-Puppet-Capistrano.swf" /><param name="bgcolor" value="#1a1a1a" /><param name="quality" value="best" /><param name="allowScriptAccess" value="always" /><param name="allowFullScreen" value="true" /><param name="scale" value="showall" /><param name="flashVars" value="autostart=false" /><param name="name" value="csSWF" /><param name="flashvars" value="autostart=false" /><param name="allowfullscreen" value="true" /><embed id="csSWF" type="application/x-shockwave-flash" width="640" height="498" src="http://www.labdecisionnel.fr/decrypt-content/Web/Ysance-Automatisation-Puppet-Capistrano.swf" flashvars="autostart=false" allowfullscreen="true" allowscriptaccess="always" scale="showall" quality="best" bgcolor="#1a1a1a" name="csSWF"></embed></object></div>
<div> </div>
<div><img class="size-full wp-image-430" title="Logo Puppet" src="http://decrypt.ysance.com/wp-content/uploads/2009/07/puppet2.png" alt="Logo Puppet" width="96" height="108" /> <img class="size-medium wp-image-429" title="Logo Capistrano" src="http://decrypt.ysance.com/wp-content/uploads/2009/07/capistrano-logo-big-300x114.png" alt="Logo Capistrano" width="300" height="114" /></div>
<div> </div>
<div class="mceTemp">Vous pouvez également accéder aux versions <strong>IPhone</strong> et <strong>IPod</strong> de ce webcast :</div>
<p><a href="http://www.labdecisionnel.fr/decrypt-content/IPhone/Ysance-Automatisation-Puppet-Capistrano.m4v">Version IPhone</a><br />
<a href="http://www.labdecisionnel.fr/decrypt-content/IPod/Ysance-Automatisation-Puppet-Capistrano.m4v">Version IPod</a></p>
<p> </p>
<p>Puppet et Capistrano sont 2 outils ayant pour but de capitaliser les connaissances sur le fonctionnement d’une infrastructure et de l’automatiser de façon à l’homogénéiser et la fiabiliser.</p>
<p>Chacun des outils à son propre rôle et utiliser les 2 est une très bonne solution, Puppet étant attaché au maintient d’une configuration iso à tout moment entre chaque machine d’un même type et Capistrano permettant d’exécuter des tâches plus ou moins complexes en parallèle sur des groupes de machines assignées à des rôles.</p>
<p>Il est également possible en poussant le fonctionnement un peu plus loin, dans un environnement virtualisé par exemple, d’avoir un script qui démarre des machines, installe le client Puppet sur celles-ci, référence les nouvelles machines et accepte les certificats au niveau du Puppet Master, puis redémarre le client, avant de lancer une tâche Capistrano qui déploie la dernière version de l’application à partir de SVN sur les serveurs ne possédant pas encore l’application. En un clic, il est possible de multiplier le nombre de ses frontaux pour absorber un pic de charge par exemple.</p>
<p>Le mot clé est : « automatisation ! »</p>
<p><em><strong>Frédéric FAURE</strong></em></p>
]]></content:encoded>
			<wfw:commentRss>http://decrypt.ysance.com/2009/07/automatisation-puppet-capistrano/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Cacti : un monitoring au fil de l&#8217;eau</title>
		<link>http://decrypt.ysance.com/2009/07/monitoring-cacti/</link>
		<comments>http://decrypt.ysance.com/2009/07/monitoring-cacti/#comments</comments>
		<pubDate>Mon, 27 Jul 2009 15:03:41 +0000</pubDate>
		<dc:creator>Frédéric Faure</dc:creator>
				<category><![CDATA[Infrastructure]]></category>
		<category><![CDATA[Monitoring]]></category>
		<category><![CDATA[Cacti]]></category>
		<category><![CDATA[RRDtool]]></category>

		<guid isPermaLink="false">http://decrypt.ysance.com/?p=376</guid>
		<description><![CDATA[Ce webcast a pour objectif de vous présenter un outil de monitoring d'infrastructure fort sympathique : <a href="http://www.cacti.net/" title="Site de Cacti">Cacti</a>. 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, ...).

[...]]]></description>
			<content:encoded><![CDATA[<p>Ce webcast a pour objectif de vous présenter un outil de monitoring d&#8217;infrastructure fort sympathique : <a href="http://www.cacti.net/" title="Site de Cacti">Cacti</a>. 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.</p>
<p>L’approche open source du produit lui a permis d’obtenir une diversité de templates via la communauté.<br />
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, &#8230;).</p>
<p>Les templates de graphes que vous créez ou mis à disposition par la communauté peuvent être importés ou exportés via de simples fichiers XML associés à un script (perl, python, &#8230;) de récupération d&#8217;informations pour le service monitoré à coller dans le répertoire &laquo;&nbsp;/scripts&nbsp;&raquo; de votre Cacti.</p>
<p>Cacti permet de suivre l’évolution d’une infrastructure et des services proposés au fil du temps et conserve un historique des valeurs capturées permettant de tracer des graphes sur la journée autant que sur le mois ou bien sur l&#8217;année. Cacti est basé sur l&#8217;outil de log d&#8217;informations et de graphe <a href="http://oss.oetiker.ch/rrdtool/" title="Site de RRDtool">RRDtool</a>.</p>
<p>On peut retrouver Cacti sur son site : <a href="http://www.cacti.net/" title="Site de Cacti">http://www.cacti.net/</a> .<br />
Je vous invite également à consulter son forum <a href="http://forums.cacti.net/" title="Forum de Cacti">http://forums.cacti.net/</a> sur lequel de nombreuses informations sont mises à disposition par les créateurs et la communauté. Vous y trouverez par exemple des informations sur les plugins ou bien les templates à disposition de l&#8217;outil afin de grapher vos services (<a href="http://forums.cacti.net/about32151.html" title="Forum de Cacti">http://forums.cacti.net/about32151.html</a>, <a href="http://forums.cacti.net/about15067.html" title="Forum de Cacti">http://forums.cacti.net/about15067.html</a>, &#8230;).</p>
<p> </p>
<div id="media"><object id="csSWF" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="640" height="498" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="src" value="http://www.labdecisionnel.fr/decrypt-content/Web/Ysance-Monitoring-Cacti.swf" /><param name="bgcolor" value="#1a1a1a" /><param name="quality" value="best" /><param name="allowScriptAccess" value="always" /><param name="allowFullScreen" value="true" /><param name="scale" value="showall" /><param name="flashVars" value="autostart=false" /><param name="name" value="csSWF" /><param name="flashvars" value="autostart=false" /><param name="allowfullscreen" value="true" /><embed id="csSWF" type="application/x-shockwave-flash" width="640" height="498" src="http://www.labdecisionnel.fr/decrypt-content/Web/Ysance-Monitoring-Cacti.swf" flashvars="autostart=false" allowfullscreen="true" allowscriptaccess="always" scale="showall" quality="best" bgcolor="#1a1a1a" name="csSWF"></embed></object></div>
<p><img class="size-full wp-image-380" title="Logo Cacti" src="http://decrypt.ysance.com/wp-content/uploads/2009/07/cacti_logo.gif" alt="Logo Cacti" width="76" height="121" />  <img class="size-full wp-image-378" title="Logo RRDtool" src="http://decrypt.ysance.com/wp-content/uploads/2009/07/rrdtool-3dlogo.png" alt="Logo RRDtool" width="189" height="84" /></p>
<p>Vous pouvez également accéder aux versions <strong>IPhone</strong> et <strong>IPod</strong> de ce webcast :</p>
<p><a href="http://www.labdecisionnel.fr/decrypt-content/IPhone/Ysance-Monitoring-Cacti.m4v">Version IPhone</a><br />
<a href="http://www.labdecisionnel.fr/decrypt-content/IPod/Ysance-Monitoring-Cacti.m4v">Version IPod</a></p>
<p> </p>
<p><strong><em>Graphes sur différentes périodes</em></strong><br />
Voici le rendu d&#8217;un graphe sur différentes périodes :</p>
<p style="padding-left: 30px;"><em>Thread Scoreboard Apache &#8211; <strong>Hourly</strong> &#8211; 1 Minute Average</em></p>
<div id="attachment_385" class="wp-caption alignnone" style="width: 613px"><img class="size-full wp-image-385" title="Thread Scoreboard Apache - Hourly - 1 Minute Average" src="http://decrypt.ysance.com/wp-content/uploads/2009/07/Thread-Scoreboard-Apache-Hourly-1-Minute-Average.png" alt="Thread Scoreboard Apache - Hourly - 1 Minute Average" width="603" height="376" /><p class="wp-caption-text">Thread Scoreboard Apache - Hourly - 1 Minute Average</p></div>
<p style="padding-left: 30px;"><em>Thread Scoreboard Apache &#8211; <strong>Daily</strong> &#8211; 5 Minutes Average</em></p>
<div id="attachment_384" class="wp-caption alignnone" style="width: 613px"><img class="size-full wp-image-384" title="Thread Scoreboard Apache - Daily - 5 Minutes Average" src="http://decrypt.ysance.com/wp-content/uploads/2009/07/Thread-Scoreboard-Apache-Daily-5-Minutes-Average.png" alt="Thread Scoreboard Apache - Daily - 5 Minutes Average" width="603" height="376" /><p class="wp-caption-text">Thread Scoreboard Apache - Daily - 5 Minutes Average</p></div>
<p style="padding-left: 30px;"><em>Thread Scoreboard Apache &#8211; <strong>Weekly</strong> &#8211; 30 Minutes Average</em></p>
<div id="attachment_387" class="wp-caption alignnone" style="width: 613px"><img class="size-full wp-image-387" title="Thread Scoreboard Apache - Weekly - 30 Minutes Average" src="http://decrypt.ysance.com/wp-content/uploads/2009/07/Thread-Scoreboard-Apache-Weekly-30-Minutes-Average.png" alt="Thread Scoreboard Apache - Weekly - 30 Minutes Average" width="603" height="376" /><p class="wp-caption-text">Thread Scoreboard Apache - Weekly - 30 Minutes Average</p></div>
<p style="padding-left: 30px;"><em>Thread Scoreboard Apache &#8211; <strong>Monthly</strong> &#8211; 2 Hours Average</em></p>
<div id="attachment_386" class="wp-caption alignnone" style="width: 613px"><img class="size-full wp-image-386" title="Thread Scoreboard Apache - Monthly - 2 Hours Average" src="http://decrypt.ysance.com/wp-content/uploads/2009/07/Thread-Scoreboard-Apache-Monthly-2-Hours-Average.png" alt="Thread Scoreboard Apache - Monthly - 2 Hours Average" width="603" height="376" /><p class="wp-caption-text">Thread Scoreboard Apache - Monthly - 2 Hours Average</p></div>
<p style="padding-left: 30px;"><em>Thread Scoreboard Apache &#8211; <strong>Yearly</strong> &#8211; 1 Day Average</em></p>
<div id="attachment_388" class="wp-caption alignnone" style="width: 613px"><img class="size-full wp-image-388" title="Thread Scoreboard Apache - Yearly - 1 Day Average" src="http://decrypt.ysance.com/wp-content/uploads/2009/07/Thread-Scoreboard-Apache-Yearly-1-Day-Average.png" alt="Thread Scoreboard Apache - Yearly - 1 Day Average" width="603" height="376" /><p class="wp-caption-text">Thread Scoreboard Apache - Yearly - 1 Day Average</p></div>
<p><em><strong>Frédéric FAURE</strong></em></p>
]]></content:encoded>
			<wfw:commentRss>http://decrypt.ysance.com/2009/07/monitoring-cacti/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>
