<?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>Blog Nouvelles Technologiesarchitecture | Blog Nouvelles Technologies</title>
	<atom:link href="http://www.blog-nouvelles-technologies.net/tag/architecture/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.blog-nouvelles-technologies.net</link>
	<description>technologiquement parlant, nous vivons une époque privilégiée</description>
	<lastBuildDate>Wed, 08 Feb 2012 14:14:27 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Facebook down: vulgarisation de l&#8217;incident technique</title>
		<link>http://www.blog-nouvelles-technologies.net/facebook-down-vulgarisation-de-lincident-technique/</link>
		<comments>http://www.blog-nouvelles-technologies.net/facebook-down-vulgarisation-de-lincident-technique/#comments</comments>
		<pubDate>Mon, 04 Oct 2010 18:36:05 +0000</pubDate>
		<dc:creator>mathieu</dc:creator>
				<category><![CDATA[Nouvelles Technologies]]></category>
		<category><![CDATA[architecture]]></category>
		<category><![CDATA[cache]]></category>
		<category><![CDATA[facebook]]></category>

		<guid isPermaLink="false">http://www.blog-nouvelles-technologies.net/?p=1508</guid>
		<description><![CDATA[Le 23 septembre facebook subissait la plus grosse panne de ces 4 derniers années. 2,5 heures d&#8217;indisponibilité pour ses utilisateurs. Des informations techniques précises sur les causes du problème ont été publiées. Voila donc l&#8217;occasion d&#8217;expliquer l&#8217;architecture technique du site de manière simplifiée pour les non techniciens. 500 millions d&#8217;utilisateurs, et parmis eux presque 100 millions qui se connectent au moins une fois par jour, ça fait beaucoup de données qui transitent sur le réseaux (images, wall, news feed etc&#8230;)  et beaucoup à  stocker. Evolution du traffic réseaux lors de la panne Pour tenir la charge (c&#8217;est à dire le niveau de travail demandé pour ce service en termes de puissance machine) pas moins de 60 000 serveurs sont utilisés. Pour info google c&#8217;est 2 millions mais vous l&#8217;avez compris 60 000 c&#8217;est déjà une trés grosse infrastructure. A ce niveau, la ressource machine est précieuse. Stoquer un nouveau format de vignette par exemple plus large ou un format panoramique pour vos photos  peut nécessiter plusieurs milliers de serveurs en plus.  Avec une telle échelle, les architectes techniques de facebook doivent redoubler d&#8217;ingéniosité pour rendre le service dans des délais acceptables (temps d&#8217;affichage d&#8217;une page) mais surtout pour que tout cela soit simplement [...]]]></description>
			<content:encoded><![CDATA[<p>Le 23 septembre facebook subissait la plus grosse panne de ces 4 derniers années. 2,5 heures d&#8217;indisponibilité pour ses utilisateurs.</p>
<p>Des informations <a href="http://www.facebook.com/notes/facebook-engineering/more-details-on-todays-outage/431441338919">techniques précises sur les causes du problème</a> ont été publiées. Voila donc l&#8217;occasion d&#8217;expliquer l&#8217;architecture technique du site de manière simplifiée pour les non techniciens.</p>
<p>500 millions d&#8217;utilisateurs, et parmis eux presque <strong>100 millions qui se connectent au moins une fois par jour, </strong>ça fait beaucoup de données qui transitent sur le réseaux (images, wall, news feed etc&#8230;)  et beaucoup à  stocker.</p>
<p><a rel="attachment wp-att-1509" href="http://www.blog-nouvelles-technologies.net/facebook-down-vulgarisation-de-lincident-technique/facebook-outage/"><img title="facebook-outage" src="http://www.blog-nouvelles-technologies.net/wp-content/uploads/2010/10/facebook-outage.jpg" alt="" width="640" height="386" /></a></p>
<p style="padding-left: 30px;"><em>Evolution du traffic réseaux lors de la panne</em></p>
<p>Pour tenir la charge (c&#8217;est à dire le niveau de travail demandé pour ce service en termes de puissance machine) pas moins de <strong>60 000 serveurs</strong> sont utilisés. Pour info <strong>google c&#8217;est 2 millions</strong> mais vous l&#8217;avez compris 60 000 c&#8217;est déjà une trés grosse infrastructure.</p>
<p>A ce niveau, la ressource machine est précieuse. Stoquer un nouveau format de vignette par exemple plus large ou un format panoramique pour vos photos  <strong>peut nécessiter plusieurs milliers de serveurs en plus</strong>.  Avec une telle échelle, les architectes techniques de facebook doivent redoubler d&#8217;ingéniosité pour rendre le service dans des délais acceptables (temps d&#8217;affichage d&#8217;une page) mais surtout pour que tout cela soit simplement possible.</p>
<h3>Cache?</h3>
<p>Pourquoi stocker une information si je  peut la calculer à partir d&#8217;autres informations présentes?</p>
<p>Exemple: dés que l&#8217;utilisateur arrive sur mon site, je récupére sa date de naissance dans la base, calcul son age et l&#8217;affiche.</p>
<p>Plus proche de la réalité: aller chercher l&#8217;age dans la base à <strong>un coup conséquent</strong> en ressources machines. Mon serveur web (front) doit se connecter à la base, lui demander de fouiller dans le disque dur pour trouver le segment de données qui contient la date, et la récupérer en local, dans sa mémoire. Mais <strong>un disque dur c&#8217;est lent</strong>, beaucoup plus lent que la mémoire vive qui est la plus rapide quand il s&#8217;agit de récupérer/lire des données.</p>
<p>C&#8217;est la qu&#8217;intervient le cache. La première fois qu&#8217;on demande une information, je vais la chercher sur les serveurs concernés (trés lent) et je <strong>garde l&#8217;information en mémoire vive</strong>. La deuxième fois je ne refait pas tout le travail!  Je vais chercher l&#8217;information dans la mémoire RAM directement.</p>
<p>Un cache peut être invalidé. Par exemple si l&#8217;utilisateur change sa date de naissance, la donnée en mémoire n&#8217;est plus bonne. Mon application doit détecter que le cache n&#8217;est plus valide, aller chercher la valeur à  jour, et la stocker à nouveau en mémoire.</p>
<p>Je peut aussi donner un timeout à mon cache.  Je décide que 3600 secondes aprés qu&#8217;il ai été créé il sera invalidé et mon application devra le reconstruire avec les données à jour.</p>
<h3>Sans cache, pas de facebook!</h3>
<p>L&#8217;incident du 23 septembre est exactement un <strong>problème de cache</strong>. Facebook  a mis en place un robot (un logiciel autonome) qui parcours en permanence les serveurs et examine les caches un à un. Si il n&#8217;est pas à jour, il va récupérer la données dans le cluster (groupe de serveurs) de base de données concerné et remplace la donnée invalidée par la nouvelle.</p>
<p>Le problème c&#8217;est que <strong>ce robot a planté</strong>: il a remplacé l&#8217;ancienne donnée du cache invalide par une donnée erronée donc encore détecté comme invalide!</p>
<p>Quand un utilisateur se connectait sur le site (pour faire simple&#8230;) le cache était consulté, les données considérées comme obsoletes (<strong>cache miss</strong>) et les vrais données demandées aux bases. Ces dernières se sont retrouvées surchargées de requêtes.</p>
<p>Les serveurs se sont vite écroulés, ne pouvant assumer tout le travail qui leur était demandé, beaucoup plus que ce qu&#8217;ils peuvent traiter. Les ingénieurs n&#8217;ont pas eu d&#8217;autres alternatives que de <strong>couper le réseau entre les bases et les frontaux</strong> web (reboot). Le site était donc complétement indisponible a ce moment (ainsi que les boutons &#8220;j&#8217;aime&#8221; présent sur tous les sites tiers d&#8217;ailleurs).</p>
<p>Les connections ont étés réouvertes progressivement, afin de reconstruire tous les caches en toute sécurité.</p>
<p>Le monde entier a alors repris un activité normale &#8230; <img src='http://www.blog-nouvelles-technologies.net/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>ps:</p>
<p>Si vous êtes technicien, voici un lien, sur mon blog technique, vers une <a href="http://www.mathieu-elie.net/conference-scale-at-facebook-de-aditya-agarwal/">conférence d&#8217;un directeur technique de facebook</a> par laquelle j&#8217;ai appris beaucoup sur l&#8217;architecture de ce réseau social.</p>
<p><a rel="attachment wp-att-1509" href="http://www.blog-nouvelles-technologies.net/facebook-down-vulgarisation-de-lincident-technique/facebook-outage/"><br />
</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.blog-nouvelles-technologies.net/facebook-down-vulgarisation-de-lincident-technique/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Méthodes avancées de développement logiciel (entre autres)</title>
		<link>http://www.blog-nouvelles-technologies.net/methodes-avancees-de-developement-logiciel-entre-autres/</link>
		<comments>http://www.blog-nouvelles-technologies.net/methodes-avancees-de-developement-logiciel-entre-autres/#comments</comments>
		<pubDate>Sat, 04 Jul 2009 15:52:14 +0000</pubDate>
		<dc:creator>mathieu</dc:creator>
				<category><![CDATA[Liens]]></category>
		<category><![CDATA[Technique IT]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[architecture]]></category>
		<category><![CDATA[autoconf]]></category>
		<category><![CDATA[automake]]></category>
		<category><![CDATA[autotools]]></category>
		<category><![CDATA[c++]]></category>
		<category><![CDATA[daemon]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[interface]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[object-oriented]]></category>
		<category><![CDATA[oo]]></category>
		<category><![CDATA[ood]]></category>
		<category><![CDATA[oop]]></category>
		<category><![CDATA[patterns]]></category>
		<category><![CDATA[principles]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[refactoring]]></category>
		<category><![CDATA[sighup]]></category>
		<category><![CDATA[tdd]]></category>
		<category><![CDATA[test]]></category>
		<category><![CDATA[unit]]></category>
		<category><![CDATA[unittesting]]></category>
		<category><![CDATA[xp]]></category>

		<guid isPermaLink="false">http://www.mathieuelie.net/?p=913</guid>
		<description><![CDATA[Le Refactoring &#124; Crossbow Labs Extreme Programming &#124; Crossbow Labs # Pratiques Les tests unitaires &#124; Crossbow Labs Principes avancés de conception objet &#124; Crossbow Labs Fat Agnus » Program to an interface, not an implementation Principles Of Object Oriented Design ArticleS.UncleBob.PrinciplesOfOod My. Debian. » java as a daemon service Using Automake and Autoconf with C++ Native C++ &#8220;Hello World&#8221; working in emulator &#8211; Android and G1 Forums, Mods, Hacks, News, Downloads, Skins, Themes, and more! &#124; ModMyGphone http://www.danlj.org/lad/src/sighup.c Daemon en c qui catch les appels sighup. Court et instructif.]]></description>
			<content:encoded><![CDATA[<h5><a href="http://www.crossbowlabs.com/dossiers/refactoring">Le Refactoring | Crossbow Labs</a></h5>
<h5><a href="http://www.crossbowlabs.com/dossiers/extreme-programming">Extreme Programming | Crossbow Labs</a></h5>
<p># Pratiques</p>
<h5><a href="http://www.crossbowlabs.com/dossiers/tests-unitaires">Les tests unitaires | Crossbow Labs</a></h5>
<h5><a href="http://www.crossbowlabs.com/dossiers/principes-avances-oo">Principes avancés de conception objet | Crossbow Labs</a></h5>
<h5><a href="http://fatagnus.com/program-to-an-interface-not-an-implementation/">Fat Agnus » Program to an interface, not an implementation</a></h5>
<h5><a href="http://c2.com/cgi/wiki?PrinciplesOfObjectOrientedDesign">Principles Of Object Oriented Design</a></h5>
<h5><a href="http://butunclebob.com/ArticleS.UncleBob.PrinciplesOfOod">ArticleS.UncleBob.PrinciplesOfOod</a></h5>
<h5><a href="http://mydebian.blogdns.org/?p=172">My. Debian. » java as a daemon service</a></h5>
<h5><a href="http://www.openismus.com/documents/linux/automake/automake.shtml">Using Automake and Autoconf with C++</a></h5>
<h5><a href="http://modmygphone.com/forums/showthread.php?t=90">Native C++ &#8220;Hello World&#8221; working in emulator &#8211; Android and G1 Forums, Mods, Hacks, News, Downloads, Skins, Themes, and more! | ModMyGphone</a></h5>
<h5><a href="http://www.danlj.org/lad/src/sighup.c">http://www.danlj.org/lad/src/sighup.c</a></h5>
<p>Daemon en c qui catch les appels sighup. Court et instructif.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.blog-nouvelles-technologies.net/methodes-avancees-de-developement-logiciel-entre-autres/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>7 Blogs techniques officiels</title>
		<link>http://www.blog-nouvelles-technologies.net/7-blogs-techniques-officiels/</link>
		<comments>http://www.blog-nouvelles-technologies.net/7-blogs-techniques-officiels/#comments</comments>
		<pubDate>Thu, 19 Mar 2009 19:16:39 +0000</pubDate>
		<dc:creator>mathieu</dc:creator>
				<category><![CDATA[Technique IT]]></category>
		<category><![CDATA[acid]]></category>
		<category><![CDATA[amazon]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[architecture]]></category>
		<category><![CDATA[blog]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[engineering]]></category>
		<category><![CDATA[facebook]]></category>
		<category><![CDATA[flickr]]></category>
		<category><![CDATA[linkedin]]></category>
		<category><![CDATA[scalability]]></category>
		<category><![CDATA[secondLife]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[technology]]></category>
		<category><![CDATA[twitter]]></category>
		<category><![CDATA[web2.0]]></category>
		<category><![CDATA[WebServices]]></category>

		<guid isPermaLink="false">http://www.mathieuelie.net/?p=601</guid>
		<description><![CDATA[Les blogs techniques officiels de services comme twitter ou digg peuvent être de très bonnes sources d&#8217;information sur ce qui se passe dans le moteur de ces services. Quelles technologies utilisent-ils? Quelles problématique rencontrent-ils? Qu&#8217;en est il des interruptions de services? Ces blogs sont aussi écrits par des techniciens qui souhaitent partager leurs expérience professionnelle. Communauté: Technology &#8211; Second Life Blogs Twitter Blog Amazon Web Services Blog The LinkedIn Blog Engineering « Facebook &#124; Engineering @ Facebook Code: Flickr Developer Blog Digg the Blog » Digg Technology]]></description>
			<content:encoded><![CDATA[<h5>Les blogs techniques officiels de services comme twitter ou digg peuvent être de très bonnes sources d&#8217;information sur ce qui se passe dans le moteur de ces services.</h5>
<p>Quelles technologies utilisent-ils? Quelles problématique rencontrent-ils? Qu&#8217;en est il des interruptions de services? Ces blogs sont aussi écrits par des techniciens qui souhaitent partager leurs expérience professionnelle.</p>
<h5><a href="https://blogs.secondlife.com/community/technology">Communauté: Technology &#8211; Second Life Blogs</a></h5>
<h5><a href="http://blog.twitter.com/">Twitter Blog</a></h5>
<h5><a href="http://aws.typepad.com/">Amazon Web Services Blog</a></h5>
<h5><a href="http://blog.linkedin.com/category/engineering/">The LinkedIn Blog Engineering «</a></h5>
<h5><a href="http://www.facebook.com/FacebookEngineering">Facebook | Engineering @ Facebook</a></h5>
<h5><a href="http://code.flickr.com/blog/">Code: Flickr Developer Blog</a></h5>
<h5><a href="http://blog.digg.com/?cat=14">Digg the Blog » Digg Technology</a></h5>
]]></content:encoded>
			<wfw:commentRss>http://www.blog-nouvelles-technologies.net/7-blogs-techniques-officiels/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Architecture de digg, dailymotion ou wikipedia</title>
		<link>http://www.blog-nouvelles-technologies.net/architecture-de-digg-dailymotion-ou-wikipedia/</link>
		<comments>http://www.blog-nouvelles-technologies.net/architecture-de-digg-dailymotion-ou-wikipedia/#comments</comments>
		<pubDate>Mon, 16 Mar 2009 06:00:49 +0000</pubDate>
		<dc:creator>mathieu</dc:creator>
				<category><![CDATA[Technique IT]]></category>
		<category><![CDATA[architecture]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[systeme]]></category>

		<guid isPermaLink="false">http://www.mathieuelie.net/?p=592</guid>
		<description><![CDATA[On ne sait pas toujours comment ca se passe techniquement chez de gros services comme facebook, digg ou wikipedia. Le site haut disponibilité sera une bonne entrée en matiére si vous avez, comme moi, la curiosité d&#8217;en savoir un peu plus sur l&#8217;architecture de ces géants du web. Des études de cas sont détaillées avec leurs sources.  Sur la home page vous avez un fil d&#8217;infos avec les dernières news. Je suis déja fan de ce site peut être aussi parce qu&#8217;il comblait chez moi un manque d&#8217;infos de cette nature. On imagine toujours que les gros sites gérent de grosses fermes de serveurs, un gros volumes de données, mais tous cela ne s&#8217;empile pas n&#8217;importe comment! Les architectes systèmes font preuve d&#8217;ingéniosité, et leurs idées sont stratégiques pour leur entreprise et leur compétitivité: c&#8217;est cela que je trouve admirable. Si de votre coté vous connaissez d&#8217;autres sources d&#8217;informations sur l&#8217;architecture des services n&#8217;hésitez pas a le poster en commentaire! Haute Disponibité]]></description>
			<content:encoded><![CDATA[<h5>On ne sait pas toujours comment ca se passe techniquement chez de gros services comme facebook, digg ou wikipedia. Le site <a href="http://www.haute-disponibilite.net">haut disponibilité</a> sera une bonne entrée en matiére si vous avez, comme moi, la curiosité d&#8217;en savoir un peu plus sur l&#8217;architecture de ces géants du web.</h5>
<p>Des <a href="http://www.haute-disponibilite.net/etude-de-cas/">études de cas</a> sont détaillées avec leurs sources.  Sur la <a href="http://www.haute-disponibilite.net/">home page</a> vous avez un fil d&#8217;infos avec les dernières news. Je suis déja <strong>fan de ce site</strong> peut être aussi parce qu&#8217;il comblait chez moi un manque d&#8217;infos de cette nature. On imagine toujours que les gros sites gérent de grosses fermes de serveurs, un gros volumes de données, mais tous cela ne s&#8217;empile pas n&#8217;importe comment!</p>
<p>Les architectes systèmes font preuve d&#8217;ingéniosité, et <strong>leurs idées sont stratégiques</strong> pour leur entreprise et leur compétitivité: c&#8217;est cela que je trouve admirable.</p>
<p>Si de votre coté vous connaissez d&#8217;autres sources d&#8217;informations sur l&#8217;architecture des services n&#8217;hésitez pas a le poster en commentaire!</p>
<h5><a href="http://www.haute-disponibilite.net/">Haute Disponibité</a></h5>
]]></content:encoded>
			<wfw:commentRss>http://www.blog-nouvelles-technologies.net/architecture-de-digg-dailymotion-ou-wikipedia/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

