<?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>Javatech &#187; Architecture</title>
	<atom:link href="http://javatech.org/category/architecture/feed/" rel="self" type="application/rss+xml" />
	<link>http://javatech.org</link>
	<description>The Bleeding Edge of Java Technology</description>
	<lastBuildDate>Wed, 24 Jun 2009 22:30:48 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Discovering Roo</title>
		<link>http://javatech.org/2009/06/discovering-roo/</link>
		<comments>http://javatech.org/2009/06/discovering-roo/#comments</comments>
		<pubDate>Sun, 14 Jun 2009 20:51:49 +0000</pubDate>
		<dc:creator>deevis</dc:creator>
				<category><![CDATA[Application Servers]]></category>
		<category><![CDATA[Architecture]]></category>
		<category><![CDATA[Spring]]></category>
		<category><![CDATA[Web Frameworks]]></category>
		<category><![CDATA[aspectj]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[roo]]></category>

		<guid isPermaLink="false">http://javatech.org/?p=77</guid>
		<description><![CDATA[I decided to follow along with the presentation given by Ben Alex during the SpringOne Keynote Address by Rod Johnson.
First &#8211; I have to install Roo and get the Roo shell up and running.  I&#8217;m really excited at this point because Roo does look really cool &#8211; really RAD!
So I download Roo and explode it [...]]]></description>
			<content:encoded><![CDATA[<p>I decided to follow along with the presentation given by Ben Alex during the <a title="SpringOne Keynote Address by Rod Johnson" href="http://www.infoq.com/presentations/SpringOne-Keynote-Rod-Johnson" target="_self">SpringOne Keynote Address by Rod Johnson</a>.</p>
<p>First &#8211; I have to install Roo and get the Roo shell up and running.  I&#8217;m really excited at this point because Roo does look really cool &#8211; really RAD!</p>
<p>So I <a title="Download Roo 1.0.0.M1" href="http://s3.amazonaws.com/dist.springframework.org/milestone/ROO/spring-roo-1.0.0.M1.zip" target="_self">download Roo</a> and explode it out to where I explode all of my 3rd party tools and then open <a title="cygwin" href="http://www.cygwin.com/">cygwin</a> (I&#8217;m on Windows and am trying hard to move away from Dos&#8230;) and navigate to the new directory.  I find a bin directory with two scripts in it: roo.bat and roo.sh.  Sweet!  They have a linux version ( cygwin == linux in many ways ).  So I run roo.sh and get:</p>
<p><strong>./roo.sh</strong></p>
<pre style="border: 1px inset; margin: 0px; padding: 6px; overflow: auto; width: 800px; height: 204px; text-align: left;" dir="ltr">Exception in thread "main" java.lang.NoClassDefFoundError: org/springframework/roo/bootstrap/Bootstrap
Caused by: java.lang.ClassNotFoundException: org.springframework.roo.bootstrap.Bootstrap
        at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
        at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
Could not find the main class: org.springframework.roo.bootstrap.Bootstrap.  Program will exit.</pre>
<p>OK &#8211; take a step back.  What have I done wrong here.</p>
<p>I back up a directory and also try <strong>./bin/roo.sh</strong>.  I look in the readme.txt and create the symlink for install on linux that they recommend:</p>
<p><strong>ln -s /path/to/roo/bin/roo.sh /usr/bin/roo</strong></p>
<p>I type in &#8216;roo&#8217; and get the same BootStrap Exception.</p>
<p>So then I invoke the wisdom of Google and learn that most everyone who encounters this error gets it because they are in Dos and are working in a different drive than where Roo is installed.  I&#8217;m on the same drive &#8211; but it&#8217;s not working in cygwin!  No hits on this somehow?!?  I find some other results which want me to additionally set an environment variable ROO_HOME.  I do this by running from the Roo install directory ( above bin, that is&#8230;):</p>
<p><strong>export ROO_HOME=`pwd`</strong></p>
<p><strong>env | grep ROO</strong></p>
<p>I still get the same problem (ClassNotFoundException: org.springframework.roo.bootstrap.Bootstrap), so I cave and go into a Dos prompt.  Well, first I add %ROO_HOME%\bin to my path, and *then* go into a Dos prompt.  I run &#8216;roo&#8217; and get the same Bootstrap Exception again.  But now, I am on the wrong drive, and cd to the same drive I installed Roo on &#8211; now things are working.</p>
<p>Time to even start using Roo in this example : <strong>15 minutes</strong></p>
<p>So, Roo is working now &#8211; I have a shell up and running.  I&#8217;m stoked because it really is cool.  It has &#8216;hint&#8217; as a keyword and tab-based auto-completion which is contextual &#8211; it auto-completes the correct things at the correct times.<br />
<a title="Creating a Project with Roo" href="http://javatech.org/article_yet_to_be_written">Creating a project with Roo</a> is a very nice experience : <strong>3 minutes</strong></p>
<p>I already have maven2 installed so I&#8217;m able to exit out of Roo and run &#8216;mvn eclipse:eclipse&#8217; and import the project into Eclipse : <strong>2 minute</strong>s</p>
<p>Wow, now we&#8217;re flying.  Except, wait, there a bunch of &#8220;.aj&#8221; files in my project.  Cool, <a title="Spring Roo Leverages AspectJ" href="http://javatech.org/article_yet_to_be_written">Roo is leveraging AspectJ</a>.  Suck, I don&#8217;t have AJDT plugin configured for Eclipse and I&#8217;m missing a bunch of the stuff Roo has added to my project ( 9 .aj files in all ).  Thinking this might not matter, I run the JUnitTest that Roo created for my project and see only 1 test being run &#8211; the demo has a bunch of tests being run ( added via AspectJ ).  Also, when I auto-complete on my entity class I created, I don&#8217;t get any of the framework added static methods.  Translation: I need to install the AJDT plugin for Eclipse: <strong>10 minutes</strong> ( http://download.eclipse.org/tools/ajdt/34/update ).</p>
<p>Now things are good to go &#8211; I now see the out-of-the box static methods added to my domain class ( Choice.java ).   And now when I run the JUnitTest I see that 8 new tests have been added and run.  But there&#8217;s something else stinky in the state of Denmark!</p>
<pre style="border: 1px inset; margin: 0px; padding: 6px; overflow: auto; width: 800px; height: 40px; text-align: left;" dir="ltr">IllegalStateException: Entity manager has not been injected (is the Spring Aspects JAR configured as an AJC/AJDT aspects library?</pre>
<p>No, the SpringAspects JAR is *NOT* configured as an AJC/AJDT aspects library!  I don&#8217;t know what the SpringAspects JAR is nor what it means to configure it as an AJC/AJDT aspects library.  Basically, this means you need to select the spring-aspects.jar to be in the Aspect Path of the AspectJ Build configuration of the project.  A picture is worth a 1,000 words here</p>
<div id="attachment_84" class="wp-caption alignnone" style="width: 310px"><img class="size-medium wp-image-84" title="aspectj_spring_aspects_configuration" src="http://javatech.org/wp-content/uploads/2009/06/aspectj_spring_aspects_configuration-300x170.jpg" alt="Adding spring-aspects.jar to AspectJ Build path" width="300" height="170" /><p class="wp-caption-text">Adding spring-aspects.jar to AspectJ Build path</p></div>
<p><strong>10 minutes</strong></p>
<p>So, we&#8217;re up to 40 minutes of time spent when the whole thing up until now should only be 5 minutes.</p>
<p>But wait, there&#8217;s more.  Now I find that I don&#8217;t have setters being woven into my Choice.java class by the Choice_Roo_Javabean.aj aspect.  I see the correct code in the aspect, but Eclipse&#8217;s autocomplete and the actual compilation fail when I attempt to access new Choice().setNamingChoice().    I can deal with this later because I&#8217;ve got to get on with the demo.</p>
<p>Next up &#8211; Roo will automatically update the companion aspect files it creates as new properties are added to the domain entity.  That is, if I simply add a new property called &#8216;description&#8217; to my entity, and I have roo running in the background, then the Choice_Roo_Javabean.aj is automatically updated with the new getter/setter methods, and the Choice_Roo_ToString.aj is updated to include description.  SUPER COOL.</p>
<p>On a tangent, it is not mandatory that these woven aspects dictate the toString and javabean parts of the entity class.  The class has annotations in it to specify that the framework will handle these concerns: @RooJavaBean, @RooToString.  There is also a @RooEntity which adds all of the dao-ish methods to the class.  This is a pattern taken from Grails.</p>
<p>At this point we have an autogenerated JavaBean and a companion TestCase that works.</p>
<p>What about the webapp?  Inside of Roo shell, we can now run:</p>
<p><strong>new controller automatic</strong></p>
<p>With a few arguments to generate the framework jsps, the wiring, the formBackingObject functionality and even the crud forms for the domain entity.  The ordering of the fields on the crud forms matches the order in which they appear in the java file.  Changing the order of properties in the java file will change their order in the ToString.aj and crud JSPs as well. <strong>2 minutes</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://javatech.org/2009/06/discovering-roo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Does My Bus Look Big in This?</title>
		<link>http://javatech.org/2008/06/does-my-bus-look-big-in-this/</link>
		<comments>http://javatech.org/2008/06/does-my-bus-look-big-in-this/#comments</comments>
		<pubDate>Sat, 21 Jun 2008 06:31:47 +0000</pubDate>
		<dc:creator>deevis</dc:creator>
				<category><![CDATA[Architecture]]></category>

		<guid isPermaLink="false">http://javatech.org/2008/06/21/does-my-bus-look-big-in-this/</guid>
		<description><![CDATA[I just watched Martin Fowler and Jim Webber&#8217;s collective presentation on SOA and ESB   I entered into the presentation hoping to learn about how they&#8217;d recommend I use a Mule or ServiceMix.  Well, they not only didn&#8217;t tell me which one was better or how I should configure it or anything even close to that.  [...]]]></description>
			<content:encoded><![CDATA[<p>I just watched Martin Fowler and Jim Webber&#8217;s <a href="http://www.infoq.com/presentations/soa-without-esb" title="Does My Bus Look Big in This?" target="_blank">collective presentation on SOA and ESB</a>   I entered into the presentation hoping to learn about how they&#8217;d recommend I use a Mule or ServiceMix.  Well, they not only didn&#8217;t tell me which one was better or how I should configure it or anything even close to that.  I don&#8217;t want to spoil it all for you, but I&#8217;ll say that they did tell me that SOA actually stands for &#8220;Same Old Atrocity&#8221; and that ESB stands for &#8220;Erroneous Spaghetti Box&#8221;.  Oh yeah, I almost forgot &#8211; Mule and ServiceMix, while not named explicitly, may have man-boobs.</p>
<p>Here are my notes from the presentation:</p>
<p>Does My Bus Look Big in This?<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
Talk given by Jim Webber and Martin Fowler</p>
<p>Most integration tools are bloated lard asses because they&#8217;ve been on a rich<br />
diet of BPM, Transformations, Security, Adapters, Rules Engine and GUI tools.</p>
<p>Integration software is a bridge built between two existing applications (silos)</p>
<p>SOA to the rescue!  ( not! )  It&#8217;s the same old stuff.  Same old atrocity -<br />
if a single service ever needs to change then you&#8217;re screwed.</p>
<p>SOA != Service Oriented Architecture<br />
SOA == Same Old Atrocity</p>
<p>ESB &#8211; this should fix things.  Just plumb your databases and services in<br />
and you are suddenly Scalable and Governable.</p>
<p>ESB != Enterprise Service Bus<br />
ESB == Erroneous Spaghetti Box</p>
<p>ESB is an Architectural Fantasy &#8211; at least as a magic bullet.</p>
<p>Mainstream SOA Today : it doesn&#8217;t run and it&#8217;s full of fat.</p>
<p>We need to think carefully, plan ahead, design interfaces wisely.</p>
<p>Agile Architecture:<br />
1) Accept change as an inevitable part of the Software Process<br />
2) The most important part of the Software Process is people &#8211; we need<br />
to make allow the people to be effective.</p>
<p>Continuous Integration<br />
Automated Testing<br />
Refactoring &#8211; disciplined way to design and evolve the software<br />
Behaviour Driven Development</p>
<p>Grow the system, incrementally.  With a solid core that functions to begin<br />
with and then add more layers of functionality deliberately over time.</p>
<p>Frameworks have gotten agile, too.  Spring, Hibernate, Rails, etc&#8230;</p>
<p>Http and the web &#8211; broke some of the rules.  All the links *DON&#8217;T HAVE TO WORK* &#8211; 404 errors are a good compromise</p>
<p>The web is great because the underlying network is so simple and dumb, but it<br />
facilitates almost any higher level usage layered on top of.</p>
<p>The web allows us to do things that we never considered in advance.</p>
<p>Great design isn&#8217;t considering all the cases and designing for them.  Great design is<br />
when you can handle situations with your architecture that you&#8217;ve never thought of<br />
or considered.</p>
<p>Guerilla SOA &#8211; just do it in the trenches but don&#8217;t bet the entire project on it.  Then<br />
with each small victory, re-prioritise and keep delivering.</p>
<p>Web-based Services: The Web *is* middleware.  HTTP is a big, coordination framework.</p>
<p>The web is slim, trim middleware &#8211; not fat bloated like SOA and ESB.  The web is ubiquitous!</p>
<p>The web is incremental and, therefore, low risk.</p>
<p>So, we don&#8217;t need what middleware vendors are selling us.</p>
<p>SQUID?!?  What is it?</p>
<p>Squid is your ESB &#8211; a Big, Big Proxy Server.</p>
<p>Proprietary Middleware  vs  Web-centric techniques<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />
Big, up-front design  vs  Evolutionary<br />
Lengthy death-marches  vs  Constant delivery<br />
Expensive  vs  Inexpensive<br />
Risky  vs  Incremental<br />
Enterprise Scale  vs  Internet Scale<br />
Specialised  vs  Commoditised<br />
Integration separate activity  vs  Integration by-product of delivering business value<br />
Not very sensible  vs  Quite sensible</p>
<p>Take the same ideas we&#8217;ve come up with in application developement when attacking the larger<br />
Enterprise issues.</p>
]]></content:encoded>
			<wfw:commentRss>http://javatech.org/2008/06/does-my-bus-look-big-in-this/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Spring Dynamic Modules for OSGi</title>
		<link>http://javatech.org/2008/06/spring-dynamic-modules-for-osgi/</link>
		<comments>http://javatech.org/2008/06/spring-dynamic-modules-for-osgi/#comments</comments>
		<pubDate>Tue, 17 Jun 2008 07:42:59 +0000</pubDate>
		<dc:creator>deevis</dc:creator>
				<category><![CDATA[Architecture]]></category>
		<category><![CDATA[Spring]]></category>

		<guid isPermaLink="false">http://javatech.org/2008/06/17/spring-dynamic-modules-for-osgi/</guid>
		<description><![CDATA[OSGi &#8211; http://www.infoq.com/presentations/colyer-server-side-osgi
This is a very informative talk given by Adrian Colyer &#8211; CTO of Interface 21 &#8211; on the new OSGi support within Spring 2.5
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;
OSGi == The Dynamic Module System for Java
In OSGi jars/modules are called &#8220;Bundles&#8221;
Modules can declare what it provides and what it requires.
Modules can be installed, started, stopped, uninstalled, and updated [...]]]></description>
			<content:encoded><![CDATA[<p>OSGi &#8211; http://www.infoq.com/presentations/colyer-server-side-osgi</p>
<p>This is a very informative talk given by Adrian Colyer &#8211; CTO of Interface 21 &#8211; on the new OSGi support within Spring 2.5</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />
OSGi == The Dynamic Module System for Java<br />
In OSGi jars/modules are called &#8220;Bundles&#8221;<br />
Modules can declare what it provides and what it requires.<br />
Modules can be installed, started, stopped, uninstalled, and updated *at runtime*<br />
Bundles can publish services dynamically.<br />
Publish/Find/Bind &#8211; Service Registry allows this</p>
<p>A Brief History of OSGi<br />
- started in 1999, focus on embedded Java and networked devices<br />
- 2003: extended support to mobile devices<br />
- 2004: significant open source community adoption ( Eclipse plugins )<br />
- 2006: OSGi moving into server-side Java</p>
<p>Current implementations:<br />
- Eclipse Equinox<br />
- Apache Felix<br />
- Makewave Knopflerfish<br />
- Prosyst mBedded Server Professional Edition</p>
<p>Paremus?!?  Enterprise company using OSGi &#8211; who are they?</p>
<p>How does OSGi help me?<br />
- Strong modularity<br />
By default a bundle is a black box and classes are isolated from other bundles.<br />
A bundle can export one or more packages.<br />
Only exported packages are visible outside of the exporting bundle.<br />
Modularity gives : Independent development, easier to maintain, faster development cycles.</p>
<p>- Versioning support<br />
Versioning allows two dependent Libraries A and B to each use a different version of<br />
Library C v1 and v2 with v1 and v2 being incompatible.  This is fine so long<br />
as no classes from C are leaked back to your application through A and B.</p>
<p>** What about Singletons in Library C?</p>
<p>- Operational control (life cycle)<br />
With OSGi console and/or JMX you can see all modules and their status<br />
Get information on wiriing<br />
Install/Update/Stop/Uninstall new bundles<br />
Activate bundles ( publishing services in the process )<br />
Deactivate bundles ( unregistering services in the process )<br />
All of the above happen without stopping or restarting the server.</p>
<p>Type-space contributions<br />
Object-space contributions</p>
<p>OSGi WebApps can be written and deployed either as:<br />
1) OSGi bundles in an OSGi-compliant container &#8211; but not many of these are open to this, yet.<br />
2) As a more standard WebApp, but using the Embedded OSGi container ( and the ServletBridge )</p>
<p>Spring 2.5 is OSGi ready.</p>
<p>Class.forName becomes troublesome because the Class may not be exported out of its bundle.<br />
Class.forName does it&#8217;s own caching of Classes, so the correct version of a class may not be found</p>
<p>OSGi doesn&#8217;t have a ContextClassLoader because:<br />
1) it has no notion of &#8220;context&#8221;<br />
2) is has no notion of &#8220;application&#8221;<br />
** Solutions<br />
1) Eclipse Equinox&#8217;s ContextFinder &#8211; this looks up the call stack for the most recent bundle<br />
owned class and uses that bundle&#8217;s ClassLoader &#8220;which works in many, many situations&#8221;.<br />
2) Spring Dynamic Modules: CCL Management</p>
<p>Web Applications<br />
- OSGi HttpService: allows for programmatic configuration.  ability to register Servlets/resources<br />
under aliases.<br />
- Equinox Http Registry Bundle: declarative configuration.</p>
<p>What does Spring Dynamic Modules for OSGiprovide?  www.springframework.org/osgi<br />
- Bundle needs: instantiating, configuring, assembling, decorating<br />
- Bundle blueprints<br />
- expose bundle objects as services<br />
- wire service references between bundles<br />
- consistent/easy way to manage dynamics<br />
&#8211; services may come and go<br />
&#8211; broadcast operations<br />
- test environment<br />
- ContextClassLoader management<br />
- Configuration Admin service integration<br />
- Bundle lifecycle management</p>
<p>OsgiBundleXmlApplicationContext<br />
- uses bundle context and classloader to load resources<br />
- implements Spring&#8217;s resource abstraction for OSGi<br />
&#8211; relative resource paths resolved to bundle entries<br />
&#8211; &#8220;bundle:&#8221; prefix for explicit specification</p>
<p>Instead of a ContextLoaderListener there is org.sfw.osgi.extender bundle<br />
- acts like &#8220;ContextLoaderListener&#8221;<br />
- automatically creates Spring application context inside a bundle<br />
when a bundle is started. No code or dependence on Spring APIs required!</p>
<p>Creating a bundle &#8211; from jar file to Spring bundle&#8230;<br />
- start with a normal old jar: mymodule.jar<br />
- add needed headers to META-INF/MANIFEST.MF<br />
- Bundle-SymbolicName: org.xyz.myapp.mymodule<br />
- Bundle-Version: 1.0<br />
- Bundle-ManifestVersion: 2<br />
- place configuration files in META-INF/spring</p>
<p>Exporting a Service:</p>
<p>&lt;osgi:service id=&#8221;myServiceOsgi&#8221; ref=&#8221;myService&#8221;<br />
interface=&#8221;org.sfw.osgi.samples.ss.MyService&#8221;/&gt;</p>
<p>Importing a Service</p>
<p>&lt;osgi:reference id=&#8221;aService&#8221;<br />
interface=&#8221;org.sfw.osgi.samples.ss.MyService&#8221;/&gt;</p>
<p>What happens if&#8230;?<br />
- there isn&#8217;t a matching service?  Dampening&#8230;<br />
- there are several matching services?  osgi:set vs osgi:reference, perhaps.<br />
- a matched service goes away at runtime?  Dampening&#8230;<br />
- new matching services become available at runtime?  osgi:set vs osgi:reference, perhaps.</p>
<p>Relevant JSR&#8217;s<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
JSR-291 Take OSGi and endorse it on Java Platform<br />
JSR-277 Java Module System ( poor man&#8217;s osgi )<br />
JSR-294 Language changes that support Java Module System</p>
]]></content:encoded>
			<wfw:commentRss>http://javatech.org/2008/06/spring-dynamic-modules-for-osgi/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Twitter Architectural Issues</title>
		<link>http://javatech.org/2008/06/twitter-architectural-issues/</link>
		<comments>http://javatech.org/2008/06/twitter-architectural-issues/#comments</comments>
		<pubDate>Sat, 14 Jun 2008 21:37:01 +0000</pubDate>
		<dc:creator>deevis</dc:creator>
				<category><![CDATA[Architecture]]></category>

		<guid isPermaLink="false">http://javatech.org/2008/06/14/twitter-architectural-issues/</guid>
		<description><![CDATA[disclaimer: First I want to give a huge load of thanks to the good folks over at infoQ for being so completely awesome.  They have an amazing site structure and great content along with it.  I felt like a kid in a candy store when I first stumbled onto their site from Spring&#8217;s home page.  [...]]]></description>
			<content:encoded><![CDATA[<p><em>disclaimer: First I want to give a huge load of thanks to the good folks over at <a href="http://www.infoq.com" title="infoQ">infoQ</a> for being so completely awesome.  They have an amazing site structure and great content along with it.  I felt like a kid in a candy store when I first stumbled onto their site from Spring&#8217;s home page.  That being said, I&#8217;m going to be making my way through 20+ articles/interviews they&#8217;ve done previously and responding in kind with summaries, gleaned factoids, and responses.</em></p>
<p>I just read <a href="http://www.infoq.com/news/2008/06/twitter-and-sharding" title="Architecting Twitter">infoQ&#8217;s Architecting Twitter article</a>.</p>
<p><strong>Concepts</strong></p>
<p><a href="http://www.25hoursaday.com/weblog/2008/05/26/SomeThoughtsOnSingleInstanceStorageAndTwitter.aspx" title="Single Instance Sharing explained">Single-Instance Storage</a> <a href="http://highscalability.com/unorthodox-approach-database-design-coming-shard" title="Data Sharding"></a></p>
<p><a href="http://highscalability.com/unorthodox-approach-database-design-coming-shard" title="Data Sharding">Data Sharding</a></p>
<blockquote><p><a href="http://highscalability.com/flickr-architecture" title="Flickr Architecture">Flickr Architecture</a></p>
<p><a href="http://highscalability.com/google-architecture" title="Google Architecture">Google Architecture</a></p>
<p><a href="http://highscalability.com/livejournal-architecture" title="LiveJournal Architecture">LiveJournal Architecture</a></p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://javatech.org/2008/06/twitter-architectural-issues/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
