<?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: CQRS &#8211; Scalability</title>
	<atom:link href="http://elegantcode.com/2010/02/09/cqrs-scalability/feed/" rel="self" type="application/rss+xml" />
	<link>http://elegantcode.com/2010/02/09/cqrs-scalability/</link>
	<description></description>
	<lastBuildDate>Wed, 28 Jul 2010 21:28:29 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: Allard Buijze</title>
		<link>http://elegantcode.com/2010/02/09/cqrs-scalability/comment-page-1/#comment-54906</link>
		<dc:creator>Allard Buijze</dc:creator>
		<pubDate>Wed, 31 Mar 2010 14:23:07 +0000</pubDate>
		<guid isPermaLink="false">http://elegantcode.com/2010/02/09/cqrs-scalability/#comment-54906</guid>
		<description>Hi Mark,

nice one, Mark! 

Greg explained a rather nice scaling option during his training a while ago. It would, as you state split up aggregates based on their ID. But instead of having a fixed hashing mechanism to find out which server would handle the request, he added a &quot;router&quot; in front of the servers. This router knows which aggregate should be handled by each of the machines. That machine would keep the current state of the aggregate in a cache. Therefore, the event store is only written to, and hardly ever read (only when another server needs to take over in case of server failure). A single event store in the back (highly optimized for writes) should then allow you to scale to a large amount of command handling servers.

When the server crashes, any other server can take over by reading the events from the store and storing the result in his cache. The router decides which machine takes over.

This architecture allows for large-scale low-latency command processing.</description>
		<content:encoded><![CDATA[<p>Hi Mark,</p>
<p>nice one, Mark! </p>
<p>Greg explained a rather nice scaling option during his training a while ago. It would, as you state split up aggregates based on their ID. But instead of having a fixed hashing mechanism to find out which server would handle the request, he added a &#8220;router&#8221; in front of the servers. This router knows which aggregate should be handled by each of the machines. That machine would keep the current state of the aggregate in a cache. Therefore, the event store is only written to, and hardly ever read (only when another server needs to take over in case of server failure). A single event store in the back (highly optimized for writes) should then allow you to scale to a large amount of command handling servers.</p>
<p>When the server crashes, any other server can take over by reading the events from the store and storing the result in his cache. The router decides which machine takes over.</p>
<p>This architecture allows for large-scale low-latency command processing.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Szymon Kulec</title>
		<link>http://elegantcode.com/2010/02/09/cqrs-scalability/comment-page-1/#comment-53545</link>
		<dc:creator>Szymon Kulec</dc:creator>
		<pubDate>Thu, 11 Feb 2010 20:22:29 +0000</pubDate>
		<guid isPermaLink="false">http://elegantcode.com/2010/02/09/cqrs-scalability/#comment-53545</guid>
		<description>I&#039;ve been immersing in Udi&#039;s CQRS articles recently, which are about scalability as well. The major point in your article is the idea about splitting-up aggregates on the identity basis, which according to DDD, might seem to be obvious. For me, it wasn&#039;t. This paradigm makes the scalable CQRS-DDD pair much more readable and elegant. And probably scalable, as well ;-)</description>
		<content:encoded><![CDATA[<p>I&#8217;ve been immersing in Udi&#8217;s CQRS articles recently, which are about scalability as well. The major point in your article is the idea about splitting-up aggregates on the identity basis, which according to DDD, might seem to be obvious. For me, it wasn&#8217;t. This paradigm makes the scalable CQRS-DDD pair much more readable and elegant. And probably scalable, as well <img src='http://elegantcode.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mark Nijhof</title>
		<link>http://elegantcode.com/2010/02/09/cqrs-scalability/comment-page-1/#comment-53532</link>
		<dc:creator>Mark Nijhof</dc:creator>
		<pubDate>Thu, 11 Feb 2010 12:18:35 +0000</pubDate>
		<guid isPermaLink="false">http://elegantcode.com/2010/02/09/cqrs-scalability/#comment-53532</guid>
		<description>&lt;a href=&quot;#comment-53531&quot; rel=&quot;nofollow&quot;&gt;@Roger Alsing&lt;/a&gt; 
You are correct that you gain a lot of scalability by using CQRS without Event Sourcing, but I would like to argue that splitting your AR&#039;s to different servers (including the persistence of them) would be easier when using Event Sourcing. But this is not really true of course :)

So yes you are correct, but I feel more comfortable with the three last paragraphs done using Event Sourcing.</description>
		<content:encoded><![CDATA[<p><a href="#comment-53531" rel="nofollow">@Roger Alsing</a><br />
You are correct that you gain a lot of scalability by using CQRS without Event Sourcing, but I would like to argue that splitting your AR&#8217;s to different servers (including the persistence of them) would be easier when using Event Sourcing. But this is not really true of course <img src='http://elegantcode.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>So yes you are correct, but I feel more comfortable with the three last paragraphs done using Event Sourcing.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Roger Alsing</title>
		<link>http://elegantcode.com/2010/02/09/cqrs-scalability/comment-page-1/#comment-53531</link>
		<dc:creator>Roger Alsing</dc:creator>
		<pubDate>Thu, 11 Feb 2010 12:02:48 +0000</pubDate>
		<guid isPermaLink="false">http://elegantcode.com/2010/02/09/cqrs-scalability/#comment-53531</guid>
		<description>&gt;&gt;gain from applying CQRS and Event Sourcing 

In what way does eventsourcing brings scalability?

AFAIK, The deal with eventsourcing in CQRS is tied to the fact that it can help rebuild the reporting stores and is easy to deal with if you are already raising events.

e.g. If you applied CQRS w/o eventsourcing, you would still be able to scale just as much (?)

Or am I missing something?</description>
		<content:encoded><![CDATA[<p>&gt;&gt;gain from applying CQRS and Event Sourcing </p>
<p>In what way does eventsourcing brings scalability?</p>
<p>AFAIK, The deal with eventsourcing in CQRS is tied to the fact that it can help rebuild the reporting stores and is easy to deal with if you are already raising events.</p>
<p>e.g. If you applied CQRS w/o eventsourcing, you would still be able to scale just as much (?)</p>
<p>Or am I missing something?</p>
]]></content:encoded>
	</item>
</channel>
</rss>
