<?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>Sol Young &#187; Architecture</title>
	<atom:link href="http://solyoung.com/category/architecture/feed/" rel="self" type="application/rss+xml" />
	<link>http://solyoung.com</link>
	<description>Out In His Elements</description>
	<lastBuildDate>Sun, 31 Jan 2010 00:03:33 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Amazon AWS releases CloudFront &#8211; here&#8217;s how it works</title>
		<link>http://solyoung.com/2008/11/19/amazon-aws-releases-cloudfront/</link>
		<comments>http://solyoung.com/2008/11/19/amazon-aws-releases-cloudfront/#comments</comments>
		<pubDate>Wed, 19 Nov 2008 12:33:12 +0000</pubDate>
		<dc:creator>Sol Young</dc:creator>
				<category><![CDATA[Amazon]]></category>
		<category><![CDATA[Architecture]]></category>
		<category><![CDATA[Cloud]]></category>
		<category><![CDATA[Web Services]]></category>

		<guid isPermaLink="false">http://solyoung.com/?p=354</guid>
		<description><![CDATA[<p><a href="http://solyoung.com/wp-content/uploads/2008/11/cloudfront.png"><img class="alignnone size-medium wp-image-355" title="CloudFront" src="http://solyoung.com/wp-content/uploads/2008/11/cloudfront-300x71.png" alt="" width="300" height="71" /></a></p>
<p>Amazon released <a href="http://aws.amazon.com/cloudfront/">CloudFront</a> to public beta today. It&#8217;s a simple way to get free content publicly available to the edge of the network (closest to the recipient downloader).</p>
<p>From the AWS announcement:</p>
<blockquote><p>Amazon CloudFront is a web service for content delivery. It integrates with other Amazon Web Services to give developers and businesses</p></blockquote><p>&#8230;</p>]]></description>
			<content:encoded><![CDATA[<p><a href="http://solyoung.com/wp-content/uploads/2008/11/cloudfront.png"><img class="alignnone size-medium wp-image-355" title="CloudFront" src="http://solyoung.com/wp-content/uploads/2008/11/cloudfront-300x71.png" alt="" width="300" height="71" /></a></p>
<p>Amazon released <a href="http://aws.amazon.com/cloudfront/">CloudFront</a> to public beta today. It&#8217;s a simple way to get free content publicly available to the edge of the network (closest to the recipient downloader).</p>
<p>From the AWS announcement:</p>
<blockquote><p>Amazon CloudFront is a web service for content delivery. It integrates with other Amazon Web Services to give developers and businesses an easy way to distribute content to end users with low latency, high data transfer speeds, and no commitments.</p></blockquote>
<p>Here&#8217;s how it works:</p>
<ol>
<li>Upload your content files to S3.</li>
<li>Call the CloudFront API, specifying the S3 bucket.</li>
<li>Use your S3 bucket&#8217;s already created domain and filename in your website (no change here).</li>
<li>When a customer clicks a link the closest file is automatically routed.</li>
</ol>
<p>UPDATE:<br />
So, uhhh, what&#8217;s special here? From AWS&#8217;s description, CloudFront is simply setting a flag for your S3 bucket that means it&#8217;s to be distributed around the cloud or remain in a single location.</p>
<p>This should be an addition to the S3 service, not a separate service. The added step of having to let CloudFront know you want the edge network coverage is an unnecessary chore. It would be better as an attribute for the S3 bucket. This would make S3 a stronger brand, keep it clearer for those navigating AWS, and simplify the process of pushing content (1 less step).</p>
<p>Here&#8217;s how much it costs:<br />
<span id="more-354"></span></p>
<h2>United States Edge Locations</h2>
<p>$0.170 per GB – first 10 TB / month data transfer out<br />
$0.120 per GB – next 40 TB / month data transfer out<br />
$0.100 per GB – next 100 TB / month data transfer out<br />
$0.090 per GB – data transfer out / month over 150 TB</p>
<h3>Requests</h3>
<p>$0.010 per 10,000 GET requests</p>
<h2>European Edge Locations</h2>
<p>$0.170 per GB – first 10 TB / month data transfer out<br />
$0.120 per GB – next 40 TB / month data transfer out<br />
$0.100 per GB – next 100 TB / month data transfer out<br />
$0.090 per GB – data transfer out / month over 150 TB</p>
<h3>Requests</h3>
<p>$0.012 per 10,000 GET requests</p>
<h2>Hong Kong Edge Locations</h2>
<p>$0.210 per GB – first 10 TB / month data transfer out<br />
$0.160 per GB – next 40 TB / month data transfer out<br />
$0.140 per GB – next 100 TB / month data transfer out<br />
$0.130 per GB – data transfer out / month over 150 TB</p>
<h3>Requests</h3>
<p>$0.012 per 10,000 GET requests</p>
<h2>Japan Edge Locations</h2>
<p>$0.220 per GB – first 10 TB / month data transfer out<br />
$0.168 per GB – next 40 TB / month data transfer out<br />
$0.147 per GB – next 100 TB / month data transfer out<br />
$0.137 per GB – data transfer out / month over 150 TB</p>
<h3>Requests</h3>
<p>$0.013 per 10,000 GET requests</p>
]]></content:encoded>
			<wfw:commentRss>http://solyoung.com/2008/11/19/amazon-aws-releases-cloudfront/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Chrome after a day of use</title>
		<link>http://solyoung.com/2008/09/03/chrome-after-a-day-of-use/</link>
		<comments>http://solyoung.com/2008/09/03/chrome-after-a-day-of-use/#comments</comments>
		<pubDate>Wed, 03 Sep 2008 12:30:16 +0000</pubDate>
		<dc:creator>Sol Young</dc:creator>
				<category><![CDATA[Architecture]]></category>
		<category><![CDATA[Chrome]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Internet Explorer]]></category>
		<category><![CDATA[Prediction]]></category>
		<category><![CDATA[Safari]]></category>

		<guid isPermaLink="false">http://solyoung.com/?p=288</guid>
		<description><![CDATA[<p><img class="alignnone size-full wp-image-290" title="chrome_comic_snippet" src="http://solyoung.com/wp-content/uploads/2008/09/chrome_comic_snippet.jpg" alt="" width="500" height="257" /></p>
<p>Been using Google&#8217;s <a href="http://www.google.com/chrome">Chrome browser</a> for a day, and so far it&#8217;s a great experience.</p>
<p>No. Sorry. That&#8217;s an understatement. It&#8217;s <em>revolutionary</em>. As the <a href="http://www.google.com/googlebooks/chrome/">comic</a> describes (yes, Google released a comic to introduce Chrome), this browser takes the web to impossible places. It makes the web more like an operating system, allowing each&#8230;</p>]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone size-full wp-image-290" title="chrome_comic_snippet" src="http://solyoung.com/wp-content/uploads/2008/09/chrome_comic_snippet.jpg" alt="" width="500" height="257" /></p>
<p>Been using Google&#8217;s <a href="http://www.google.com/chrome">Chrome browser</a> for a day, and so far it&#8217;s a great experience.</p>
<p>No. Sorry. That&#8217;s an understatement. It&#8217;s <em>revolutionary</em>. As the <a href="http://www.google.com/googlebooks/chrome/">comic</a> describes (yes, Google released a comic to introduce Chrome), this browser takes the web to impossible places. It makes the web more like an operating system, allowing each site (tab) an independent process and memory allocation, improving javascript speed &#8211; via a virtual machine &#8211; by orders of magnitude, and integrating more cleanly with <a href="http://gears.google.com/">Gears.</a></p>
<p>I&#8217;ve liked the browser enough to find Windows more useful than OS X this morning. A strange feeling indeed.</p>
<p>I&#8217;d mentioned in an email yesterday that the question was whether Chrome would quickly grab users away from Internet Explorer and other browsers or if it would be incremental in its chipping. My expectation is that it will still be chipping, but it&#8217;s going to be much faster than expected.</p>
<p>Just as the Google search tool grew wildly popular purely out of speed and relevance, the Chrome browser will gain huge momentum because of speed and relevance. Since there are still massive amounts of IE6 installations out there (proving that not everyone goes out and upgrades) a swing won&#8217;t happen over night, but it will gain ground more quickly than Firefox or Safari (Opera not mentioned since Chrome pretty much destroys the reason for Opera&#8217;s existance &#8211; speed).</p>
<p>A couple questions are begged&#8230; Is this where we really see web 2.0 take hold? I think so. And how does this affect Google in terms of monopolizing the web? They now own search and could quickly dominate the browser.</p>
]]></content:encoded>
			<wfw:commentRss>http://solyoung.com/2008/09/03/chrome-after-a-day-of-use/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Easy way for spammers to follow more than 2,000 on Twitter (and get better results)</title>
		<link>http://solyoung.com/2008/08/12/easy-way-for-spammers-to-follow-more-than-2000-on-twitter/</link>
		<comments>http://solyoung.com/2008/08/12/easy-way-for-spammers-to-follow-more-than-2000-on-twitter/#comments</comments>
		<pubDate>Wed, 13 Aug 2008 03:50:58 +0000</pubDate>
		<dc:creator>Sol Young</dc:creator>
				<category><![CDATA[Architecture]]></category>
		<category><![CDATA[Facebook]]></category>
		<category><![CDATA[Micro-blogging]]></category>
		<category><![CDATA[Microblogging]]></category>
		<category><![CDATA[Twitter]]></category>

		<guid isPermaLink="false">http://solyoung.com/?p=278</guid>
		<description><![CDATA[<p><a href="http://www.sgeier.net/fractals/indexe.php"><img class="alignnone size-full wp-image-279" title="Infinity" src="http://solyoung.com/wp-content/uploads/2008/08/infinity.jpg" alt="" width="400" height="300" /></a></p>
<p>The <a title="Link to Dave Winer's Scripting.com" href="http://www.scripting.com/stories/2008/08/11/twitterLimitingFollowersTo.html">2,000 follower limit</a>, it would seem, was put in place to prevent mass following and spam on Twitter. This was pretty frustrating for me since I fell in to their beyond-the-limit zone (I followed over 6,000 people because I loved the information, but couldn&#8217;t add any more).&#8230;</p>]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.sgeier.net/fractals/indexe.php"><img class="alignnone size-full wp-image-279" title="Infinity" src="http://solyoung.com/wp-content/uploads/2008/08/infinity.jpg" alt="" width="400" height="300" /></a></p>
<p>The <a title="Link to Dave Winer's Scripting.com" href="http://www.scripting.com/stories/2008/08/11/twitterLimitingFollowersTo.html">2,000 follower limit</a>, it would seem, was put in place to prevent mass following and spam on Twitter. This was pretty frustrating for me since I fell in to their beyond-the-limit zone (I followed over 6,000 people because I loved the information, but couldn&#8217;t add any more).</p>
<p>I&#8217;m not complaining too much, as I&#8217;m enjoying the <a href="http://solyoung.com/2008/08/09/returning-to-traditional-use-of-twitter/">more traditional use of my Twitter account</a> for now, but this is a ridiculously short-sighted fix.</p>
<p>I haven&#8217;t seen much attention drawn to the following facts (<em>pun wasn&#8217;t intended</em>):</p>
<ol>
<li>People are more likely to recipricate a follow request from someone with a low following/friend count.</li>
<li>There isn&#8217;t a legitimate way to prevent someone from having multiple Twitter accounts (accounts are tied to email addresses).</li>
<li>The Twitter API limits are based on account, not where the call is coming from (one server can make many requests on behalf of other accounts).</li>
</ol>
<p>From the above simple observations, one can see the easy way to follow an unlimited number of people.</p>
<ol>
<li>Create a large number of accounts.</li>
<li>Follow a smaller number of people with each account (you&#8217;ll have better reciprocation).</li>
<li>Follow a lot of people (the API limitations will apply per account, so your follows-per-hour will actually be quite large).</li>
</ol>
<p>The people running Twitter are great. They&#8217;re really trying to do the right thing. So maybe I&#8217;m completely wrong when I anticipate the above and say that this looks like a Facebook move. Facebook&#8217;s 5,000 friend limit works for Facebook. Facebook&#8217;s API is advanced and robust and complicated enough to not get terribly nailed by multi-account mass spam following.</p>
<p>Additionally, the information load on Facebook is different. You get a clear picture of who a person is that is friending you. You&#8217;re given enough information to make a decision. On Twitter, this isn&#8217;t the case.</p>
<p>So what&#8217;s going to happen?</p>
<ol>
<li>Spammers are already adapting to the limitation, as described above.</li>
<li>Tweeple will stop trusting low follow-count users (do you trust an eBay user without feedback?)</li>
<li>Twitter&#8217;s servers will still be inundated and over capacity.</li>
</ol>
<p>I blame it on <a title="@scobleizer" href="http://scobleizer.com/2008/05/30/twitter-blames-its-users/">Scoble</a>&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://solyoung.com/2008/08/12/easy-way-for-spammers-to-follow-more-than-2000-on-twitter/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>How to build a really successful web 2.0 service on top of another service and screw it all up</title>
		<link>http://solyoung.com/2008/07/30/how-to-build-a-really-successful-web-20-service-and-screw-it-up/</link>
		<comments>http://solyoung.com/2008/07/30/how-to-build-a-really-successful-web-20-service-and-screw-it-up/#comments</comments>
		<pubDate>Thu, 31 Jul 2008 04:02:58 +0000</pubDate>
		<dc:creator>Sol Young</dc:creator>
				<category><![CDATA[Architecture]]></category>
		<category><![CDATA[Etiquette]]></category>
		<category><![CDATA[Flickr]]></category>
		<category><![CDATA[GPS]]></category>
		<category><![CDATA[Life Streaming]]></category>
		<category><![CDATA[Micro-blogging]]></category>
		<category><![CDATA[Microblogging]]></category>
		<category><![CDATA[SnapTweet]]></category>
		<category><![CDATA[Social Networking]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[TwitPic]]></category>
		<category><![CDATA[Twitter]]></category>
		<category><![CDATA[Web Services]]></category>

		<guid isPermaLink="false">http://solyoung.com/?p=261</guid>
		<description><![CDATA[<p><img class="alignnone size-full wp-image-262" title="TWICECREAM!" src="http://solyoung.com/wp-content/uploads/2008/07/icecream.jpg" alt="" width="269" height="300" /></p>
<h5><em>Twicecream</em> &#8211; a fake service to demonstrate a point about single sign-on&#8230;</h5>
<p>In web 2.0 there is a determination to screw up potentially great services. It&#8217;s my number #1 pet peeve with software development these days. Here&#8217;s a fictitious example of a service you might create&#8230;</p>
<p>You&#8217;ve built a service that automatically <a href="http://www.twitter.com">Twitters</a>&#8230;</p>]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone size-full wp-image-262" title="TWICECREAM!" src="http://solyoung.com/wp-content/uploads/2008/07/icecream.jpg" alt="" width="269" height="300" /></p>
<h5><em>Twicecream</em> &#8211; a fake service to demonstrate a point about single sign-on&#8230;</h5>
<p>In web 2.0 there is a determination to screw up potentially great services. It&#8217;s my number #1 pet peeve with software development these days. Here&#8217;s a fictitious example of a service you might create&#8230;</p>
<p>You&#8217;ve built a service that automatically <a href="http://www.twitter.com">Twitters</a> your geo-position and the name of an ice cream parlor when you&#8217;re in front of it. Your phone buzzes when an ice cream parlor is detected and begins sending photos to <a href="http://www.snaptweet.com">SnapTweet</a> and <a href="http://www.twitpic.com">TwitPic</a>, including <a href="http://www.zagats.com">Zagats</a> ratings and commentary. Other patrons respond back and generate conversations. This is your social network: <em>Twicecream</em> &#8211; a social network for twittering ice cream enthusiasts.</p>
<blockquote><p>In front of Ben &amp; Jerry&#8217;s on the Wharf, Zagats 4-stars, pics: <a title="ICE CREAM!" href="http://www.flickr.com/photos/solyoung/2687242982/in/set-72157606283056371/">http://twicecream.com/abc123</a></p></blockquote>
<p>Congratulations! You just failed.</p>
<p>You didn&#8217;t fail by creating a service few would use. You failed because you didn&#8217;t utilize the authentication mechanism your patrons preferred. You built an unnecessary barrier to your garden by requiring an unnecessary account creation. Don&#8217;t do this, it&#8217;s arrogant and inefficient.</p>
<p>Your patrons have Twitter accounts. Twitter has an API. Your service should have asked the patron to log in with their Twitter credentials.</p>
<p>This isn&#8217;t just for social networking. This goes for all web services. SaaS solutions that require secondary account creations are a bad idea. Single sign-on, whenever possible, should be used.</p>
<p>The whole idea is to simplify access to what the customer needs. If you&#8217;re requiring unnecessary account creations, you&#8217;re screwing it all up.</p>
]]></content:encoded>
			<wfw:commentRss>http://solyoung.com/2008/07/30/how-to-build-a-really-successful-web-20-service-and-screw-it-up/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Crossing the streams &#8211; large numbers of Twitter updates</title>
		<link>http://solyoung.com/2008/06/29/crossing-the-streams-large-numbers-of-twitter-updates/</link>
		<comments>http://solyoung.com/2008/06/29/crossing-the-streams-large-numbers-of-twitter-updates/#comments</comments>
		<pubDate>Sun, 29 Jun 2008 14:51:50 +0000</pubDate>
		<dc:creator>Sol Young</dc:creator>
				<category><![CDATA[Architecture]]></category>
		<category><![CDATA[Blogging]]></category>
		<category><![CDATA[Database]]></category>
		<category><![CDATA[Micro-blogging]]></category>
		<category><![CDATA[Microblogging]]></category>
		<category><![CDATA[Social Networking]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Twitter]]></category>
		<category><![CDATA[Web Services]]></category>

		<guid isPermaLink="false">http://solyoung.com/?p=212</guid>
		<description><![CDATA[<p><img class="alignnone size-full wp-image-213" title="Crossing The Streams" src="http://solyoung.com/wp-content/uploads/2008/06/cross-the-streams.jpg" alt="" width="418" height="319" /></p>
<p>Chris Bilson (<a href="http://twitter.com/cbilson">@cbilson</a>) had a good description regarding my <a href="http://solyoung.com/2008/06/27/twitters-one-to-many-scaling-impossible/">post about Twitter&#8217;s scaling/architecture challenge</a>.</p>
<blockquote><p>&#8220;<span id="msgtxt845097138" class="msgtxt en">Kevin Rose and Leo Laporte tweet at the same time = crossing the streams&#8221;</span></p></blockquote>
<p>I dunno if Proton Packs have exponential load challenges, but the end result for a server can feel similar. Is my post I pointed&#8230;</p>]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone size-full wp-image-213" title="Crossing The Streams" src="http://solyoung.com/wp-content/uploads/2008/06/cross-the-streams.jpg" alt="" width="418" height="319" /></p>
<p>Chris Bilson (<a href="http://twitter.com/cbilson">@cbilson</a>) had a good description regarding my <a href="http://solyoung.com/2008/06/27/twitters-one-to-many-scaling-impossible/">post about Twitter&#8217;s scaling/architecture challenge</a>.</p>
<blockquote><p>&#8220;<span id="msgtxt845097138" class="msgtxt en">Kevin Rose and Leo Laporte tweet at the same time = crossing the streams&#8221;</span></p></blockquote>
<p>I dunno if Proton Packs have exponential load challenges, but the end result for a server can feel similar. Is my post I pointed out that Twitter has to determine delivery options and potentially deliver between 100 million and 1 billion updates per day.</p>
<p>But that&#8217;s in a day. 1 billion messages in a day are a piece of cake when spread over 24 hours. What if 1 billion messages have to be delivered in an hour? Or all at once?</p>
<p>Take my list of the top-10 Twitter accounts and imagine them all at TED, WWDC, Google I/O, or your local unconference. These ten users, if each sends an update around the same time create 321,928 messages that need delivery (total number of followers for top-10 accounts). This is an awesome amount of message delivery. If those ten users live-blog or get conversational and send ten updates in an hour&#8230; 3,219,280 (again, that&#8217;s from only 10 users).</p>
<p>I don&#8217;t illustrate this to state it&#8217;s these power user&#8217;s fault. Absolutely the opposite. They&#8217;re generating amazing amounts of traffic, which is a wonderful thing, and the algorithms are the problem.</p>
<p>It&#8217;s possible to optimize algorithms and modify systems for maximum performance. I bring up Twitter&#8217;s challenges because I&#8217;m wondering if this is a challenge beyond present day computing.</p>
<p>To open some minds, here&#8217;s an impossibility often overlooked: <a href="http://www.worsleyschool.net/science/files/deck/ofcards.html">Huge numbers in a deck of cards</a> (just to show impossibilities can stem from small initial numbers).</p>
]]></content:encoded>
			<wfw:commentRss>http://solyoung.com/2008/06/29/crossing-the-streams-large-numbers-of-twitter-updates/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Twitter&#8217;s one-to-many scaling impossible?</title>
		<link>http://solyoung.com/2008/06/27/twitters-one-to-many-scaling-impossible/</link>
		<comments>http://solyoung.com/2008/06/27/twitters-one-to-many-scaling-impossible/#comments</comments>
		<pubDate>Fri, 27 Jun 2008 13:17:48 +0000</pubDate>
		<dc:creator>Sol Young</dc:creator>
				<category><![CDATA[Architecture]]></category>
		<category><![CDATA[Blogging]]></category>
		<category><![CDATA[Flow]]></category>
		<category><![CDATA[Math]]></category>
		<category><![CDATA[Micro-blogging]]></category>
		<category><![CDATA[Microblogging]]></category>
		<category><![CDATA[Social Networking]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Twitter]]></category>
		<category><![CDATA[XMPP]]></category>

		<guid isPermaLink="false">http://solyoung.com/?p=209</guid>
		<description><![CDATA[<p><img class="alignnone size-full wp-image-210" title="Twitter Exponential" src="http://solyoung.com/wp-content/uploads/2008/06/twitterexponential.gif" alt="" width="312" height="197" /></p>
<p>Twitter has been having all kinds of scaling challenges. There have been hundreds, if not thousands, of posts on the subject. Dave Winer pushed an idea for <a href="http://www.scripting.com/stories/2008/01/16/aDecentralizedTwitter.html">a decentralized Twitter</a> (and has since admitted the <a href="http://www.scripting.com/stories/2008/05/11/whyDecentralizingTwitterIs.html">power of Twitter is in its centrality</a>). There is a single, simple, reason for Twitter&#8217;s challenges &#8211;&#8230;</p>]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone size-full wp-image-210" title="Twitter Exponential" src="http://solyoung.com/wp-content/uploads/2008/06/twitterexponential.gif" alt="" width="312" height="197" /></p>
<p>Twitter has been having all kinds of scaling challenges. There have been hundreds, if not thousands, of posts on the subject. Dave Winer pushed an idea for <a href="http://www.scripting.com/stories/2008/01/16/aDecentralizedTwitter.html">a decentralized Twitter</a> (and has since admitted the <a href="http://www.scripting.com/stories/2008/05/11/whyDecentralizingTwitterIs.html">power of Twitter is in its centrality</a>). There is a single, simple, reason for Twitter&#8217;s challenges &#8211; Math is against them.</p>
<p>The facility of communication on the Twitter service is absolutely outstanding. I&#8217;ve written extensively about using it to receive an amazing amount of quality information in my series on <a href="http://solyoung.com/?s=flow"><em>flow</em></a>.</p>
<p>I originally questioned the scaling ability of the service prior to SXSW, but when <a href="http://eastcoastblogging.com/2008/03/08/2-days-of-sxsw-twitter-going-strong/">the service held up</a> I went back to the drawing board to make sure my numbers were correct.</p>
<p>Before continuing, let&#8217;s establish the basics about the service so the math will make sense&#8230;</p>
<ul>
<li>Each Twitter account can follow any other Twitter account (bear with me and forget those accounts with private updates).</li>
<li>Messages travel in one direction, from the updater to the follower.</li>
<li>Each account has updates from other accounts it follows placed in its timeline.</li>
<li>A Twitter account can selectively receive pushed updates immediately via instant messenger and SMS in addition to having an update added to its timeline.</li>
<li>An update added to an account&#8217;s timeline may or may not be push based (lets assume it&#8217;s demand driven, or pull based).</li>
<li>An update sent to an account from an account denoted as SMS or IM announcement is push based (there is no other way to send an update &#8211; it must be actively pushed from the server).</li>
<li>The mere possibility of an update needing to be pushed requires the system to check with each follower&#8217;s settings, thus requiring analysis of each follower for each update.</li>
</ul>
<h3>A warm-up equation</h3>
<p>If there are one hundred (100) users and each user follows ten (10) fellow users, and each user sends ten (10) updates per day, assuming all updates are push-based, how many updates are sent?</p>
<p><span id="more-209"></span>The answer is 10,000 &#8211; each sent update (100 users x 10 updates) is forked out to 10 followers who have requested push updates. This is a <em>very</em> large number of updates to send out via SMS or IM compared to the base of users.</p>
<p><em><strong>A very important fact: It doesn&#8217;t matter if a user follows with the intention of receiving an SMS or IM update. The possibility of an updating needing to be pushed requires Twitter to examine every follower when an update is received.</strong></em></p>
<p>From 1999 to 2004 I worked as a software engineer at Mplayer (who then changed names to HearMe, who then sold their video technology to LIvVE, who then was bought by GameSpy).</p>
<p>As with any chat room, the scaling is similar to Twitter. We had to restrict rooms to 500 users (and had insanely reduced reliability as we approached 500). As shown with the warm-up, each message is forked out to every user. We capped at 500 in a chat room because each user in a room contributes some amount of messages, and therefore as users join a room the traffic grows <em>exponentially</em>.</p>
<h3>Official and unofficial numbers</h3>
<p>According to Twitter&#8217;s <a href="http://blog.twitter.com/2008/02/twitter-stat-relationship-distribution.html">blog post with stats</a>, 50% of the Twitter population has 10 followers. 10% of users have 80 or more followers. According to <a href="http://www.techcrunch.com/2008/04/29/end-of-speculation-the-real-twitter-usage-numbers/">TechCrunch&#8217;s research</a> there were 200,000 active users posting 3,000,000 updates per day (as of the end of April 2008). The average Twitter user posts 15 updates per day (3,000,000 divided by 200,000 = 15).</p>
<p>We&#8217;ll use Twitter&#8217;s percentages in their <a href="http://blog.twitter.com/2008/02/twitter-stat-relationship-distribution.html">blog post</a> and combine them with <a href="http://www.techcrunch.com/2008/04/29/end-of-speculation-the-real-twitter-usage-numbers/">TechCrunch&#8217;s numbers</a>. From this, we know there are 100,000 daily users with 10 followers and there are 20,000 people with 80 or more followers. To keep things simple, we&#8217;ll leave the other 80,000 daily users out of the equation for now.</p>
<ul>
<li>100,000 users x 15 updates per day x 10 followers = 15,000,000</li>
<li>20,000 users x 15 updates per day x 80 followers = 24,000,000</li>
</ul>
<p>For laughs, let&#8217;s put in the <a href="http://twitterholic.com">top 10 Twitter accounts</a> with the most followers (<a href="http://scobleizer.com/2008/05/30/twitter-blames-its-users/">beware, there were fights over this</a>).</p>
<ol>
<li>Kevin Rose x 15 updates per day x 46,646 followers = 699,690</li>
<li>Leo Laporte x 15 updates per day x 44,948 followers = 674,220</li>
<li>Barack Obama x 15 updates per day x 42,201 followers = 633,015</li>
<li>Alex Albrecht x 15 updates per day x 30,348 followers = 455,220</li>
<li>Jason Calacanis x 15 updates per day x 28,773 followers = 431,595</li>
<li>Robert Scoble x 15 updates per day x 28,037 followers = 420,555</li>
<li>Mars Phoenix (rover) x 15 updates per day x 26,828 followers = 402,420</li>
<li>Veronica x 15 updates per day x 26,199 followers = 392,985</li>
<li>John C. Dvorak x 15 updates per day x 24,102 followers = 361,530</li>
<li>MacRumors x 15 updates per day x 23,846 followers = 357,690</li>
</ol>
<p>Total of average users + top 10: 43,828,920 updates delivered per day.</p>
<p>And that&#8217;s half of the Twitter user base, mixed with a tiny fraction of the users who have large number of followers. Realistically, my estimate above is less than 10% of actual traffic because I&#8217;ve left out the 40% and have not included the thousands of highly popular users with more than 80 followers. Additionally, the number of followers for the people in the top-10 has grown between 50 and 100 percent since the end of April! (<a href="http://twitterholic.com">Twitterholic</a>)</p>
<p>This puts Twitter&#8217;s actual message analysis and possible delivery between 100,000,000 and 1,000,000,000 per day.</p>
<p>This also does not include a single page view or web service call to their servers. Those alone account for a <em>huge</em> amount of Twitter&#8217;s traffic.</p>
<h3>Compared to IM traffic</h3>
<p><a href="http://http://blogs.zdnet.com/ITFacts/?p=8425">Back in 2005</a> (ZDNet) there were 13.9 billion instant messages sent per day, with estimates of quadrupled traffic by 2009 (46.5 billion). Instant messaging is divided up among a few primary services and IMs are one-to-one. <a href="http://en.wikipedia.org/wiki/Instant_messaging">According to Wikipedia</a>, AOL AIM has 53 million users. If Twitter became as widely used as AIM, it would grow 265 times (53,000,000 divided by 200,000).</p>
<p>Take our findings for the number of delivered (or analyzed) updates on Twitter and multiply by this growth and you find Twitter has to be capable of delivering between 26.5 billion and 265 billion updates (probably much closer to the latter).</p>
<h3>How can Twitter scale?</h3>
<p>Decentralized XMPP is probably the answer, but I don&#8217;t really know. I can see the problem though. If they grow to having one million daily users, they have between 500 million and 5 billion messages to deliver. If they grow as popular and as relied upon as AIM, they&#8217;re staring straight in to their own exponential order of magnitude.</p>
]]></content:encoded>
			<wfw:commentRss>http://solyoung.com/2008/06/27/twitters-one-to-many-scaling-impossible/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Flow &#8211; Jabber/XMPP as an RSS over HTTP replacement</title>
		<link>http://solyoung.com/2008/04/18/flow-jabberxmpp-as-an-rss-over-http-replacement/</link>
		<comments>http://solyoung.com/2008/04/18/flow-jabberxmpp-as-an-rss-over-http-replacement/#comments</comments>
		<pubDate>Fri, 18 Apr 2008 12:45:28 +0000</pubDate>
		<dc:creator>Sol Young</dc:creator>
				<category><![CDATA[Architecture]]></category>
		<category><![CDATA[Flow]]></category>
		<category><![CDATA[FriendFeed]]></category>
		<category><![CDATA[RSS]]></category>
		<category><![CDATA[Web Services]]></category>
		<category><![CDATA[XMPP]]></category>

		<guid isPermaLink="false">http://solyoung.com/2008/04/18/flow-jabberxmpp-as-an-rss-over-http-replacement/</guid>
		<description><![CDATA[<p>Twitter on XMPP is just the beginning&#8230;</p>
<p><img src="http://solyoung.com/wp-content/uploads/2008/04/light.jpg" alt="Speed of Light" height="300" width="400" /></p>
<h6>Courtesy NASA Glenn Research Center</h6>
<p><font color="#ffffff">.</font></p>
<p>I&#8217;ve been using <a href="http://" title="@sol">Twitter</a> as a main source of news and entertainment (it&#8217;s entertaining and informative to have commentary coming in with links, events, articles, and photos). Most everything pertinent to my areas of interest are discussed, so the&#8230;</p>]]></description>
			<content:encoded><![CDATA[<p>Twitter on XMPP is just the beginning&#8230;</p>
<p><img src="http://solyoung.com/wp-content/uploads/2008/04/light.jpg" alt="Speed of Light" height="300" width="400" /></p>
<h6>Courtesy NASA Glenn Research Center</h6>
<p><font color="#ffffff">.</font></p>
<p>I&#8217;ve been using <a href="http://" title="@sol">Twitter</a> as a main source of news and entertainment (it&#8217;s entertaining and informative to have commentary coming in with links, events, articles, and photos). Most everything pertinent to my areas of interest are discussed, so the latest news is passed around as discussion.</p>
<p>As my series on <a href="http://solyoung.com/?s=flow">flow</a> describes, my Twitter stream is received through a <a href="http://www.google.com/talk/" title="Link to Google Talk">GTalk</a> client and I&#8217;m receiving about 30 to 40 tweets per minute.</p>
<p>This is a lot of incoming information. A lot more than one could read and keep up with all day. It&#8217;s valuable for periods of time&#8230; Jump in to the river, jump out. This is sort of like news.</p>
<p>Now, I love RSS. I spend a good hour per day reading feeds. I believe it will be the standard in syndication for years to come. And maybe it will be the format passed over <a href="http://xmpp.org">XMPP</a> channels, too. In using Twitter for my flow of information I have discovered how amazing real-time updates of news can be, and how HTTP (the current method of pulling RSS feeds from various servers) isn&#8217;t powerful enough.</p>
<p>Imagine Google Reader being push based. Instead of periodically receiving items every five, ten, or fifteen minutes. You receive new blog entries, articles, etc, within milliseconds of their publication. This becomes amazingly powerful because you are no longer reading what <em>happened, </em>you are participating in what is <em>happening</em><em>.</em></p>
<p>Comment systems become <a href="http://scobleizer.com/2008/04/13/twitter-and-inadequacy-er-the-great-friend-divide/" title="Link to Scobleizer">conversation engines</a>. Discussions and exchanges of information become natural, rather than one-way.</p>
<p>HTTP and web services, with their beautiful <a href="http://solyoung.com/2008/02/14/iofy-account-management-really-simple-development/">RESTfulness</a>, won&#8217;t be going away. They have a very effective place for on-demand pulls of data. What I&#8217;m describing is a move away from HTTP and web services which currently poll &#8211; the enablement of <a href="http://friendfeed.com/sol">FriendFeed</a>, <a href="http://twitter.com/sol">Twitter</a>, blogs, and news services to fire off announcements on a push basis&#8230;</p>
<p>Nobody wants to wait three minutes before receiving their next round of updates. We want it when it happens.</p>
]]></content:encoded>
			<wfw:commentRss>http://solyoung.com/2008/04/18/flow-jabberxmpp-as-an-rss-over-http-replacement/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>
