<?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: Some wheels need reinventing</title>
	<atom:link href="http://blog.markturansky.com/archives/45/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.markturansky.com/archives/45</link>
	<description>software architecture &#38; engineering, code hints, sometimes philosophy, photography, life, etc.</description>
	<lastBuildDate>Sun, 20 Jun 2010 07:51:38 -0400</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: maramirezc</title>
		<link>http://blog.markturansky.com/archives/45/comment-page-1#comment-1339</link>
		<dc:creator>maramirezc</dc:creator>
		<pubDate>Fri, 07 May 2010 18:04:11 +0000</pubDate>
		<guid isPermaLink="false">http://blog.markturansky.com/archives/45#comment-1339</guid>
		<description>Found your blog, looking on the net for this concept, &amp; also applied to software development. Sometimes we have to &quot;reinvent the wheel&quot;, because &quot;they give me a squared wheel&quot;, &amp; I need a &quot;Round wheel&quot;...</description>
		<content:encoded><![CDATA[<p>Found your blog, looking on the net for this concept, &amp; also applied to software development. Sometimes we have to &#8220;reinvent the wheel&#8221;, because &#8220;they give me a squared wheel&#8221;, &amp; I need a &#8220;Round wheel&#8221;&#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Dan (Team Mark)</title>
		<link>http://blog.markturansky.com/archives/45/comment-page-1#comment-226</link>
		<dc:creator>Dan (Team Mark)</dc:creator>
		<pubDate>Sun, 24 Feb 2008 14:26:00 +0000</pubDate>
		<guid isPermaLink="false">http://blog.markturansky.com/archives/45#comment-226</guid>
		<description>@Adam

Number 6 in your enterprise-y features list, management/statistics collection, is something we&#039;re still tinkering with. Turns out grid management of our nodes across multiple physical machines is not a trivial problem to solve elegantly... :)

So far we&#039;ve tried a few different implementations: Plain Java sockets, JMX, and a Terracotta based communications mechanism. Each has an important drawback which leaves a bad taste in my mouth. We&#039;ve so far stuck with the TC based system because it doesn&#039;t introduce a new moving part into our implementation and is sort of &quot;the simplest thing which could possibly work.&quot;

Maybe Mark or I will elaborate on them sometime. It&#039;s an interesting and important topic. The bus system isn&#039;t of much use unless you can easily deploy and manage nodes in the cluster... I am curious to understand how other systems tackle the problem.</description>
		<content:encoded><![CDATA[<p>@Adam</p>
<p>Number 6 in your enterprise-y features list, management/statistics collection, is something we&#8217;re still tinkering with. Turns out grid management of our nodes across multiple physical machines is not a trivial problem to solve elegantly&#8230; <img src='http://blog.markturansky.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>So far we&#8217;ve tried a few different implementations: Plain Java sockets, JMX, and a Terracotta based communications mechanism. Each has an important drawback which leaves a bad taste in my mouth. We&#8217;ve so far stuck with the TC based system because it doesn&#8217;t introduce a new moving part into our implementation and is sort of &#8220;the simplest thing which could possibly work.&#8221;</p>
<p>Maybe Mark or I will elaborate on them sometime. It&#8217;s an interesting and important topic. The bus system isn&#8217;t of much use unless you can easily deploy and manage nodes in the cluster&#8230; I am curious to understand how other systems tackle the problem.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Adam Malter</title>
		<link>http://blog.markturansky.com/archives/45/comment-page-1#comment-220</link>
		<dc:creator>Adam Malter</dc:creator>
		<pubDate>Sat, 23 Feb 2008 16:15:01 +0000</pubDate>
		<guid isPermaLink="false">http://blog.markturansky.com/archives/45#comment-220</guid>
		<description>@Mark

The reason I follow your blog (and Terracotta, and Gridgain, and ActiveMQ, and HardOop, and ... ) - is that IBM&#039;m may have the right product for us, but, I can not wait for the day when we  can kick them, and all other providers that want to dictate scaling strategy with byzantine licensing and muck up development and debugging with closed source drivers.

I come here not to point out that your falling short of some arbitrary standard, but to push us all ahead!

Anyway, thanks for the interesting posts as usual Mark. I follow perhaps 30 Java blogs in my reader, but always seem to be commenting here. :-)</description>
		<content:encoded><![CDATA[<p>@Mark</p>
<p>The reason I follow your blog (and Terracotta, and Gridgain, and ActiveMQ, and HardOop, and &#8230; ) &#8211; is that IBM&#8217;m may have the right product for us, but, I can not wait for the day when we  can kick them, and all other providers that want to dictate scaling strategy with byzantine licensing and muck up development and debugging with closed source drivers.</p>
<p>I come here not to point out that your falling short of some arbitrary standard, but to push us all ahead!</p>
<p>Anyway, thanks for the interesting posts as usual Mark. I follow perhaps 30 Java blogs in my reader, but always seem to be commenting here. <img src='http://blog.markturansky.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mark Turansky</title>
		<link>http://blog.markturansky.com/archives/45/comment-page-1#comment-215</link>
		<dc:creator>Mark Turansky</dc:creator>
		<pubDate>Fri, 22 Feb 2008 17:55:12 +0000</pubDate>
		<guid isPermaLink="false">http://blog.markturansky.com/archives/45#comment-215</guid>
		<description>@Adam,

You (again, like last time) make excellent points.

You&#039;re working in finance, which makes your requirements somewhat different than mine.  For example, we don&#039;t have a need for JTA and the like, which you mention in a previous post on my blog and again in your list above (#3).

TC provides persisent storage of messages in their disk cache.  We would probably need to build in a little more functionality to assure that messages are not only delivered but also processed successfully through our system.  TC clusters maps, so putting a message into some kind of holding bay until taken out later (upon successful completion) seems like a ridiculously easy feature to implement.

We&#039;ve got multiple of everything.  All consumers run in their own JVMs across the network.  TC is the glue that binds them together.  We&#039;ve got multiple of each type of consumer.

TC has a network high-availability config option.  This may be new from when you last looked at it.

We can put a lot of messages through our system, and processing those messages take longer than the overhead of bussing.  But we&#039;re in a different business that you are.  Our processing is CPU intensive, so we&#039;re limited by hardware.  We can and will scale out our server farm horizontally to increase our throughput, but we&#039;re also not writing a trading application.  Our messages take several seconds to several minutes to process.  We just need an easy way to distribute them all across the network for parallel processing.  That&#039;s what we built.

My very first blog article is titled &quot;Horses for courses.&quot;  I think you and I are running different races, so our choice of tools will, naturally, be different.

I hope one day a fully open source message system will satisfy your reliability requirements.  Until then, it sounds like IBM&#039;s got the right product for you.</description>
		<content:encoded><![CDATA[<p>@Adam,</p>
<p>You (again, like last time) make excellent points.</p>
<p>You&#8217;re working in finance, which makes your requirements somewhat different than mine.  For example, we don&#8217;t have a need for JTA and the like, which you mention in a previous post on my blog and again in your list above (#3).</p>
<p>TC provides persisent storage of messages in their disk cache.  We would probably need to build in a little more functionality to assure that messages are not only delivered but also processed successfully through our system.  TC clusters maps, so putting a message into some kind of holding bay until taken out later (upon successful completion) seems like a ridiculously easy feature to implement.</p>
<p>We&#8217;ve got multiple of everything.  All consumers run in their own JVMs across the network.  TC is the glue that binds them together.  We&#8217;ve got multiple of each type of consumer.</p>
<p>TC has a network high-availability config option.  This may be new from when you last looked at it.</p>
<p>We can put a lot of messages through our system, and processing those messages take longer than the overhead of bussing.  But we&#8217;re in a different business that you are.  Our processing is CPU intensive, so we&#8217;re limited by hardware.  We can and will scale out our server farm horizontally to increase our throughput, but we&#8217;re also not writing a trading application.  Our messages take several seconds to several minutes to process.  We just need an easy way to distribute them all across the network for parallel processing.  That&#8217;s what we built.</p>
<p>My very first blog article is titled &#8220;Horses for courses.&#8221;  I think you and I are running different races, so our choice of tools will, naturally, be different.</p>
<p>I hope one day a fully open source message system will satisfy your reliability requirements.  Until then, it sounds like IBM&#8217;s got the right product for you.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Adam Malter</title>
		<link>http://blog.markturansky.com/archives/45/comment-page-1#comment-214</link>
		<dc:creator>Adam Malter</dc:creator>
		<pubDate>Fri, 22 Feb 2008 16:00:05 +0000</pubDate>
		<guid isPermaLink="false">http://blog.markturansky.com/archives/45#comment-214</guid>
		<description>For a messaging bus to be &#039;Enterprisey&#039; for me, it has to have the following features:

1. Guaranteed message delivery
2. No single point of failure
3. Some sort of true transactional semantics (i.e. Deliver all these messages or none)
4. High message count throughput
5. Large message size support
6. Management/Statistics collection

If you can accomplish all this in 92k, I am 100% on board. Trust me, we are tired of paying MQSeries licensing fees, and worrying about the reliability of ActiveMQ is not good for my blood pressure :-)

Like the post relational solutions that are now looking to replace RDBMS systems (see http://www.vldb2007.org/program/slides/s1150-stonebraker.pdf) - the enterprise message bus could really use an out of the box rethink. I applaud any efforts towards this and still find Terracotta an interesting product. But, where does it fit into a production environment. Last time I looked it seemed to only offer hot/cold multi-node capability. How do you scale things up and out, etc.. 

Treating the network as a single VM is great, but hell, I worry about the data fidelity inside our single VM nodes as is. Additionally with our messaging bus I worry about network outages, VM bugs, memory limitations, disk space issues, the &quot;oppps, I tripped over the power cable&quot; factor, etc, etc, etc - With something like JMS (and specifically a JMS provider you can trust, but hopefully as more implementations mature, that will count everyone) I can be certain within a very high level of confidence that when I PUT, the message will come out the other end.. Be it sooner, or later. Maybe my thinking in all of this is just screwed so tightly to our current business needs and current toolchain.. I am willing to admit that.. Well, that&#039;s why I am here, looking to you guys to think outside of all that, just don&#039;t forgot about the basic needs in all the excitement.

Really though, I love following this stuff and please keep up the interesting work..</description>
		<content:encoded><![CDATA[<p>For a messaging bus to be &#8216;Enterprisey&#8217; for me, it has to have the following features:</p>
<p>1. Guaranteed message delivery<br />
2. No single point of failure<br />
3. Some sort of true transactional semantics (i.e. Deliver all these messages or none)<br />
4. High message count throughput<br />
5. Large message size support<br />
6. Management/Statistics collection</p>
<p>If you can accomplish all this in 92k, I am 100% on board. Trust me, we are tired of paying MQSeries licensing fees, and worrying about the reliability of ActiveMQ is not good for my blood pressure <img src='http://blog.markturansky.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>Like the post relational solutions that are now looking to replace RDBMS systems (see <a href="http://www.vldb2007.org/program/slides/s1150-stonebraker.pdf)" rel="nofollow">http://www.vldb2007.org/program/slides/s1150-stonebraker.pdf)</a> &#8211; the enterprise message bus could really use an out of the box rethink. I applaud any efforts towards this and still find Terracotta an interesting product. But, where does it fit into a production environment. Last time I looked it seemed to only offer hot/cold multi-node capability. How do you scale things up and out, etc.. </p>
<p>Treating the network as a single VM is great, but hell, I worry about the data fidelity inside our single VM nodes as is. Additionally with our messaging bus I worry about network outages, VM bugs, memory limitations, disk space issues, the &#8220;oppps, I tripped over the power cable&#8221; factor, etc, etc, etc &#8211; With something like JMS (and specifically a JMS provider you can trust, but hopefully as more implementations mature, that will count everyone) I can be certain within a very high level of confidence that when I PUT, the message will come out the other end.. Be it sooner, or later. Maybe my thinking in all of this is just screwed so tightly to our current business needs and current toolchain.. I am willing to admit that.. Well, that&#8217;s why I am here, looking to you guys to think outside of all that, just don&#8217;t forgot about the basic needs in all the excitement.</p>
<p>Really though, I love following this stuff and please keep up the interesting work..</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Enrique</title>
		<link>http://blog.markturansky.com/archives/45/comment-page-1#comment-211</link>
		<dc:creator>Enrique</dc:creator>
		<pubDate>Fri, 22 Feb 2008 12:21:42 +0000</pubDate>
		<guid isPermaLink="false">http://blog.markturansky.com/archives/45#comment-211</guid>
		<description>Have you seen tha Cajo library? It allows to discover published services in other computers of the network, invoke methods... It even has a class that is able to provide a GUI that is deployed to a client web browser as an applet or a webstart app. All in a 54 Kb jar. I have tried only a few quite trivial examples (broadcasting custom events to other clients in the network) so I don&#039;t really know whether it is efficent or not. But surely it is hard to compete with its size, and it is open source.</description>
		<content:encoded><![CDATA[<p>Have you seen tha Cajo library? It allows to discover published services in other computers of the network, invoke methods&#8230; It even has a class that is able to provide a GUI that is deployed to a client web browser as an applet or a webstart app. All in a 54 Kb jar. I have tried only a few quite trivial examples (broadcasting custom events to other clients in the network) so I don&#8217;t really know whether it is efficent or not. But surely it is hard to compete with its size, and it is open source.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: ARI ZILKA</title>
		<link>http://blog.markturansky.com/archives/45/comment-page-1#comment-208</link>
		<dc:creator>ARI ZILKA</dc:creator>
		<pubDate>Fri, 22 Feb 2008 03:58:52 +0000</pubDate>
		<guid isPermaLink="false">http://blog.markturansky.com/archives/45#comment-208</guid>
		<description>Mark,

Again, its great to see your enthusiasm.  Let&#039;s try to talk some time soon.  I want to help all these people understand what you have achieved.  Like Dan says, there has to be a lower detail version of sharing what you have done than just open sourcing the source.  For example, we could collaborate on a whitepaper that documents the architecture concepts, the interfaces, and the capabilities w/o the use case or the implementation.

As an example, I am working with the kind folks at www.getabby.com who have implemented SQL on top of Amazon SDB and while they have not shared anything yet, we plan to get together and make something generically available to the market (documents and source) without revealing a thing about getabby.com and their usage of this technology.

Very smart and lucid arguments as to why consider reinventing the wheel, BTW!

Kewl,

--Ari</description>
		<content:encoded><![CDATA[<p>Mark,</p>
<p>Again, its great to see your enthusiasm.  Let&#8217;s try to talk some time soon.  I want to help all these people understand what you have achieved.  Like Dan says, there has to be a lower detail version of sharing what you have done than just open sourcing the source.  For example, we could collaborate on a whitepaper that documents the architecture concepts, the interfaces, and the capabilities w/o the use case or the implementation.</p>
<p>As an example, I am working with the kind folks at <a href="http://www.getabby.com" rel="nofollow">http://www.getabby.com</a> who have implemented SQL on top of Amazon SDB and while they have not shared anything yet, we plan to get together and make something generically available to the market (documents and source) without revealing a thing about getabby.com and their usage of this technology.</p>
<p>Very smart and lucid arguments as to why consider reinventing the wheel, BTW!</p>
<p>Kewl,</p>
<p>&#8211;Ari</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: John</title>
		<link>http://blog.markturansky.com/archives/45/comment-page-1#comment-205</link>
		<dc:creator>John</dc:creator>
		<pubDate>Thu, 21 Feb 2008 21:45:02 +0000</pubDate>
		<guid isPermaLink="false">http://blog.markturansky.com/archives/45#comment-205</guid>
		<description>Sounds really interesting; I&#039;m right with Dan -- would love to see what you&#039;ve achieved in the internal middleware space.  Must take another look at TC.

As for JMS/ActiveMQ/etc a compelling reason to use a middleware server is to connect to applications which are out of your control or written in (possibly unknown) alien technologies.  Which is why something AMQP-based like Apache Qpid is interesting.  AMQP about an effective protocol, not an over-complex-broker-for-my-app.  With AMQP you can send a message from Python to Erlang to C#, never mind JMS or ActiveMQ!  That&#039;s when brokers are useful.

Well done on the less is more front.</description>
		<content:encoded><![CDATA[<p>Sounds really interesting; I&#8217;m right with Dan &#8212; would love to see what you&#8217;ve achieved in the internal middleware space.  Must take another look at TC.</p>
<p>As for JMS/ActiveMQ/etc a compelling reason to use a middleware server is to connect to applications which are out of your control or written in (possibly unknown) alien technologies.  Which is why something AMQP-based like Apache Qpid is interesting.  AMQP about an effective protocol, not an over-complex-broker-for-my-app.  With AMQP you can send a message from Python to Erlang to C#, never mind JMS or ActiveMQ!  That&#8217;s when brokers are useful.</p>
<p>Well done on the less is more front.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jonas Bonér</title>
		<link>http://blog.markturansky.com/archives/45/comment-page-1#comment-202</link>
		<dc:creator>Jonas Bonér</dc:creator>
		<pubDate>Thu, 21 Feb 2008 14:01:08 +0000</pubDate>
		<guid isPermaLink="false">http://blog.markturansky.com/archives/45#comment-202</guid>
		<description>Great post.  
You are really capturing the essence of, and the &quot;feel&quot; for, Terracotta here; it stays out of the way as long as it has to, and bringing it in is only a configuration detail.</description>
		<content:encoded><![CDATA[<p>Great post.<br />
You are really capturing the essence of, and the &#8220;feel&#8221; for, Terracotta here; it stays out of the way as long as it has to, and bringing it in is only a configuration detail.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Dan</title>
		<link>http://blog.markturansky.com/archives/45/comment-page-1#comment-201</link>
		<dc:creator>Dan</dc:creator>
		<pubDate>Thu, 21 Feb 2008 12:55:09 +0000</pubDate>
		<guid isPermaLink="false">http://blog.markturansky.com/archives/45#comment-201</guid>
		<description>It would be illuminating to get some more details on what you built. I&#039;m guessing you can&#039;t post the source, but perhaps a discussion of what &quot;enterprise messaging&quot; features you required, and what features common to JMS/ActiveMQ/whatever were not necessary and could be ignored for your application. Even better would be a high-level class or responsibility diagram.</description>
		<content:encoded><![CDATA[<p>It would be illuminating to get some more details on what you built. I&#8217;m guessing you can&#8217;t post the source, but perhaps a discussion of what &#8220;enterprise messaging&#8221; features you required, and what features common to JMS/ActiveMQ/whatever were not necessary and could be ignored for your application. Even better would be a high-level class or responsibility diagram.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
