<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	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/"
		>
<channel>
	<title>Comments on: Twitter is getting a Mom</title>
	<atom:link href="http://almaer.com/blog/twitter-is-getting-a-mom/feed" rel="self" type="application/rss+xml" />
	<link>http://almaer.com/blog/twitter-is-getting-a-mom</link>
	<description>blogging about life, the universe, and everything tech</description>
	<lastBuildDate>Sat, 08 Sep 2012 07:06:53 -0700</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: bob</title>
		<link>http://almaer.com/blog/twitter-is-getting-a-mom/comment-page-1#comment-38782</link>
		<dc:creator>bob</dc:creator>
		<pubDate>Mon, 09 Jun 2008 13:32:20 +0000</pubDate>
		<guid isPermaLink="false">http://almaer.com/blog/twitter-is-getting-a-mom#comment-38782</guid>
		<description>old news

http://theabstracttruth.wordpress.com/2008/05/06/twitter-versus-the-stock-market/</description>
		<content:encoded><![CDATA[<p>old news</p>
<p><a href="http://theabstracttruth.wordpress.com/2008/05/06/twitter-versus-the-stock-market/" rel="nofollow">http://theabstracttruth.wordpress.com/2008/05/06/twitter-versus-the-stock-market/</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Tug</title>
		<link>http://almaer.com/blog/twitter-is-getting-a-mom/comment-page-1#comment-38700</link>
		<dc:creator>Tug</dc:creator>
		<pubDate>Wed, 28 May 2008 04:20:58 +0000</pubDate>
		<guid isPermaLink="false">http://almaer.com/blog/twitter-is-getting-a-mom#comment-38700</guid>
		<description>I have to say, since I have worked with some of the Tangosol/Coherence guys, back in my Oracle life, that I am 100% with you on the fact that &quot;experience&quot; IS the key point. We have been discuss about systems and apps that I could not even dream about... In addition, talking about technology, I have been quite excited about the Coherence technology too: &quot;simple and infinite power&quot;

What about moving Twitter and Google AppEngine ? ;)

Tug</description>
		<content:encoded><![CDATA[<p>I have to say, since I have worked with some of the Tangosol/Coherence guys, back in my Oracle life, that I am 100% with you on the fact that &#8220;experience&#8221; IS the key point. We have been discuss about systems and apps that I could not even dream about&#8230; In addition, talking about technology, I have been quite excited about the Coherence technology too: &#8220;simple and infinite power&#8221;</p>
<p>What about moving Twitter and Google AppEngine ? ;)</p>
<p>Tug</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ray Cromwell</title>
		<link>http://almaer.com/blog/twitter-is-getting-a-mom/comment-page-1#comment-38697</link>
		<dc:creator>Ray Cromwell</dc:creator>
		<pubDate>Tue, 27 May 2008 07:03:04 +0000</pubDate>
		<guid isPermaLink="false">http://almaer.com/blog/twitter-is-getting-a-mom#comment-38697</guid>
		<description>I think it depends on whether or not you need a FIFO, or something more sophisticated. What you get with many MoMs is the ability to choose either transient (messages can be lost if server goes down, higher performance, but riskier), or persistent (messages written to persistent storage using a journaling technique) combined with transactions. Many data-grid techniques amount to transient caches with superb reliability.  I suppose if you factor in the ability to replay/repush updates from a master, using transient caches would be ok, but this makes the master a potential bottleneck.

I agree that you could probably make data-grids work, and they have the advantage of being more flexible than MoMs, but recognize, you&#039;ll have to build MoM functionality on top of the grid. I mean, this seems like a slam dunk excuse to use Java to me, simply because tried and true, market proven solutions exist. Otherwise, you have to build everything yourself, which you can do if you&#039;re Google (GFS, BigTable, Map/Reduce, etc), but not everyone has the resources or time to do what Google does.</description>
		<content:encoded><![CDATA[<p>I think it depends on whether or not you need a FIFO, or something more sophisticated. What you get with many MoMs is the ability to choose either transient (messages can be lost if server goes down, higher performance, but riskier), or persistent (messages written to persistent storage using a journaling technique) combined with transactions. Many data-grid techniques amount to transient caches with superb reliability.  I suppose if you factor in the ability to replay/repush updates from a master, using transient caches would be ok, but this makes the master a potential bottleneck.</p>
<p>I agree that you could probably make data-grids work, and they have the advantage of being more flexible than MoMs, but recognize, you&#8217;ll have to build MoM functionality on top of the grid. I mean, this seems like a slam dunk excuse to use Java to me, simply because tried and true, market proven solutions exist. Otherwise, you have to build everything yourself, which you can do if you&#8217;re Google (GFS, BigTable, Map/Reduce, etc), but not everyone has the resources or time to do what Google does.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Nati Shalom</title>
		<link>http://almaer.com/blog/twitter-is-getting-a-mom/comment-page-1#comment-38696</link>
		<dc:creator>Nati Shalom</dc:creator>
		<pubDate>Tue, 27 May 2008 04:29:13 +0000</pubDate>
		<guid isPermaLink="false">http://almaer.com/blog/twitter-is-getting-a-mom#comment-38696</guid>
		<description>&lt;blockquote&gt;
Roy i believe that data-grid/distributed-caching technologies are better alternative then many of the pure messaging or database solution as it already deals with distributed data management however it is still lacking the messaging end and therefore is not enough.
&lt;/blockquote&gt;

Sorry clicked the submit button too soon - i meant Ray not Roy.</description>
		<content:encoded><![CDATA[<blockquote><p>
Roy i believe that data-grid/distributed-caching technologies are better alternative then many of the pure messaging or database solution as it already deals with distributed data management however it is still lacking the messaging end and therefore is not enough.
</p></blockquote>
<p>Sorry clicked the submit button too soon &#8211; i meant Ray not Roy.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Nati Shalom</title>
		<link>http://almaer.com/blog/twitter-is-getting-a-mom/comment-page-1#comment-38695</link>
		<dc:creator>Nati Shalom</dc:creator>
		<pubDate>Tue, 27 May 2008 04:21:27 +0000</pubDate>
		<guid isPermaLink="false">http://almaer.com/blog/twitter-is-getting-a-mom#comment-38695</guid>
		<description>&lt;blockquote&gt;
Twitter is, fundamentally, a messaging system. Twitter was not designed as a messaging system, however. For expediency’s sake, Twitter was built with technologies and practices that are more appropriate to a content management system.
&lt;/blockquote&gt;

This is really the main point i.e. event driven architecture lend itself for scaling which means that with the proper design we wouldn&#039;t be talking about twitter scaling in the first place as i already wrote in recent post about twitter scaling: http://natishalom.typepad.com/nati_shaloms_blog/2008/05/twitter-as-an-e.html


Now saying that is too simplistic IMO as what we have here a combination of events (messaging) and complex matching (data) - if you choose to use message driven design you&#039;ll probably end up with complexity of managing state i.e. messaging doesn&#039;t provide means for dealing with concurrent update, consistency, affinity etc. If your going to build your system with database centric design your going to end up writing lots of twiking to deal with event correlation, subscription model etc.

I believe that the separation between messaging and data in the first place is one of the bigger fallacies in distributed architecture i.e. i believe that messaging and data are the same and are always tightly coupled.  In many cases you trigger a message to update a state change and when you update something you need to trigger various actions as a result of that update. Dealing with it by writing messaging and database at the application level often lead to complex architecture and non scalable design . Just imagine what it takes to do a simple task like sending a message and updating two or more entities of that change - we need to send an event to messaging queue, read it update the database, to avoid paritial failure we need to use transaction between the messaging systems and databse, to ensure high availability we need to maintain two separate clusters, to disciminate that update  to multiple subscribers we need to perform reverse matching (based on the subscription) and send event to the relevant subsribers, normally this involves another broker service which is yet another tier in our already complex environment. Nither messaging or database centric design address well this type of associated networking.
 
I faced this problem in the past when i was involved in building of a b2b exchange. It was that realization that led me to TupleSpaces and to build a solution around JavaSpaces - JavaSpaces provides a mean to deal with distributed state (data-grid/caching) and messaging (events..) in one simple technology using only 4 verbs (write,read,take and notify).
JavaSpaces enables you to share state, subscribe to changes in that state, query the data etc.

A Space Based Architecture is a design pattern that was built to provide a solution for scaling out of stateful event driven applications using a combination of pattern from Messaging, data-grid/caching and parallel processing worlds.

Roy i believe that data-grid/distributed-caching technologies are better alternative then many of the pure messaging or database solution as it already deals with distributed data management however it is still lacking the messaging end and therefore is not enough.

A good starting point on Space Based Architecture can be found on wikipedia:
http://en.wikipedia.org/wiki/Space-based_architecture</description>
		<content:encoded><![CDATA[<blockquote><p>
Twitter is, fundamentally, a messaging system. Twitter was not designed as a messaging system, however. For expediency’s sake, Twitter was built with technologies and practices that are more appropriate to a content management system.
</p></blockquote>
<p>This is really the main point i.e. event driven architecture lend itself for scaling which means that with the proper design we wouldn&#8217;t be talking about twitter scaling in the first place as i already wrote in recent post about twitter scaling: <a href="http://natishalom.typepad.com/nati_shaloms_blog/2008/05/twitter-as-an-e.html" rel="nofollow">http://natishalom.typepad.com/nati_shaloms_blog/2008/05/twitter-as-an-e.html</a></p>
<p>Now saying that is too simplistic IMO as what we have here a combination of events (messaging) and complex matching (data) &#8211; if you choose to use message driven design you&#8217;ll probably end up with complexity of managing state i.e. messaging doesn&#8217;t provide means for dealing with concurrent update, consistency, affinity etc. If your going to build your system with database centric design your going to end up writing lots of twiking to deal with event correlation, subscription model etc.</p>
<p>I believe that the separation between messaging and data in the first place is one of the bigger fallacies in distributed architecture i.e. i believe that messaging and data are the same and are always tightly coupled.  In many cases you trigger a message to update a state change and when you update something you need to trigger various actions as a result of that update. Dealing with it by writing messaging and database at the application level often lead to complex architecture and non scalable design . Just imagine what it takes to do a simple task like sending a message and updating two or more entities of that change &#8211; we need to send an event to messaging queue, read it update the database, to avoid paritial failure we need to use transaction between the messaging systems and databse, to ensure high availability we need to maintain two separate clusters, to disciminate that update  to multiple subscribers we need to perform reverse matching (based on the subscription) and send event to the relevant subsribers, normally this involves another broker service which is yet another tier in our already complex environment. Nither messaging or database centric design address well this type of associated networking.</p>
<p>I faced this problem in the past when i was involved in building of a b2b exchange. It was that realization that led me to TupleSpaces and to build a solution around JavaSpaces &#8211; JavaSpaces provides a mean to deal with distributed state (data-grid/caching) and messaging (events..) in one simple technology using only 4 verbs (write,read,take and notify).<br />
JavaSpaces enables you to share state, subscribe to changes in that state, query the data etc.</p>
<p>A Space Based Architecture is a design pattern that was built to provide a solution for scaling out of stateful event driven applications using a combination of pattern from Messaging, data-grid/caching and parallel processing worlds.</p>
<p>Roy i believe that data-grid/distributed-caching technologies are better alternative then many of the pure messaging or database solution as it already deals with distributed data management however it is still lacking the messaging end and therefore is not enough.</p>
<p>A good starting point on Space Based Architecture can be found on wikipedia:<br />
<a href="http://en.wikipedia.org/wiki/Space-based_architecture" rel="nofollow">http://en.wikipedia.org/wiki/Space-based_architecture</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ray Cromwell</title>
		<link>http://almaer.com/blog/twitter-is-getting-a-mom/comment-page-1#comment-38694</link>
		<dc:creator>Ray Cromwell</dc:creator>
		<pubDate>Mon, 26 May 2008 18:38:05 +0000</pubDate>
		<guid isPermaLink="false">http://almaer.com/blog/twitter-is-getting-a-mom#comment-38694</guid>
		<description>Java is unhip in the Web 2.0 market. :) s/Scala/Java and some of the cool people will like it. :)</description>
		<content:encoded><![CDATA[<p>Java is unhip in the Web 2.0 market. :) s/Scala/Java and some of the cool people will like it. :)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: ahah</title>
		<link>http://almaer.com/blog/twitter-is-getting-a-mom/comment-page-1#comment-38693</link>
		<dc:creator>ahah</dc:creator>
		<pubDate>Mon, 26 May 2008 18:27:42 +0000</pubDate>
		<guid isPermaLink="false">http://almaer.com/blog/twitter-is-getting-a-mom#comment-38693</guid>
		<description>Are you sad that Java already  has readily available solutions for twitter like scalability and performance disasters (AKA ruby)?</description>
		<content:encoded><![CDATA[<p>Are you sad that Java already  has readily available solutions for twitter like scalability and performance disasters (AKA ruby)?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ray Cromwell</title>
		<link>http://almaer.com/blog/twitter-is-getting-a-mom/comment-page-1#comment-38692</link>
		<dc:creator>Ray Cromwell</dc:creator>
		<pubDate>Mon, 26 May 2008 18:22:12 +0000</pubDate>
		<guid isPermaLink="false">http://almaer.com/blog/twitter-is-getting-a-mom#comment-38692</guid>
		<description>There, someone finally said it, amid the tons of opinion blog pieces about how difficult it is to scale or decentralize Twitter. :)

It&#039;s not really about programming languages, yet at the same time it is. Twitter is broke because it had the wrong design. However, I do believe the choice of tool encourages the design.

People use Ruby on Rails because it makes writing database backed sites a joy. RoR, as a platform, therefore, tends to produce database centric designs. 

Erlang, for example, is fine tuned for event driven messaging, and therefore, if someone builds something with Erlang, it&#039;s highly likely to leverage Erlang&#039;s strengths.

RoR brings the allure of quick-and-cheap development, but at the same time, it encourages hacking from the bottom up, rather than design from the top-down. Granted, there are many problems with top-down design as well, but there&#039;s a middle ground. I

Theoretically, Twitter could keep RoR around for a lot of the Web oriented form stuff, and replace the underlying messaging and track stuff with a pub/sub system with distribution and push updates.  

The only advantage to using Java is that there are tons of high performance, feature filled MoMs. Mature fail over, transience, persistence, distribution/federation, management, etc. Plus, mature APIs for designing and deploying MoM components, you&#039;ve got JMS, Message Driven Beans, and ESB.

For that reason, if I were CTO of Twitter, and looking to fix things in a hurry, I might buy either a top JMS MoM, or Coherence, and combine it with Java or Erlang. There is likely to be a push for Memcached usage, but Memcached doesn&#039;t come close to Coherence in capability. Hell, IIRC, Coherence allows you to run complex cache queries and filters across the cache servers without pulling down the data.

What I find confusing is how many people think Twitter is doing something unprecedented, as an excuse for the downtime. Anyone who has worked with real time stock feeds knows the message rate dwarfs Twitter easily, and the queries/processing that people run against the data are also more complex than Twitter.  As you point out, the way it&#039;s handled is by replication.

One of the most charming things about email, SMS, and IM is the asynchronous nature of it. You usually don&#039;t know how long it took for the message to get to you (unless you look at header time stamps), and you don&#039;t care, unless it arrives spectacularly late.  Asynchronous expectations are Twitter&#039;s friend for scaling here.</description>
		<content:encoded><![CDATA[<p>There, someone finally said it, amid the tons of opinion blog pieces about how difficult it is to scale or decentralize Twitter. :)</p>
<p>It&#8217;s not really about programming languages, yet at the same time it is. Twitter is broke because it had the wrong design. However, I do believe the choice of tool encourages the design.</p>
<p>People use Ruby on Rails because it makes writing database backed sites a joy. RoR, as a platform, therefore, tends to produce database centric designs. </p>
<p>Erlang, for example, is fine tuned for event driven messaging, and therefore, if someone builds something with Erlang, it&#8217;s highly likely to leverage Erlang&#8217;s strengths.</p>
<p>RoR brings the allure of quick-and-cheap development, but at the same time, it encourages hacking from the bottom up, rather than design from the top-down. Granted, there are many problems with top-down design as well, but there&#8217;s a middle ground. I</p>
<p>Theoretically, Twitter could keep RoR around for a lot of the Web oriented form stuff, and replace the underlying messaging and track stuff with a pub/sub system with distribution and push updates.  </p>
<p>The only advantage to using Java is that there are tons of high performance, feature filled MoMs. Mature fail over, transience, persistence, distribution/federation, management, etc. Plus, mature APIs for designing and deploying MoM components, you&#8217;ve got JMS, Message Driven Beans, and ESB.</p>
<p>For that reason, if I were CTO of Twitter, and looking to fix things in a hurry, I might buy either a top JMS MoM, or Coherence, and combine it with Java or Erlang. There is likely to be a push for Memcached usage, but Memcached doesn&#8217;t come close to Coherence in capability. Hell, IIRC, Coherence allows you to run complex cache queries and filters across the cache servers without pulling down the data.</p>
<p>What I find confusing is how many people think Twitter is doing something unprecedented, as an excuse for the downtime. Anyone who has worked with real time stock feeds knows the message rate dwarfs Twitter easily, and the queries/processing that people run against the data are also more complex than Twitter.  As you point out, the way it&#8217;s handled is by replication.</p>
<p>One of the most charming things about email, SMS, and IM is the asynchronous nature of it. You usually don&#8217;t know how long it took for the message to get to you (unless you look at header time stamps), and you don&#8217;t care, unless it arrives spectacularly late.  Asynchronous expectations are Twitter&#8217;s friend for scaling here.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
