<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;AkMMSHk6eCp7ImA9WxBSGEg.&quot;"><id>tag:blogger.com,1999:blog-1680085285488970412</id><updated>2009-12-26T12:14:49.710-08:00</updated><title>@Gridify Cloud Computing</title><subtitle type="html">GridGain by Dmitriy Setrakyan</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://gridgain.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://gridgain.blogspot.com/" /><link rel="hub" href="http://pubsubhubbub.appspot.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/1680085285488970412/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>dsetrakyan</name><uri>http://www.blogger.com/profile/10016890172415226172</uri><email>noreply@blogger.com</email></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>53</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/gridify" /><feedburner:emailServiceId>gridify</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><entry gd:etag="W/&quot;CE4FSHczcSp7ImA9WxNbFE0.&quot;"><id>tag:blogger.com,1999:blog-1680085285488970412.post-2892758391139518900</id><published>2009-11-13T18:18:00.000-08:00</published><updated>2009-11-16T12:21:59.989-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-11-16T12:21:59.989-08:00</app:edited><title>Lower Your Electricity Bill With GridGain</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_LUKx0tSelZo/SwGzN_sgNVI/AAAAAAAAAF8/sFJUa7i4c4w/s1600/socket-icon-128.png"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 96px; height: 96px;" src="http://3.bp.blogspot.com/_LUKx0tSelZo/SwGzN_sgNVI/AAAAAAAAAF8/sFJUa7i4c4w/s200/socket-icon-128.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5404798080839071058" /&gt;&lt;/a&gt;Recently, when talking to a company that creates consumer electronics, an interesting idea popped up. This company is really struggling in minimizing their electricity bill and I was asked if &lt;a href="http://www.gridgain.com"&gt;GridGain &lt;/a&gt;could help. Interestingly enough, GridGain can help. Let's suppose you have two data centers, A and B, and data center A has low electricity costs between 12am and 12pm and data center B has low costs between 12pm and 12am. All you need to do to make sure that either data center is used during low cost time window is create &lt;span style="font-weight:bold;"&gt;GridLowElectricityTopologySpi&lt;/span&gt; as follows:&lt;pre name="code" class="java"&gt;&lt;br /&gt;@GridSpiInfo(author = "Your Name", version = "1.0")&lt;br /&gt;@GridSpiMultipleInstancesSupport(true)&lt;br /&gt;public class GridLowElectricityTopologySpi &lt;br /&gt;    extends GridSpiAdapter &lt;br /&gt;    implements GridTopologySpi {&lt;br /&gt;    /** Auto-inject logger. */&lt;br /&gt;    @GridLoggerResource&lt;br /&gt;    private GridLogger log = null;&lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;     * Start SPI.&lt;br /&gt;     */&lt;br /&gt;    public void spiStart(String gridName) {&lt;br /&gt;        if (log.isInfoEnabled() == true) {&lt;br /&gt;            log.info(startInfo());&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;     * Stop SPI.&lt;br /&gt;     */&lt;br /&gt;    public void spiStop() {&lt;br /&gt;        if (log.isInfoEnabled() == true) {&lt;br /&gt;            log.info(stopInfo());&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;     * Given whole grid topology return only nodes&lt;br /&gt;     * selected for execution of this task.&lt;br /&gt;     */&lt;br /&gt;    public Collection&amp;lt;GridNode&amp;gt; getTopology(&lt;br /&gt;        GridTaskSession ses, &lt;br /&gt;        Collection&amp;lt;GridNode&amp;gt; grid) {&lt;br /&gt;        int hour = Calendar.getInstance(Calendar.HOUR_OF_DAY);&lt;br /&gt;&lt;br /&gt;        List&amp;lt;GridNode&amp;gt; top = new ArrayList&amp;lt;GridNode&amp;gt;(grid.size());&lt;br /&gt;&lt;br /&gt;        for (GridNode node : grid) {&lt;br /&gt;            String segment = node.getAttribute("segment");&lt;br /&gt;&lt;br /&gt;            if (hour &amp;lt;= 12) {&lt;br /&gt;                if (segment.equals("A")) {&lt;br /&gt;                    top.add(node);&lt;br /&gt;                }&lt;br /&gt;            }&lt;br /&gt;            else if (segment.equals("B")) {&lt;br /&gt;                top.add(node);&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        return top;&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Now, the nodes from data center A need to have the following in their configuration (the configuration for data center B is analogous).&lt;pre name="code" class="xml"&gt;&lt;br /&gt;&amp;lt;bean &lt;br /&gt;   id="grid.cfg" &lt;br /&gt;   class="org.gridgain.grid.GridConfigurationAdapter" &lt;br /&gt;   scope="singleton"&amp;gt;&lt;br /&gt;    ...&lt;br /&gt;    &amp;lt;property name="userAttributes"&amp;gt;&lt;br /&gt;        &amp;lt;map&amp;gt;&lt;br /&gt;            &amp;lt;entry key="segment" value="A"/&amp;gt;&lt;br /&gt;        &amp;lt;/map&amp;gt;&lt;br /&gt;    &amp;lt;/property&amp;gt;&lt;br /&gt;    ...&lt;br /&gt;&amp;lt;/bean&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;This is all that needs to be done to lower your electric bill. Now all tasks will be routed to the data center with lowest electricity cost.&lt;br /&gt;&lt;br /&gt;Enjoy!&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;a href="http://www.gridgain.com"&gt;GridGain - Grid Computing Made Simple&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1680085285488970412-2892758391139518900?l=gridgain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://gridgain.blogspot.com/feeds/2892758391139518900/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=1680085285488970412&amp;postID=2892758391139518900" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1680085285488970412/posts/default/2892758391139518900?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1680085285488970412/posts/default/2892758391139518900?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/gridify/~3/Wql3Q17yn5Y/lower-your-electricity-bill-with.html" title="Lower Your Electricity Bill With GridGain" /><author><name>dsetrakyan</name><uri>http://www.blogger.com/profile/10016890172415226172</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="02085866846326042706" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_LUKx0tSelZo/SwGzN_sgNVI/AAAAAAAAAF8/sFJUa7i4c4w/s72-c/socket-icon-128.png" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total><feedburner:origLink>http://gridgain.blogspot.com/2009/11/lower-your-electricity-bill-with.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUQERHk4fyp7ImA9WxNbEEs.&quot;"><id>tag:blogger.com,1999:blog-1680085285488970412.post-3367919484745458893</id><published>2009-11-06T11:05:00.000-08:00</published><updated>2009-11-12T15:08:25.737-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-11-12T15:08:25.737-08:00</app:edited><title>GridGain Is Presenting at Dallas JUG, November 11</title><content type="html">&lt;a href="http://javamug.org"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://javamug.org/mainfolders/imagesnew/header/headerfinal1_01.gif"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 107px; height: 87px;" src="http://javamug.org/mainfolders/imagesnew/header/headerfinal1_01.gif" border="0" alt="" /&gt;&lt;/a&gt;&lt;/a&gt;&lt;a href="http://www.gridgain.com"&gt;GridGain&lt;/a&gt; will be presenting at Dallas Java User Group at Dallas, TX, on Wednesday, November 11th. If you are around the Dallas area and interested in Cloud Computing - come see the presentation. As usual we'll have lively discussion on clouds and grids and as always plenty of live coding that you won't see anywhere else - live cloud application in 10 minutes from scratch!. We also going to show some sneak peek preview of GridGain 3.0, including live Cloud Demos.&lt;div class="blogger-post-footer"&gt;&lt;a href="http://www.gridgain.com"&gt;GridGain - Grid Computing Made Simple&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1680085285488970412-3367919484745458893?l=gridgain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://gridgain.blogspot.com/feeds/3367919484745458893/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=1680085285488970412&amp;postID=3367919484745458893" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1680085285488970412/posts/default/3367919484745458893?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1680085285488970412/posts/default/3367919484745458893?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/gridify/~3/0WxxeogZIk8/gridgain-is-presenting-at-dallas-jug.html" title="GridGain Is Presenting at Dallas JUG, November 11" /><author><name>dsetrakyan</name><uri>http://www.blogger.com/profile/10016890172415226172</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="02085866846326042706" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total><feedburner:origLink>http://gridgain.blogspot.com/2009/11/gridgain-is-presenting-at-dallas-jug.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkMCQXgyfip7ImA9WxNQF0o.&quot;"><id>tag:blogger.com,1999:blog-1680085285488970412.post-2165019789753996163</id><published>2009-09-23T16:37:00.001-07:00</published><updated>2009-09-23T22:34:20.696-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-09-23T22:34:20.696-07:00</app:edited><title>Endless Conversations with Cucumber</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://cukes.info/images/cucumber_logo.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 180px;" src="http://cukes.info/images/cucumber_logo.png" alt="" border="0" /&gt;&lt;/a&gt;There is a new kid on the block, &lt;span style="font-weight:bold;"&gt;Behavior Driven Development&lt;/span&gt;, or BDD, so naturally I rushed to check it out. I immediately came across &lt;a href="http://cukes.info/"&gt;Cucumber&lt;/a&gt;, a BDD testing framework for Ruby. The Cucumber site is fairly informative and you pretty much immediately understand that Cucumber is about writing &lt;span style="font-weight:bold;"&gt;"Given-&gt;When-&gt;Then"&lt;span style="font-style:italic;"&gt;&lt;/span&gt;&lt;/span&gt; test cases (or as they are called Scenarios). Unlike other test frameworks, developer can really &lt;span style="font-weight:bold;"&gt;"talk"&lt;/span&gt; to Cucumber. You can start implementing a simple use case as follows:&lt;blockquote&gt;&lt;span style="font-style:italic;"&gt;&lt;span style="font-weight:bold;"&gt;Given&lt;/span&gt; that a user arrives to any page&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;When&lt;/span&gt; no session exists&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Then&lt;/span&gt; user is redirected to Login page&lt;/span&gt;&lt;/blockquote&gt;Sounds pretty straight forward - one of the pros of using Cucumber is that your test scenarios are pretty much self-documenting. Once you write this scenario, you start executing it in Cucumber which will keep failing until it succeeds. When you will run it the first time, Cucumber will not understand any of this. As you keep going, you will have to define &lt;span style="font-style:italic;"&gt;"that a user arrives to"&lt;/span&gt; in Cucumber in order for the first step to pass. Then you will have to define &lt;span style="font-style:italic;"&gt;"no session exists"&lt;/span&gt;, and then &lt;span style="font-style:italic;"&gt;"user is redirected to"&lt;/span&gt;. So gradually you will be explaining to Cucumber what it is that your test case is doing.&lt;br /&gt;&lt;br /&gt;My initial impression was that this is way too cool. Looking from the outside, you can basically read the code in plain English which simplifies readability and understanding of what it is you are testing. But once I started looking at it a bit deeper, it occurred to me that testing this way on a serious project can be really dangerous. Here is why.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Cucumber Imposes Endless DSLs&lt;/span&gt;&lt;br /&gt;This comment may go towards BDD in general. Basically Cucumber allows you to create an endless Domain Specific Language (DSL) for your tests. Any new or existing developer can just &lt;span style="font-style:italic;"&gt;"speak"&lt;/span&gt; his mind to Cucumber which will inevitably lead to more and more new &lt;span style="font-style:italic;"&gt;"key phrases"&lt;/span&gt; for the overall DSL. In my view this may significantly hinder reusability of test cases and pretty soon you may end up in a position where you have thousands upon thousands of unmaintainable Cucumber scenarios. If you look at &lt;a href="http://www.gridgain.com"&gt;GridGain&lt;/a&gt; test cases for example (and we have about a thousand of test cases), we managed to keep them very concise only because they are mostly reusing existing test components available to them. One may argue that you can do the same in Cucumber, but this would be against overall Cucumber philosophy in my view.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Enterprises Need Structure&lt;/span&gt;&lt;br /&gt;Yes, enterprise projects need structure and developers need to be constrained by available libraries and APIs. You cannot just let every developer go willy-nilly by allowing him to &lt;span style="font-style:italic;"&gt;"talk freely"&lt;/span&gt; to the underlying testing framework. I have nothing against a specific DSL for testing (on the contrary, I would encourage it), but this DSL should be well defined and used by everyone in the company. &lt;br /&gt;&lt;br /&gt;I should mention, however, that on a relatively small project, testing the Cucumber way may be very productive. Since small projects are exactly the sweet spot for Ruby, Cucumber may very well be the best testing framework available for Ruby. But as the project will grow, using Cucumber will become more and more painful and unmaintainable. &lt;br /&gt;&lt;br /&gt;So, here is the test scenario for GridGain that you could create in Cucumber (forgive the sarcasm, but I couldn't resist):&lt;blockquote&gt;&lt;span style="font-style:italic;"&gt;&lt;span style="font-weight:bold;"&gt;Given&lt;/span&gt; that GridGain is a large enterprise project&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;When&lt;/span&gt; I write test scenarios in Cucumber&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Then&lt;/span&gt; I will shoot myself in the foot&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;P.S. I realize that this post may stir some disapproval from Cucumber community. In the interest of full disclosure I want to mention that I have not used Cucumber on a real project and simply am expressing my opinion here which is not based on actual project experience.&lt;/span&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;a href="http://www.gridgain.com"&gt;GridGain - Grid Computing Made Simple&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1680085285488970412-2165019789753996163?l=gridgain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://gridgain.blogspot.com/feeds/2165019789753996163/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=1680085285488970412&amp;postID=2165019789753996163" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1680085285488970412/posts/default/2165019789753996163?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1680085285488970412/posts/default/2165019789753996163?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/gridify/~3/quv0qF_cr6k/endless-conversations-with-cucumber.html" title="Endless Conversations with Cucumber" /><author><name>dsetrakyan</name><uri>http://www.blogger.com/profile/10016890172415226172</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="02085866846326042706" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://gridgain.blogspot.com/2009/09/endless-conversations-with-cucumber.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0EMQnY-fSp7ImA9WxNSF0U.&quot;"><id>tag:blogger.com,1999:blog-1680085285488970412.post-9063570333656812120</id><published>2009-08-31T17:20:00.000-07:00</published><updated>2009-08-31T23:14:43.855-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-08-31T23:14:43.855-07:00</app:edited><title>GridGain - Simplicity and Developer Usablity</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_LUKx0tSelZo/SpxtkOGn3tI/AAAAAAAAAF0/d8EaLmDPpNQ/s1600-h/boy-6-128x128.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 94px; height: 94px;" src="http://2.bp.blogspot.com/_LUKx0tSelZo/SpxtkOGn3tI/AAAAAAAAAF0/d8EaLmDPpNQ/s200/boy-6-128x128.png" alt="" id="BLOGGER_PHOTO_ID_5376292524202122962" border="0" /&gt;&lt;/a&gt;I just came across a pretty old &lt;a href="http://unmaintainable.wordpress.com/2007/11/18/a-quick-look-at-gridgain/"&gt;blog about GridGain&lt;/a&gt; where a user explained his experiences with &lt;a href="http://www.gridgain.com/"&gt;GridGain&lt;/a&gt; and had a brief Q&amp;amp;A via comments.&lt;br /&gt;&lt;br /&gt;When asked about difference between GridGain and Globus I think he gave a spot-on answer:&lt;br /&gt;&lt;blockquote  style="font-family:verdana;"&gt;&lt;span style="font-style: italic;"&gt;"No, I’ve never worked with the Globus Toolkit. From what I’ve read, Globus is more about collaboration of organizations (forming "virtual organizations") and solving all the problems that come with it like interoperability and security concerns.&lt;br /&gt;&lt;br /&gt;GridGain on the other hand has a &lt;span style="font-weight: bold;"&gt;strong focus on simplicity and developer usability&lt;/span&gt;. I think it’s perfect for "local" grids with perhaps a few dozens (or hundreds?) of nodes. You can certainly build a more comprehensive solution on top of GridGain, but the local computational grid use case is where it is best suited at the moment.&lt;br /&gt;&lt;br /&gt;In my concrete case at work we’ve got a highly secured internal network and need a convenient solution for distributing the workload to boost throughput. Globus looks like overkill, but I’m confident that GridGain is the right thing for us."&lt;/span&gt;&lt;/blockquote&gt;Although this conversation took place about 2 years ago and GridGain had since evolved into a Cloud Development Platform with aplenty of new features, our (quoting) &lt;span style="font-weight: bold;"&gt;"strong focus on simplicity and developer usability"&lt;/span&gt; has not changed. Even with such features in the pipeline as data grid and hands-free self-scaling on the clouds, GridGain developers will still enjoy the same simple &lt;span style="font-weight: bold;"&gt;deployment-less&lt;/span&gt; process:&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-weight: bold;"&gt;Change -&gt; Compile -&gt; Run On Cloud&lt;/span&gt;&lt;/blockquote&gt;Take a look at some of our &lt;a href="http://www.gridgain.com/screencasts.html"&gt;Online Screen Casts&lt;/a&gt; and find out for yourselves.&lt;br /&gt;&lt;p&gt; &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;a href="http://www.gridgain.com"&gt;GridGain - Grid Computing Made Simple&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1680085285488970412-9063570333656812120?l=gridgain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://gridgain.blogspot.com/feeds/9063570333656812120/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=1680085285488970412&amp;postID=9063570333656812120" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1680085285488970412/posts/default/9063570333656812120?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1680085285488970412/posts/default/9063570333656812120?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/gridify/~3/AfQ-lzqvvQ8/gridgain-simplicity-and-developer.html" title="GridGain - Simplicity and Developer Usablity" /><author><name>dsetrakyan</name><uri>http://www.blogger.com/profile/10016890172415226172</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="02085866846326042706" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_LUKx0tSelZo/SpxtkOGn3tI/AAAAAAAAAF0/d8EaLmDPpNQ/s72-c/boy-6-128x128.png" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total><feedburner:origLink>http://gridgain.blogspot.com/2009/08/gridgain-simplicity-and-developer.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkENQ345fyp7ImA9WxNTGU0.&quot;"><id>tag:blogger.com,1999:blog-1680085285488970412.post-4612449470085869111</id><published>2009-08-21T18:14:00.001-07:00</published><updated>2009-08-21T18:31:32.027-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-08-21T18:31:32.027-07:00</app:edited><title>What is a Native Cloud Application</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_LUKx0tSelZo/So9HiAPqwnI/AAAAAAAAAFs/PeJkLl5a7zM/s1600-h/gridgain30.png"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 135px; height: 200px;" src="http://4.bp.blogspot.com/_LUKx0tSelZo/So9HiAPqwnI/AAAAAAAAAFs/PeJkLl5a7zM/s200/gridgain30.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5372591529983132274" /&gt;&lt;/a&gt;With the latest push towards the cloud in the industry and some M&amp;A actions in cloud area we are beginning to be faced more and more with a simple question - what does it mean to build an application for a cloud? At &lt;a href="http://www.gridgain.com"&gt;GridGain &lt;/a&gt;we strongly believe that for an application to take a real advantage of the cloud it should have some of the following characteristcs: &lt;span style="font-weight:bold;"&gt;&lt;ul&gt;&lt;li&gt;Massively Parallel Computations&lt;/li&gt;&lt;li&gt;Massively Parallel Data&lt;/li&gt;&lt;li&gt;Auto-Scalability On the Cloud&lt;/li&gt;&lt;/ul&gt;&lt;/span&gt;I like to call applications with such characteristics &lt;span style="font-weight:bold;"&gt;Native Cloud Applications&lt;/span&gt;, or &lt;span style="font-weight:bold;"&gt;NCAs&lt;/span&gt;. With our upcoming GridGain 3.0 release we are planning to build a &lt;span style="font-weight:bold;"&gt;Cloud Development Platform&lt;/span&gt; that will allow you easily build and deploy NCAs on any of the existing cloud providers. So what do the above mentioned characteristics really mean?&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Massively Parallel Computation&lt;/span&gt;&lt;br /&gt;An application that supports massively Parallel Computation is a application that can simply distribute computations in an environment such as cloud, where resources can be added or removed at any moment either manually or automatically. If you add a resource, your application has to take immediate advantage of it and start distributing computations onto it (the vice versa should apply whenever you remove a resource). In GridGain we achieve massively parallel computations with our innovative MapReduce implementation, Automatic Peer Class loading, and Adapter Discovery and Communication SPIs.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Massively Parallel Data&lt;/span&gt;&lt;br /&gt;Well, you may think that most clouds already have distributed storage, so you can just use it. The reality here is that storage like S3 on Amazon provides a distributed disk storage. It does not provide distributed In-Memory storage like a distributed cache or data grid. Google GAE does provide it to a certain extent, but as a cloud, it is less flexible to use than Amazon. So, in order to take a full advantage of the cloud your application In-Memory storage must dynamically increase whenever new resources get added and vise versa. GridGain 3.0 is coming with a comprehensive dynamically partitioned data grid solution that does just that.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Auto-Scalability On The Cloud&lt;/span&gt;&lt;br /&gt;A &lt;span style="font-weight:bold;"&gt;NCA&lt;/span&gt; must be able to automatically instruct the cloud to scale up or scale down depending on current load and latency characteristics. In GridGain 3.0 user will be able to specify dynamic SLAs or strategies that will allow to add any kind of resource to a cloud, from addtional memory or CPU to starting or removing an arbitrary number of images.&lt;br /&gt;&lt;br /&gt;Although we are adding such a complex and comprehensive feature set, our emphasis on ease of use and ease of deployment has not changed. Stay tuned for our upcoming release.&lt;div class="blogger-post-footer"&gt;&lt;a href="http://www.gridgain.com"&gt;GridGain - Grid Computing Made Simple&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1680085285488970412-4612449470085869111?l=gridgain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://gridgain.blogspot.com/feeds/4612449470085869111/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=1680085285488970412&amp;postID=4612449470085869111" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1680085285488970412/posts/default/4612449470085869111?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1680085285488970412/posts/default/4612449470085869111?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/gridify/~3/TidxxE0-rAg/what-is-native-cloud-application.html" title="What is a Native Cloud Application" /><author><name>dsetrakyan</name><uri>http://www.blogger.com/profile/10016890172415226172</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="02085866846326042706" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_LUKx0tSelZo/So9HiAPqwnI/AAAAAAAAAFs/PeJkLl5a7zM/s72-c/gridgain30.png" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://gridgain.blogspot.com/2009/08/what-is-native-cloud-application.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEUBSHo6eip7ImA9WxNTFU4.&quot;"><id>tag:blogger.com,1999:blog-1680085285488970412.post-4244273476130972592</id><published>2009-08-17T12:08:00.000-07:00</published><updated>2009-08-17T12:10:59.412-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-08-17T12:10:59.412-07:00</app:edited><title>GridGain presents at Chicago Java User Group, August 18th</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.gridgain.com/images/chicago.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 200px; height: 126px;" src="http://www.gridgain.com/images/chicago.jpg" border="0" alt="" /&gt;&lt;/a&gt;GridGain will be presenting at &lt;a href="http://www.cjug.org/"&gt;CJUG - Chicago Java User Group&lt;/a&gt; at Chicago, IL, on Tuesday August 18th. If you are around the Chicago area and interesting in Cloud Computing - come see our presentation. As usual we'll have lively discussion on clouds and grids, get a preview on our upcoming GridGain 3.0 release, and as always plenty of live coding that you won't see anywhere else - live grid application in 10 minutes from scratch!&lt;br /&gt;&lt;br /&gt;Hope to see you there!&lt;div class="blogger-post-footer"&gt;&lt;a href="http://www.gridgain.com"&gt;GridGain - Grid Computing Made Simple&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1680085285488970412-4244273476130972592?l=gridgain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://gridgain.blogspot.com/feeds/4244273476130972592/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=1680085285488970412&amp;postID=4244273476130972592" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1680085285488970412/posts/default/4244273476130972592?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1680085285488970412/posts/default/4244273476130972592?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/gridify/~3/Sx47r4nlBxk/gridgain-presents-at-chicago-java-user.html" title="GridGain presents at Chicago Java User Group, August 18th" /><author><name>dsetrakyan</name><uri>http://www.blogger.com/profile/10016890172415226172</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="02085866846326042706" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://gridgain.blogspot.com/2009/08/gridgain-presents-at-chicago-java-user.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0YMQXkzfSp7ImA9WxJaFEg.&quot;"><id>tag:blogger.com,1999:blog-1680085285488970412.post-3959635484035909749</id><published>2009-08-04T14:59:00.000-07:00</published><updated>2009-08-04T22:46:20.785-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-08-04T22:46:20.785-07:00</app:edited><title>GridGain Is Growing And Growing Strong</title><content type="html">Last month was a very good month for &lt;a href="http://www.gridgain.com"&gt;GridGain &lt;/a&gt;as we achieved a few important milestones. First and foremost, &lt;span style="font-weight:bold;"&gt;we crossed a threshold of 1 million starts&lt;/span&gt;. Since GridGain product was first launched 2 years ago (around August 2007), GridGain nodes were started over a million times across the globe. This is a very conservative number... I am sure the real number is at least 30% higher. Here is a graph of GridGain starts since the beginning:&lt;br/&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://chart.apis.google.com/chart?chs=350x300&amp;chd=s:AABDFEDGINJLQcPRRbYpiqpy9&amp;cht=lc&amp;chxt=x,y&amp;chxl=0:|Jun||Sep||Nov||Jan||Mar||May||Jul||Sep||Nov||Jan||Mar||May||Jul|1:||118193"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 350px; height: 300px;" src="http://chart.apis.google.com/chart?chs=350x300&amp;chd=s:AABDFEDGINJLQcPRRbYpiqpy9&amp;cht=lc&amp;chxt=x,y&amp;chxl=0:|Jun||Sep||Nov||Jan||Mar||May||Jul||Sep||Nov||Jan||Mar||May||Jul|1:||118193" border="0" alt="" /&gt;&lt;/a&gt;The vertical axis has number of starts, and the horizontal axis shows time in months. According to these stats, a GridGain node is started at least &lt;span style="font-weight:bold;"&gt;every 30 seconds&lt;/span&gt; somewhere around the globe. &lt;br /&gt;&lt;br /&gt;Another pretty cool stat is our &lt;a href="http://www.gridgainsystems.com/jiveforums/index.jspa"&gt;forums&lt;/a&gt; usage. We have arguably the most active user community among all the products in the same space. Our forums have &lt;span style="font-weight:bold;"&gt;over 3,000 messages and over 80,000 views&lt;/span&gt; which is very good for a product in this space.&lt;br /&gt;&lt;br /&gt;An lastly, there is no bigger reward for any Open Source contributor than kind user testimonials. Here is a few of the latest testimonials we received from our users and customers:&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-style:italic;"&gt;&lt;span style="font-weight:bold;"&gt;Thanks a lot for your help and for the great product. I'm starting to use Gridgain for one of our production systems and up to this point I had only joy! Keep up the good work.&lt;/span&gt;&lt;br /&gt;--jjoubert&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="font-style:italic;"&gt;&lt;span style="font-weight:bold;"&gt;I am a big fan of GridGain. We at [...] implemented our solutions with GridGain capability. It is very impressive to my clients whenever we did presentations. Excellent products which helps us solving big problem for us. [...] offers software on SaaS market space which requires huge computing power when number of clients increase. GridGain provides the answer to our problem.&lt;/span&gt;&lt;br /&gt;--Charles Hsiao&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;&lt;span style="font-weight:bold;"&gt;Thanks for an amazing product. I had considered several others, but GridGain is the most intuitive and well-documented.&lt;/span&gt;&lt;br /&gt;--Andrew Hallock&lt;/span&gt;&lt;/blockquote&gt;You can find more user testimonials &lt;a href="http://www.gridgain.com/testimonials.html"&gt;here&lt;/a&gt;. It's the usage stats and testimonials like this that keep us motivated to continually make GridGain the best Open Cloud Platform out there.&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;a href="http://www.gridgain.com"&gt;GridGain - Grid Computing Made Simple&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1680085285488970412-3959635484035909749?l=gridgain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://gridgain.blogspot.com/feeds/3959635484035909749/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=1680085285488970412&amp;postID=3959635484035909749" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1680085285488970412/posts/default/3959635484035909749?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1680085285488970412/posts/default/3959635484035909749?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/gridify/~3/LF2KV6Vu4hY/gridgain-is-growing-and-growing-strong.html" title="GridGain Is Growing And Growing Strong" /><author><name>dsetrakyan</name><uri>http://www.blogger.com/profile/10016890172415226172</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="02085866846326042706" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://gridgain.blogspot.com/2009/08/gridgain-is-growing-and-growing-strong.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEIFQX46fSp7ImA9WxJVFU8.&quot;"><id>tag:blogger.com,1999:blog-1680085285488970412.post-361220202688856500</id><published>2009-07-02T02:17:00.001-07:00</published><updated>2009-07-02T02:21:50.015-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-07-02T02:21:50.015-07:00</app:edited><title>TCP tuning on Linux</title><content type="html">I came across an interesting article from US Department of Energy which goes in detail on various Linux TCP parameters that can be tuned to achieve better performance. I think it's a must read for anyone deploying applications on Linux:&lt;br /&gt;&lt;a href="http://fasterdata.es.net/TCP-tuning/linux.html"&gt;&lt;br /&gt;http://fasterdata.es.net/TCP-tuning/linux.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;a href="http://www.gridgain.com"&gt;GridGain - Grid Computing Made Simple&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1680085285488970412-361220202688856500?l=gridgain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://gridgain.blogspot.com/feeds/361220202688856500/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=1680085285488970412&amp;postID=361220202688856500" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1680085285488970412/posts/default/361220202688856500?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1680085285488970412/posts/default/361220202688856500?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/gridify/~3/19vv7bGbeHk/tcp-tuning-on-linux.html" title="TCP tuning on Linux" /><author><name>dsetrakyan</name><uri>http://www.blogger.com/profile/10016890172415226172</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="02085866846326042706" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://gridgain.blogspot.com/2009/07/tcp-tuning-on-linux.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUANRHk-eip7ImA9WxJVFEo.&quot;"><id>tag:blogger.com,1999:blog-1680085285488970412.post-4827890203529033735</id><published>2009-06-30T11:30:00.000-07:00</published><updated>2009-07-01T12:49:55.752-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-07-01T12:49:55.752-07:00</app:edited><title>Saving Money on Inter-Cloud Communication with GridGain</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_LUKx0tSelZo/SkpawUWCftI/AAAAAAAAAFk/Ay3x_5wdbok/s1600-h/My-Network-256x256.png"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 96px; height: 96px;" src="http://4.bp.blogspot.com/_LUKx0tSelZo/SkpawUWCftI/AAAAAAAAAFk/Ay3x_5wdbok/s200/My-Network-256x256.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5353190893224623826" /&gt;&lt;/a&gt;As you probably may have already read, &lt;a href="http://www.gridgain.com"&gt;GridGain&lt;/a&gt; 3.0 will come with TCP discovery which in turn will support discovery of different cluster groups. For example, you can have your EC2 Cloud belong to one network group and your boxes on your local network belong to another, and all nodes in both groups will discover each other automatically even though there is no direct connectivity between some of them. So, from user stand point, you get a view on the whole grid without worrying about underlying groups or connectivity constraints. However, here is another advantage of such network topology that I have not mentioned before - &lt;span style="font-weight:bold;"&gt;it saves you money&lt;/span&gt;. &lt;br /&gt;&lt;br /&gt;Let's say you have &lt;span style="font-style:italic;"&gt;Group1&lt;/span&gt; running on in your local network and &lt;span style="font-style:italic;"&gt;Group2&lt;/span&gt; running on EC2 cloud. The way GridGain implements it, there would be at least one network tunnel open between one hub node &lt;span style="font-style:italic;"&gt;H1&lt;/span&gt; in &lt;span style="font-style:italic;"&gt;Group1&lt;/span&gt; and at least one hub node &lt;span style="font-style:italic;"&gt;H2&lt;/span&gt; in &lt;span style="font-style:italic;"&gt;Group2&lt;/span&gt; (there can be more tunnels for redundancy). So, all the communication that goes from any node in &lt;span style="font-style:italic;"&gt;Group1&lt;/span&gt; to any node in &lt;span style="font-style:italic;"&gt;Group2&lt;/span&gt; would have to go through this tunnel, essentially from hub &lt;span style="font-style:italic;"&gt;H1&lt;/span&gt; to hub &lt;span style="font-style:italic;"&gt;H2&lt;/span&gt; or vice versa.&lt;br /&gt;&lt;br /&gt;So, imagine now that you have a node &lt;span style="font-style:italic;"&gt;N1&lt;/span&gt; in &lt;span style="font-style:italic;"&gt;Group1&lt;/span&gt; sending a message to all the nodes in cloud &lt;span style="font-style:italic;"&gt;Group2&lt;/span&gt;. With standard clustering approach, node &lt;span style="font-style:italic;"&gt;N1&lt;/span&gt; would have to have a physical connection with all nodes in &lt;span style="font-style:italic;"&gt;Group2&lt;/span&gt;. This would mean that the same message would have to be send to each node in &lt;span style="font-style:italic;"&gt;Group2&lt;/span&gt;. As in cloud environments you pay for external traffic, and this traffic is external, if you have &lt;span style="font-style:italic;"&gt;M&lt;/span&gt; number of nodes in cloud &lt;span style="font-style:italic;"&gt;Group2&lt;/span&gt;, you would have to pay &lt;span style="font-style:italic;"&gt;M&lt;/span&gt; times for the same message. However, in GridGain approach, the message path would be as following:&lt;blockquote&gt;&lt;span style="font-style:italic;"&gt;N1 -&gt; H1 -&gt; H2 -&gt; Group2&lt;/span&gt;.&lt;/blockquote&gt; This means that there would be only one message exchanged between the groups (&lt;span style="font-style:italic;"&gt;H1 -&gt; H2&lt;/span&gt;), and then &lt;span style="font-style:italic;"&gt;H2&lt;/span&gt; would distribute it internally within the cloud &lt;span style="font-style:italic;"&gt;Group2&lt;/span&gt;. As internal cloud traffic is free, you only pay for one message sent from &lt;span style="font-style:italic;"&gt;H1&lt;/span&gt; to &lt;span style="font-style:italic;"&gt;H2&lt;/span&gt;. Given that number of nodes in the cloud &lt;span style="font-style:italic;"&gt;Group2&lt;/span&gt; is dynamic and can grow very fast upon request, such cost-optimized communication between external nodes and the cloud essentially becomes &lt;span style="font-weight:bold;"&gt;the most cost-effective way to communicate with the cloud&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;On top of that, &lt;a href="http://www.gridgain.com"&gt;GridGain&lt;/a&gt; will also support one way connections. So, for example, if your cloud firewall is configured not to allow external connections but to allow incoming connections, then &lt;span style="font-style:italic;"&gt;H1&lt;/span&gt; will connect to &lt;span style="font-style:italic;"&gt;H2&lt;/span&gt;. If your firewall is configured the other way, then &lt;span style="font-style:italic;"&gt;H2&lt;/span&gt; will connect to &lt;span style="font-style:italic;"&gt;H1&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Stay tuned for &lt;a href="http://www.gridgain.com"&gt;GridGain 3.0&lt;/a&gt; release scheduled for Q4 this year.&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;a href="http://www.gridgain.com"&gt;GridGain - Grid Computing Made Simple&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1680085285488970412-4827890203529033735?l=gridgain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://gridgain.blogspot.com/feeds/4827890203529033735/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=1680085285488970412&amp;postID=4827890203529033735" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1680085285488970412/posts/default/4827890203529033735?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1680085285488970412/posts/default/4827890203529033735?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/gridify/~3/M2lUPhspPA4/saving-money-on-inter-cloud.html" title="Saving Money on Inter-Cloud Communication with GridGain" /><author><name>dsetrakyan</name><uri>http://www.blogger.com/profile/10016890172415226172</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="02085866846326042706" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_LUKx0tSelZo/SkpawUWCftI/AAAAAAAAAFk/Ay3x_5wdbok/s72-c/My-Network-256x256.png" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://gridgain.blogspot.com/2009/06/saving-money-on-inter-cloud.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEYCRX4_cCp7ImA9WxJWEEg.&quot;"><id>tag:blogger.com,1999:blog-1680085285488970412.post-5060043498181255719</id><published>2009-06-15T00:07:00.000-07:00</published><updated>2009-06-15T00:49:24.048-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-06-15T00:49:24.048-07:00</app:edited><title>GridGain at Jazoon 09</title><content type="html">&lt;a href="http://jazoon.com/"&gt;&lt;img src="http://www.gridgain.com/images/jazoon_logo.png"/&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.gridgain.com"&gt;GridGain&lt;/a&gt; will be presenting at &lt;a href="http://jazoon.com/"&gt;Jazoon09&lt;/a&gt; - International Conference on Java Technology at Zurich, Switzerland, on Tuesday June 23rd. If you are around the Zurich and attending the conference - come see our presentation. &lt;br /&gt;&lt;br /&gt;As usual you can expect lively discussions in the areas of:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Compute and Data Grids&lt;/li&gt;&lt;li&gt;Cloud Computing&lt;/li&gt;&lt;li&gt;MapReduce&lt;/li&gt;&lt;li&gt;Scalability&lt;/li&gt;&lt;/ul&gt; And of course as always plenty of live coding that you won't see anywhere else - &lt;span style="font-weight:bold;"&gt;live grid application in 10 minutes from scratch&lt;/span&gt;!&lt;br /&gt;&lt;br /&gt;Hope to see you there.&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;a href="http://www.gridgain.com"&gt;GridGain - Grid Computing Made Simple&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1680085285488970412-5060043498181255719?l=gridgain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://gridgain.blogspot.com/feeds/5060043498181255719/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=1680085285488970412&amp;postID=5060043498181255719" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1680085285488970412/posts/default/5060043498181255719?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1680085285488970412/posts/default/5060043498181255719?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/gridify/~3/ygZtzuqlxUU/gridgain-will-be-presenting-at-jazoon09.html" title="GridGain at Jazoon 09" /><author><name>dsetrakyan</name><uri>http://www.blogger.com/profile/10016890172415226172</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="02085866846326042706" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://gridgain.blogspot.com/2009/06/gridgain-will-be-presenting-at-jazoon09.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D08ARnc_fip7ImA9WxJXFU4.&quot;"><id>tag:blogger.com,1999:blog-1680085285488970412.post-7263491310221872606</id><published>2009-06-09T00:57:00.000-07:00</published><updated>2009-06-09T01:24:07.946-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-06-09T01:24:07.946-07:00</app:edited><title>GC3D - 3D Rendering Engine Using GridGain</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://code.google.com/p/gc3d"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 153px; height: 41px;" src="http://code.google.com/p/gc3d/logo?logo_id=1242322498" border="0" alt="" /&gt;&lt;/a&gt;It turns out that guys at &lt;a href="http://code.google.com/p/gc3d/"&gt;GC3D&lt;/a&gt; have been busy. I have recently found out that they have created a &lt;span style="font-weight:bold;"&gt;web-based 3D distributed rendering engine&lt;/span&gt;, using &lt;a href="http://www.gridgain.com"&gt;GridGain&lt;/a&gt; as a distributed computing framework.&lt;br /&gt;&lt;br /&gt;Here is a pretty cool animation created with this framework - Meteor Shower by Marijn Swenne:&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/3Aakj51NSkk&amp;hl=en&amp;fs=1&amp;"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/3Aakj51NSkk&amp;hl=en&amp;fs=1&amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;Here are some other interesting examples created with &lt;a href="http://hof.povray.org/" rel="nofollow"&gt;POV-Ray&lt;/a&gt; or &lt;a href="http://megapov.inetart.net/samples.html" rel="nofollow"&gt;MegaPOV&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The project allows you to submit POV files for processing from the website and provides some monitoring on the status of grid topology and active grid tasks while rendering happens in the background on the grid.&lt;br /&gt;&lt;br /&gt;Technologies used involve &lt;a href="http://www.gridgain.com"&gt;GridGain&lt;/a&gt; as Grid Computing framework, POV-Ray / MegaPOV as 3D Rendering engine (ray-tracing), MEncoder to encode the video, x264 as video codec, JQuery as JavaScript library, Tomcat as web-server, etc...&lt;br /&gt;&lt;br /&gt;It is really nice to see what amazing things you can achieve using the right tools at hand and distributed computing to speed things up.&lt;div class="blogger-post-footer"&gt;&lt;a href="http://www.gridgain.com"&gt;GridGain - Grid Computing Made Simple&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1680085285488970412-7263491310221872606?l=gridgain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://gridgain.blogspot.com/feeds/7263491310221872606/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=1680085285488970412&amp;postID=7263491310221872606" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1680085285488970412/posts/default/7263491310221872606?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1680085285488970412/posts/default/7263491310221872606?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/gridify/~3/sbw9yi08kJw/3d-rendering-engine-using-gridgain.html" title="GC3D - 3D Rendering Engine Using GridGain" /><author><name>dsetrakyan</name><uri>http://www.blogger.com/profile/10016890172415226172</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="02085866846326042706" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://gridgain.blogspot.com/2009/06/3d-rendering-engine-using-gridgain.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CE4MSHg6cSp7ImA9WxJQEE4.&quot;"><id>tag:blogger.com,1999:blog-1680085285488970412.post-6174408203175985552</id><published>2009-05-22T15:35:00.000-07:00</published><updated>2009-05-22T15:56:29.619-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-05-22T15:56:29.619-07:00</app:edited><title>GridGain Pearls (Continued...)</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_LUKx0tSelZo/ShcrAf7PBCI/AAAAAAAAAE8/13oWfvr3Qgg/s1600-h/boy-1-128x128.png"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 96px; height: 96px;" src="http://2.bp.blogspot.com/_LUKx0tSelZo/ShcrAf7PBCI/AAAAAAAAAE8/13oWfvr3Qgg/s200/boy-1-128x128.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5338783170840953890" /&gt;&lt;/a&gt;Nikita started &lt;a href="http://www.jroller.com/nivanov/entry/gridgain_pearls"&gt;GridGain Pearls&lt;/a&gt; list last week and I think it's a great idea. Here are some more &lt;a href="http://www.gridgain.com"&gt;GridGain&lt;/a&gt; pearls to add to the list. Once we have a full list, we will post it on the &lt;a href="http://wiki.gridgain.org"&gt;Wiki&lt;/a&gt;. Feel free to comment with your own.&lt;br /&gt;&lt;br/&gt;&lt;br/&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;How to inject user resources into your grid tasks or jobs?&lt;/span&gt;&lt;span style="font-style:italic;"&gt;&lt;pre&gt;public class MyTask extends GridTaskAdapter&lt;A, B&gt; {&lt;br /&gt;    ...&lt;br /&gt;    @GridUserResouce&lt;br /&gt;    MyResourceClass resource;&lt;br /&gt;    ...&lt;br /&gt;}&lt;/pre&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;How to inject Spring beans into yoru tasks or jobs?&lt;/span&gt;&lt;span style="font-style:italic;"&gt;&lt;pre&gt;public class MyJob extends GridJobAdapter {&lt;br /&gt;    ...&lt;br /&gt;    @GridSpringResource(resourceName="myBean")&lt;br /&gt;    MyBeanClass myBean;&lt;br /&gt;    ...&lt;br /&gt;}&lt;/pre&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;How to get grid node topology version?&lt;/span&gt;&lt;span style="font-style:italic;"&gt;&lt;pre&gt;long ver = GridFactory.getGrid().getTopologyHash();&lt;/pre&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;How to listen to node topology changes?&lt;/span&gt;&lt;span style="font-style:italic;"&gt;&lt;pre&gt;GridFactory.getGrid().addDiscoveryListener(new GridDiscoveryListener() {&lt;br /&gt;    public void onDiscovery(GridDiscoveryEventType evt, GridNode node) {&lt;br /&gt;        ...&lt;br /&gt;    }&lt;br /&gt;});&lt;/pre&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;How to execute grid task asynchronouosly?&lt;/span&gt;&lt;span style="font-style:italic;"&gt;&lt;pre&gt;GridFactory.getGrid().execute(MyTask.class, someArg, new GridTaskListener() {&lt;br /&gt;    public void onFinished(GridTaskFuture&lt;MyTask&gt; future) {&lt;br /&gt;       ...&lt;br /&gt;    }&lt;br /&gt;}&lt;/pre&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;How to query grid events from all grid nodes?&lt;/span&gt;&lt;span style="font-style:italic;"&gt;&lt;pre&gt;Grid grid = GridFactory.getGrid();&lt;br /&gt;grid.query(new MyGridEventFilter(), grid.getAllNodes(), 2000 /*timeout*/);&lt;/pre&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;How to print CPU utilization (or any other metric) for all nodes?&lt;/span&gt;&lt;span style="font-style:italic;"&gt;&lt;pre&gt;for (GridNode node : GridFactory.getGrid().getAllNodes()) {&lt;br /&gt;    System.out.println("Node-ID=" + node.getId() + &lt;br /&gt;        ", Cpu-Utilization=" + node.getMetrics().getCurrentCpuLoad());&lt;br /&gt;}&lt;/pre&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;a href="http://www.gridgain.com"&gt;GridGain - Grid Computing Made Simple&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1680085285488970412-6174408203175985552?l=gridgain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://gridgain.blogspot.com/feeds/6174408203175985552/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=1680085285488970412&amp;postID=6174408203175985552" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1680085285488970412/posts/default/6174408203175985552?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1680085285488970412/posts/default/6174408203175985552?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/gridify/~3/mw6Jx-FgZLc/gridgain-pearls-continued.html" title="GridGain Pearls (Continued...)" /><author><name>dsetrakyan</name><uri>http://www.blogger.com/profile/10016890172415226172</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="02085866846326042706" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_LUKx0tSelZo/ShcrAf7PBCI/AAAAAAAAAE8/13oWfvr3Qgg/s72-c/boy-1-128x128.png" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://gridgain.blogspot.com/2009/05/gridgain-pearls-continued.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0MDR346eyp7ImA9WxJRFE4.&quot;"><id>tag:blogger.com,1999:blog-1680085285488970412.post-6727461831860109835</id><published>2009-05-15T18:57:00.000-07:00</published><updated>2009-05-15T19:04:36.013-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-05-15T19:04:36.013-07:00</app:edited><title>GridGain Double Jug Rally</title><content type="html">Nikita will be speaking at Triangle JUG (Raleigh, NC) on May 18th and Charlotte JUG on May 19th. As always, this is going to be a fun presentation with plenty of live coding and exchange of ideas. &lt;br /&gt;&lt;br /&gt;If you are nearby - please come see your fellow Java, grid and cloud developers and learn about &lt;a href="http://www.gridgain.com"&gt;GridGain&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;May 18th - Triangle JUG: &lt;a href="http://trijug.org/"&gt;http://trijug.org/&lt;/a&gt;&lt;br /&gt;May 19th - Charlotte JUG: &lt;a href="http://www.charlottejug.org/ "&gt;http://www.charlottejug.org/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;a href="http://www.gridgain.com"&gt;GridGain - Grid Computing Made Simple&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1680085285488970412-6727461831860109835?l=gridgain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://gridgain.blogspot.com/feeds/6727461831860109835/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=1680085285488970412&amp;postID=6727461831860109835" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1680085285488970412/posts/default/6727461831860109835?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1680085285488970412/posts/default/6727461831860109835?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/gridify/~3/Bc6P3FGrrhc/gridgain-double-jug-rally.html" title="GridGain Double Jug Rally" /><author><name>dsetrakyan</name><uri>http://www.blogger.com/profile/10016890172415226172</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="02085866846326042706" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://gridgain.blogspot.com/2009/05/gridgain-double-jug-rally.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUUNRHY7fyp7ImA9WxJREUw.&quot;"><id>tag:blogger.com,1999:blog-1680085285488970412.post-7957880036101844430</id><published>2009-05-11T23:16:00.000-07:00</published><updated>2009-05-12T00:28:15.807-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-05-12T00:28:15.807-07:00</app:edited><title>Grids vs. Clouds</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_LUKx0tSelZo/SgkktzIpGrI/AAAAAAAAAE0/rOdTwGdioAk/s1600-h/work-group-128x128.png"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 96px; height: 96px;" src="http://4.bp.blogspot.com/_LUKx0tSelZo/SgkktzIpGrI/AAAAAAAAAE0/rOdTwGdioAk/s200/work-group-128x128.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5334835602836232882" /&gt;&lt;/a&gt;I constantly run into conversations where people use the word Grid and Cloud interchangeably without actually understanding what each one really means. When I actually ask what do they mean by Grid or Cloud - the usual answer is that they are the same. Well, they are not.&lt;br /&gt;&lt;br /&gt;Cloud Computing is on-demand provisioning of virtual resources and services around those resources. For example, if a cloud provider wants to provide a data storage (like S3), then the same provider also needs to provide APIs to access and manipulate this data storage. If a cloud provider allows for allocation of virtual instances, then the same provider must provide APIs to create images and deploy them on those instances.&lt;br /&gt;&lt;br /&gt;Grid Computing, on the other hand, has to do with providing ability to join multiple computers together for the purpose of solving computational problems. It deals with such issues as auto-node discovery, dynamic deployment and redeployment of a problem, topology and collision resolutions, load balancing and monitoring, etc... A grid should allow you to take a problem, determine the optimal node topology for it, dynamically deploy the problem onto the chosen topology, provide means to divide the problem into multiple parts for parallel execution, distribute the problem within topology, gather results, and return them to user. In the middle of all that, a grid should automatically scale computations as load changes by transparently utilizing additional nodes while remaining fault tolerant.&lt;br /&gt;&lt;br /&gt;There is an obvious connection between grids and clouds. If clouds let you easily deploy your application on 20 nodes, then grids should easily connect those applications into a cluster. This makes it absolutely vital to allow users seamlessly grid-enable their applications on the clouds. At &lt;a href="http://www.gridgain.com"&gt;GridGain&lt;/a&gt; we are working on making the process of &lt;span style="font-weight:bold;"&gt;gridifying cloud applications&lt;/span&gt; as transparent as possible. For example, with GridGain 3.0, user applications will transparently auto-discover each other on a cloud, without any additional effort or configuration. On top of that GridGian will allow combining different clouds into one joined topology - this way you can have a few computers from your local datacenter work together with virtual instances started on a cloud.&lt;br /&gt;&lt;br /&gt;So, to summarise, in majority of the cases (with some exceptions) cloud computing has to do with providing virtual hardware resources together with APIs that allow access to those resources. Grid computing is at a higher level - it is the middleware that allows you to join multiple physical or virtual resources together to solve computational problems in parallel fashion.&lt;div class="blogger-post-footer"&gt;&lt;a href="http://www.gridgain.com"&gt;GridGain - Grid Computing Made Simple&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1680085285488970412-7957880036101844430?l=gridgain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://gridgain.blogspot.com/feeds/7957880036101844430/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=1680085285488970412&amp;postID=7957880036101844430" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1680085285488970412/posts/default/7957880036101844430?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1680085285488970412/posts/default/7957880036101844430?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/gridify/~3/ziDIWilLU7w/grids-vs-clouds.html" title="Grids vs. Clouds" /><author><name>dsetrakyan</name><uri>http://www.blogger.com/profile/10016890172415226172</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="02085866846326042706" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_LUKx0tSelZo/SgkktzIpGrI/AAAAAAAAAE0/rOdTwGdioAk/s72-c/work-group-128x128.png" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://gridgain.blogspot.com/2009/05/grids-vs-clouds.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0MNSHk5eip7ImA9WxJTGUg.&quot;"><id>tag:blogger.com,1999:blog-1680085285488970412.post-1385462016714687561</id><published>2009-04-27T16:49:00.000-07:00</published><updated>2009-04-28T14:51:39.722-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-04-28T14:51:39.722-07:00</app:edited><title>GridGain Presenting At JavaOne 2009</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://java.sun.com/javaone"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 170px; height: 93px;" src="http://www.gridgain.com/images/javaone09_joinme.gif" alt="" border="0" /&gt;&lt;/a&gt;&lt;a href="http://www.gridgain.com/"&gt;GridGain &lt;/a&gt;will be presenting at JavaOne 2009. This is our first chance to present at JavaOne, so we are very excited. Our session is on &lt;span style="font-weight: bold;"&gt;June 2nd at 10:50am at Esplanade 302 room&lt;/span&gt;. Our presentation is in many ways different from other presentations you will see as majority of the time we spend on coding examples which usually stir up interesting discussions.&lt;br /&gt;Here are some of the coding examples you can expect to see:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Executing grid tasks on a grid with AOP and @Gridify annotations&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Executing grid tasks on a grid using direct API calls&lt;/li&gt;&lt;li&gt;Grid job auto-failover demonstration&lt;/li&gt;&lt;li&gt;Grid node auto-discovery demonstration&lt;/li&gt;&lt;li&gt;Grid-enabled JUnit test demonstration&lt;/li&gt;&lt;/ul&gt;If IP-Multicast will be enabled, then expect some of your personal laptops to participate in the grid - this is usually lot's of fun. Also, we will be touching interesting subjects on grid and cloud computing. &lt;br /&gt;&lt;br /&gt;So, if you are at JavaOne, you should definitely stop by!&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;a href="http://www.gridgain.com"&gt;GridGain - Grid Computing Made Simple&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1680085285488970412-1385462016714687561?l=gridgain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://gridgain.blogspot.com/feeds/1385462016714687561/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=1680085285488970412&amp;postID=1385462016714687561" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1680085285488970412/posts/default/1385462016714687561?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1680085285488970412/posts/default/1385462016714687561?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/gridify/~3/eiaVRmK1OmI/gridgain-presenting-at-javaone-2009.html" title="GridGain Presenting At JavaOne 2009" /><author><name>dsetrakyan</name><uri>http://www.blogger.com/profile/10016890172415226172</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="02085866846326042706" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://gridgain.blogspot.com/2009/04/gridgain-presenting-at-javaone-2009.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkYFRH87fip7ImA9WxVaGUg.&quot;"><id>tag:blogger.com,1999:blog-1680085285488970412.post-3075625535830264286</id><published>2009-04-16T18:04:00.000-07:00</published><updated>2009-04-16T23:35:15.106-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-04-16T23:35:15.106-07:00</app:edited><title>Google App Engine - Where Does It Fit?</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://code.google.com/appengine/images/appengine_lowres.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 96px;" src="http://code.google.com/appengine/images/appengine_lowres.jpg" border="0" alt="" /&gt;&lt;/a&gt;This is yet another blog about Google App Engine (GAE) recent release of Java. Naturally, as an interested party, I rushed immediately to deploy my sample GridGain app on it, but immediately realized that you cannot deploy any sort of clustering or grid applications on the Google App Engine. This is simply not something they wish to support, happily leaving this portion of the market to Amazon EC2 customers. &lt;br /&gt;&lt;br /&gt;A good way to think about GAE for Java is as of a &lt;span style="font-weight:bold;"&gt;Plain Vanilla Servlet Container Hosting&lt;/span&gt;. If you have a standard J2EE app that simply processes web requests and accesses DB data, then GAE is an ideal solution for you and will be much easier to use than Amazon EC2. But if your application needs to do anything beyond retrieving and showing DB data, then with GAE you will run into a brick wall. So, if GAE fits, if fits like a glove, but if it doesn't - then there is nothing you can do to help it. &lt;br /&gt;&lt;br /&gt;Here is the list of some limitations you may wish to consider when starting with GAE:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;1. You have no control over number of deployment instances.&lt;/span&gt;&lt;br /&gt;This may be a non-issue for trivial use cases, but you immediately hit a wall if your application requires any knowledge of clustering or even of threads. For example, let's say you need to generate a web report that would normally take about 1 minute to generate in a single thread, which is normally too long for a web-request (GAE will automatically time it out after 30 secs). Ideally, to make it run faster, I would split it into multiple sub-parts, run it in parallel on several nodes, aggregate the results and produce a response to user within, say, 5 seconds. &lt;br /&gt;&lt;br /&gt;However, there is nothing you can do to speed it up on GAE. Firstly, you have no idea how many parts to split the report into, and even if you did, there is no way to tell GAE that every part should run on a separate CPU or on a separate server instance altogether. On top of that, what if 9 out of 10 sup-parts completed successfully and 1 failed? Again, you cannot instruct GAE to retry just the part that failed - the whole request will have to be retried.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;2. You have no control over load balancing&lt;/span&gt;&lt;br /&gt;Not every application is a website and not every application can be measured in number of page hits. The underlying notion here is that if you are not a website, then GAE is not for you. However even if you are a website, not being able to control load-balancing can be quite limiting. If you take my report generation example above, GAE again would not be able to load balance it at all.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;3. You cannot use any of the existing clustering infrastructure you have&lt;/span&gt;&lt;br /&gt;If you already make use of clustering within your application (like discovery of different app server nodes, exchanging messages between app servers, using existing caching or compute grid products, etc..), you cannot do it in GAE. You are limited to the set of caching and data storage libraries provided by GAE only.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;4. You cannot use full set of the JDK classes or services&lt;/span&gt;&lt;br /&gt;Google published &lt;a href="http://code.google.com/appengine/docs/java/jrewhitelist.html"&gt;JRE White List&lt;/a&gt; for a list of JDK classes supported by the App Engine. The main limitation there is lack of AWT or Swing packages. Although not often used in web apps, this may be quite limiting for apps that use AWT for purposes other than thick UI, like dynamic image generation, etc... I should mention that GAE does offer its own image manipulation service to compensate for this.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;5. You cannot access or store files&lt;/span&gt;&lt;br /&gt;The only way to access a file is to put it in WAR and then get it off the classpath. Creation of files is prohibited - you can only store data using GAE datastore services. This alone can become a show-stopper for many applications, as even if your application does not access or store any files, it may very well depend on the libraries that do.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;6. You don't get any access to the box your app is deployed on&lt;/span&gt;&lt;br /&gt;From GAE standpoint, this limitation is justified. The GAE is running multiple WARs from different users on the same app server, so by giving you direct access to the box, they will be giving you access to the code that does not belong to you. On the other hand, not being able to access the box will scare many traditional sys admins who generally like to poke around production environments, look at OS-specific logs, do tuning, and other environment and runtime geeky stuff.&lt;br /&gt;&lt;br /&gt;I will stop here as far as listing limitations. I think it is quite clear that GAE is not targeting enterprises as their customers. On the contrary, it looks like are they willingly leaving this portion of the market to Amazon EC2 and are concentrating on simple web application hosting which is a huge market on its own. The way they are beating Amazon here is by being elegantly simpler to use and deploy - there is no image creation, nor should user be concerned about number of images that are started. GAE will automatically manage web load and add CPU's to your app as load changes.&lt;br /&gt;&lt;br /&gt;So, if you are a small business owner and need a quick and cheap hosting solution - go with GAE!&lt;div class="blogger-post-footer"&gt;&lt;a href="http://www.gridgain.com"&gt;GridGain - Grid Computing Made Simple&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1680085285488970412-3075625535830264286?l=gridgain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://gridgain.blogspot.com/feeds/3075625535830264286/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=1680085285488970412&amp;postID=3075625535830264286" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1680085285488970412/posts/default/3075625535830264286?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1680085285488970412/posts/default/3075625535830264286?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/gridify/~3/J1jPevAqFJA/google-app-engine-where-does-if-fit.html" title="Google App Engine - Where Does It Fit?" /><author><name>dsetrakyan</name><uri>http://www.blogger.com/profile/10016890172415226172</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="02085866846326042706" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total><feedburner:origLink>http://gridgain.blogspot.com/2009/04/google-app-engine-where-does-if-fit.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUYBRHY5eSp7ImA9WxVbEUw.&quot;"><id>tag:blogger.com,1999:blog-1680085285488970412.post-4058624388506633714</id><published>2009-03-26T17:37:00.000-07:00</published><updated>2009-03-26T18:25:55.821-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-03-26T18:25:55.821-07:00</app:edited><title>Auto-Searches On The Cloud</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_LUKx0tSelZo/ScwqqeXljPI/AAAAAAAAAEs/rvf6MoFIGNw/s1600-h/search-folder-128x128.png"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 96px; height: 96px;" src="http://1.bp.blogspot.com/_LUKx0tSelZo/ScwqqeXljPI/AAAAAAAAAEs/rvf6MoFIGNw/s200/search-folder-128x128.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5317672169212579058" /&gt;&lt;/a&gt;In GridGain 3.0 we are coming up with a set of useful annotations to automate grid-enabling of common functionality that works on ranges and collections. The whole idea is that given a certain collection, GridGain can automatically split that collection into sub-collections, send them to remote nodes for execution, get results back, reduce them and return them back to user. Sort of &lt;span style="font-weight: bold;"&gt;automatic map-reduce for collecions&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Let's take &lt;span style="font-weight: bold;"&gt;search&lt;/span&gt; for example. You can model almost any search as taking a collection of values, picking the right value in that collection, and returning that value. For example, let's assume that we need to find the &lt;span style="font-weight: bold;"&gt;max&lt;/span&gt; value in a collection (forgive the simplicity of the example, in real life you would probably be grid-enabling searches that are a lot more complex than this one). &lt;br /&gt;&lt;br /&gt;In Java this would look like the following:&lt;pre name="code" class="java:nogutter"&gt;&lt;br /&gt;public Integer findMax(Collection&amp;lt;Integer&amp;gt; vals) {&lt;br /&gt;  Integer max = Collections.max(vals);&lt;br /&gt;&lt;br /&gt;  return max;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;If we were to grid-enable above functionality, we would have to do the following:&lt;ol&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Map Step&lt;/span&gt;: Split the initial collection into a number of sub-collections&lt;/li&gt;&lt;li&gt;Send each sub-collection to a remote node&lt;/li&gt;&lt;li&gt;Have every remote node find a max value in the sub-collection assigned to it and return it.&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Reduce Step&lt;/span&gt;: Find the maximum out of all values returned from remote nodes and return it to user.&lt;/li&gt;&lt;/ol&gt;As simple as it is, you can apply the same kind of steps to many other searches you do in real life.&lt;br /&gt;&lt;br /&gt;To do this search in GridGain 3.0, all you would have to do is attach &lt;span style="font-weight: bold;"&gt;@GridifySetToValue(recursive=true)&lt;/span&gt; annotation to your method and you are done:&lt;pre name="code" class="java:nogutter"&gt;&lt;br /&gt;@GridifySetToValue(recursive=true)&lt;br /&gt;public Integer findMax(Collection&amp;lt;Integer&amp;gt; vals) {&lt;br /&gt;  Integer max = Collections.max(vals);&lt;br /&gt;&lt;br /&gt;  return max;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;By a virtue of attaching a single annotation, you are basically telling GridGain to perform steps 1 to 4 described above &lt;span style="font-weight:bold;"&gt;automatically&lt;/span&gt;. On top of that, with GridGain peer-class-loading functionality no code needs to be explicitly deployed to remote nodes at all. Simply bring up several GridGain images on a cloud and they are ready to start computing whatever you throw at them.&lt;br /&gt;&lt;br /&gt;In the coming weeks I will show how some other annotations can be used to automate grid-enabling of other common tasks we encounter on daily basis.&lt;br /&gt;&lt;br /&gt;I should also mention that you can achieve the above with relative ease on the current version of GridGain (you would have to do some of the steps manually though). &lt;br /&gt;&lt;br /&gt;Stay tuned for GridGain 3.0 scheduled for release this summer.&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;a href="http://www.gridgain.com"&gt;GridGain - Grid Computing Made Simple&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1680085285488970412-4058624388506633714?l=gridgain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://gridgain.blogspot.com/feeds/4058624388506633714/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=1680085285488970412&amp;postID=4058624388506633714" title="4 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1680085285488970412/posts/default/4058624388506633714?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1680085285488970412/posts/default/4058624388506633714?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/gridify/~3/i8ONr08ZMuY/auto-searches-on-cloud.html" title="Auto-Searches On The Cloud" /><author><name>dsetrakyan</name><uri>http://www.blogger.com/profile/10016890172415226172</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="02085866846326042706" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_LUKx0tSelZo/ScwqqeXljPI/AAAAAAAAAEs/rvf6MoFIGNw/s72-c/search-folder-128x128.png" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">4</thr:total><feedburner:origLink>http://gridgain.blogspot.com/2009/03/auto-searches-on-cloud.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C04EQXk-eCp7ImA9WxVUFU4.&quot;"><id>tag:blogger.com,1999:blog-1680085285488970412.post-6124994578913219391</id><published>2009-03-19T23:47:00.000-07:00</published><updated>2009-03-19T23:51:40.750-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-03-19T23:51:40.750-07:00</app:edited><title>GridGain Advance Training – Amsterdam, May 18-20, 2009</title><content type="html">&lt;a href="http://www.gridgain.com"&gt;GridGain&lt;/a&gt; will conduct 3-day advance public training in Amsterdam, May 18-20, 2009. This training provides full in-depth learning of all features in GridGain. Beyond standard features and use cases, this 3-day course goes deep in complex scenarios of homogeneous and heterogeneous environments, SPI development, global grid and advanced security, custom topology resolution, and many other advanced topics.&lt;br /&gt;&lt;br /&gt;This 3-day training is intended for developers, architects and system analysts who are going to use GridGain in a complex environment and want to have unparalleled understanding and knowledge about every aspect of how GridGain is designed and how it operates. Taught by the people that actually develop the GridGain product and with labs to bring hands on experience.&lt;br /&gt;&lt;br /&gt;For more information visit &lt;a href="http://gridgain.eventbrite.com"&gt;http://gridgain.eventbrite.com&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;a href="http://www.gridgain.com"&gt;GridGain - Grid Computing Made Simple&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1680085285488970412-6124994578913219391?l=gridgain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://gridgain.blogspot.com/feeds/6124994578913219391/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=1680085285488970412&amp;postID=6124994578913219391" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1680085285488970412/posts/default/6124994578913219391?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1680085285488970412/posts/default/6124994578913219391?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/gridify/~3/SPJ9hF8ILCs/gridgain-advance-training-amsterdam-may.html" title="GridGain Advance Training – Amsterdam, May 18-20, 2009" /><author><name>dsetrakyan</name><uri>http://www.blogger.com/profile/10016890172415226172</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="02085866846326042706" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://gridgain.blogspot.com/2009/03/gridgain-advance-training-amsterdam-may.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D08FRH84eip7ImA9WxVVEEk.&quot;"><id>tag:blogger.com,1999:blog-1680085285488970412.post-7376178169104881092</id><published>2009-03-02T18:02:00.000-08:00</published><updated>2009-03-02T18:03:35.132-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-03-02T18:03:35.132-08:00</app:edited><title>Five Challenges In Setting Up Hybrid Clouds</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_LUKx0tSelZo/SayPH0Qj9dI/AAAAAAAAAEk/7l1c3yTDTdo/s1600-h/My-Network-128x128.png"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 96px; height: 96px;" src="http://1.bp.blogspot.com/_LUKx0tSelZo/SayPH0Qj9dI/AAAAAAAAAEk/7l1c3yTDTdo/s200/My-Network-128x128.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5308775425212937682" /&gt;&lt;/a&gt;With emergence of cloud computing, the term "Hybrid Topology" or "Hybrid Deployment" is becoming more and more common. Let me first start with definition of what "Hybrid Topology" is. A "Hybrid Topology" is when you join different cloud deployments into one connected cluster. For example, you can have your local data center forming a join cluster with several images deployed on a cloud.&lt;br /&gt;&lt;br /&gt;Here is a simple use case. Let's say that you have an application deployed in your local data center that stays idle for most of the time and only peaks for 3 hours in a day, say from 4pm to 7pm. To make it cost efficient, you want to keep as few nodes as possible for the most of the time and, once load peaks, you want to automatically detect that and bring up a few more nodes. These new nodes that you bring up to help your existing cluster may be in a totally different data center, or different cloud (e.g. Amazon EC2 or GoGrid), yet you want them to join your cluster and participate in load balancing, job collision resolution, job execution, fail-overs, etc...&lt;br /&gt;&lt;br /&gt;Here are some challenges to consider when setting up hybrid clouds:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;1. On Demand Startup and Shutdown&lt;/span&gt;&lt;br /&gt;Your infrastructure must be able to start up and shutdown cloud nodes on demand. Usually you should have some policy implemented which listens to some of your application characteristics and reacts to them by starting or stopping cloud nodes. In simplest case, you can react to CPU utilization and start up new nodes if main cloud gets overloaded and stop nodes if it gets underloaded.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;2. Cloud-based Node Discovery&lt;/span&gt;&lt;br /&gt;The main challenge in setting up regular discovery protocols on clouds is that IP Multicast is not enabled on most of the cloud vendors (including Amazon and GoGrid). Your node discovery protocol would have to work over TCP. However, you do not know the IP addresses of the new nodes started on the cloud either. To mitigate that, you should utilize some of the cloud storage infrastructure, like S3 or SimpleDB on Amazon, to store IP addresses of new nodes for automatic node detection.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;3. One-Directional Communication&lt;/span&gt;&lt;br /&gt;One of the challenges in big enterprises is opening up new ports in Firewalls for connectivity with clouds. Quite often you will only be allowed to make only outgoing connections to a cloud. Your middleware should support such cases. On top of that, sometimes you may run into scenario of *disconnected clouds*, where cloud A can talk to cloud B, and cloud B can talk to cloud C, however cloud A cannot talk to cloud C directly. Ideally in such case cloud A should be allowed to talk to cloud C through cloud B.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;4. Latency&lt;/span&gt;&lt;br /&gt;Communication between clouds may take longer than communication between nodes within the same cloud. Often, communication within the same cloud is significantly slower than communication within local data center. Your middleware layer should properly react to and handle such delays without breaking up the cluster into pieces.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;5. Reliability and Atomicity&lt;/span&gt;&lt;br /&gt;Many operations on the cloud are unreliable and non-transactional. For example, if you store something on Amazon S3 storage, there is no guarantee that another application can read the stored data right away. There is also no way to ensure that data is not overwritten or implement some sort of file locking. The only way to provide such functionality is at application or middleware layers.&lt;br /&gt;&lt;br /&gt;There are certainly other things that could go wrong, but these turned out to be the main challenges we had to resolve while working on the GridGain 3.0 version. Some of the cool features we plan to support are &lt;span style="font-weight:bold;"&gt;On Demand Startup and Shutdown Policies&lt;/span&gt; (including Cost-based policies) and &lt;span style="font-weight:bold;"&gt;Disconnected Clouds&lt;/span&gt;. GridGain 3.0 is planned to be released this summer, so stay tuned!&lt;div class="blogger-post-footer"&gt;&lt;a href="http://www.gridgain.com"&gt;GridGain - Grid Computing Made Simple&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1680085285488970412-7376178169104881092?l=gridgain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://gridgain.blogspot.com/feeds/7376178169104881092/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=1680085285488970412&amp;postID=7376178169104881092" title="4 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1680085285488970412/posts/default/7376178169104881092?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1680085285488970412/posts/default/7376178169104881092?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/gridify/~3/zYDkl-j6uWc/five-challenges-in-setting-up-hybrid.html" title="Five Challenges In Setting Up Hybrid Clouds" /><author><name>dsetrakyan</name><uri>http://www.blogger.com/profile/10016890172415226172</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="02085866846326042706" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_LUKx0tSelZo/SayPH0Qj9dI/AAAAAAAAAEk/7l1c3yTDTdo/s72-c/My-Network-128x128.png" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">4</thr:total><feedburner:origLink>http://gridgain.blogspot.com/2009/03/five-challenges-in-setting-up-hybrid.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0EERXkzeip7ImA9WxVWGUU.&quot;"><id>tag:blogger.com,1999:blog-1680085285488970412.post-2245434620947917661</id><published>2009-03-02T01:08:00.000-08:00</published><updated>2009-03-02T01:20:04.782-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-03-02T01:20:04.782-08:00</app:edited><title>GridGain At OGF25/EGEE Conference</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.ogf.org/OGF25/images/OGF_small.gif"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 123px; height: 66px;" src="http://www.ogf.org/OGF25/images/OGF_small.gif" border="0" alt="" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.ogf.org/OGF25/images/OGF_Europe_small.gif"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 100px; height: 66px;" src="http://www.ogf.org/OGF25/images/OGF_Europe_small.gif" border="0" alt="" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.ogf.org/OGF25/images/EGEE_small.gif"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 106px; height: 66px;" src="http://www.ogf.org/OGF25/images/EGEE_small.gif" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;GridGain project will be presented at &lt;a href="http://www.ogf.org/OGF25/index.php"&gt;OGF25/EGEE&lt;/a&gt; International Conference on March 5th, 2009.&lt;br /&gt;&lt;br /&gt;EGEE, OGF and OGF-Europe are spearheading efforts to connect developers, users and newcomers to distributed computing for the benefit of business and research, now and in the future. The EGEE 4th User Forum / OGF25 &amp;amp; OGF-Europe’s 2nd International Event will catalyse people from diverse sectors to drive forward the evolution of distributed computing and open standards for the knowledge-based economy.&lt;br /&gt;&lt;br /&gt;This premier event in Europe will help to strengthen existing business and research communities and foster new relationships and collaborative developments on a European and global level. Special emphasis will be placed on showcasing high-level technological developments, identifying best practices, evaluating user requirements and deliberating the top priorities for the future.&lt;br /&gt;&lt;br /&gt;EGEE 4th User Forum/OGF25 &amp;amp; OGF-Europe’s 2nd International Event is a multi-faceted event featuring keynote talks delivered by high-profile experts from business, government and research, and a series of parallel and joint sessions focusing on specific sectors and technologies.&lt;br /&gt;&lt;br /&gt;For more information visit &lt;a href="http://www.ogf.org/OGF25/index.php"&gt;OGF25/EGEE&lt;/a&gt; website.&lt;div class="blogger-post-footer"&gt;&lt;a href="http://www.gridgain.com"&gt;GridGain - Grid Computing Made Simple&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1680085285488970412-2245434620947917661?l=gridgain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://gridgain.blogspot.com/feeds/2245434620947917661/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=1680085285488970412&amp;postID=2245434620947917661" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1680085285488970412/posts/default/2245434620947917661?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1680085285488970412/posts/default/2245434620947917661?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/gridify/~3/op_sY7IE8Ig/gridgain-at-ogf25egee-conference.html" title="GridGain At OGF25/EGEE Conference" /><author><name>dsetrakyan</name><uri>http://www.blogger.com/profile/10016890172415226172</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="02085866846326042706" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://gridgain.blogspot.com/2009/03/gridgain-at-ogf25egee-conference.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0MGR304cCp7ImA9WxVXE00.&quot;"><id>tag:blogger.com,1999:blog-1680085285488970412.post-3611815731183512947</id><published>2009-02-10T13:22:00.000-08:00</published><updated>2009-02-10T13:30:26.338-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-02-10T13:30:26.338-08:00</app:edited><title>GridGain At Calgary JUG</title><content type="html">&lt;img src="http://www.gridgain.com/images/calgary_skyline.jpg" border="0"&gt; &lt;p&gt; GridGain will be presenting at &lt;b&gt;Calgary JUG&lt;/b&gt; this &lt;b&gt;Thursday, February 12th, 2009&lt;/b&gt;. As always we are going to have a great time with pizza, cloud computing, and raffled iPod with “GridGain – Grid Computing Made Simple” custom engraving. If you are in Calgary – Edmonton area – please make sure to stop by. Also, make sure to bring your laptop if you would like to participate in our ad-hoc grid demo. &lt;p&gt; More information at &lt;a href="http://cjug.com"&gt;http://cjug.com&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;a href="http://www.gridgain.com"&gt;GridGain - Grid Computing Made Simple&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1680085285488970412-3611815731183512947?l=gridgain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://gridgain.blogspot.com/feeds/3611815731183512947/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=1680085285488970412&amp;postID=3611815731183512947" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1680085285488970412/posts/default/3611815731183512947?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1680085285488970412/posts/default/3611815731183512947?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/gridify/~3/p0ZbDAAToAM/gridgain-at-calgary-jug.html" title="GridGain At Calgary JUG" /><author><name>dsetrakyan</name><uri>http://www.blogger.com/profile/10016890172415226172</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="02085866846326042706" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total><feedburner:origLink>http://gridgain.blogspot.com/2009/02/gridgain-at-calgary-jug.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0EMR3k5fSp7ImA9WxVXEk4.&quot;"><id>tag:blogger.com,1999:blog-1680085285488970412.post-5842698995033124080</id><published>2009-02-09T17:20:00.001-08:00</published><updated>2009-02-09T18:08:06.725-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-02-09T18:08:06.725-08:00</app:edited><title>Processing Events in Grid Environments</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_LUKx0tSelZo/SZDg7EkjJWI/AAAAAAAAAEI/9V5DhA63T04/s1600-h/workgroup-128x128.png"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 96px; height: 96px;" src="http://2.bp.blogspot.com/_LUKx0tSelZo/SZDg7EkjJWI/AAAAAAAAAEI/9V5DhA63T04/s200/workgroup-128x128.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5300984066859017570" /&gt;&lt;/a&gt;When working with distributed systems, it is often problematic to exchange events between grid nodes. Simple broadcasting does not work in majority of the cases. Just imagine having a grid of 100 nodes, and every node pushing its events to all other nodes. If you just push every event at the time it happens, then you will end up pushing events every millisecond, which will flood the network. If you let them accumulate and throttle them, then you end up pushing very large messages which is not good for your network either. On top of that, none of the nodes care about most of the events that happen on other nodes.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;The right approach is to provide a flexible event storage and query events on demand as needed. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;For example, in &lt;a href="http://www.gridgain.com"&gt;GridGain &lt;/a&gt;with its pluggable SPI architecture, implementation of event storage is just an implementation of event interface. By default, GridGain will use in-memory storage for all events which will keep in memory only last N number of events and automatically discard the old ones. But user is free to provide a different implementation. For example, it is fairly trivial to provide a DB/SQL based event storage implementation which could selectively store certain events in database and ignore all other ones. It could event throttle events and store them in one batch database operation.&lt;br /&gt;&lt;br /&gt;Here is the method that allows you query events in GridGain:&lt;br /&gt;&lt;pre name="code" class="java:nogutter"&gt;&lt;br /&gt;/**&lt;br /&gt; * @param filter Implementation of GridEventFilter which is &lt;br /&gt; *    a simple filter that either accepts or rejects an event. &lt;br /&gt; * @param nodes Collection of grid nodes to send the query to.&lt;br /&gt; * @param timeout Timeout in milliseconds to wait for results.&lt;br /&gt; */&lt;br /&gt;Collection&amp;lt;GridEvent&amp;gt; Grid.queryEvents(&lt;br /&gt;    GridEventFilter filter, &lt;br /&gt;    Collection&amp;lt;GridNode&amp;gt; nodes, &lt;br /&gt;    long timeout&lt;br /&gt;);&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;So the filter will be sent to the specified remote nodes and as a result you will get a collection of accepted grid events from all the queried nodes.&lt;br /&gt;&lt;br /&gt;However, the coolest thing here is that, with &lt;a href="http://www.gridgainsystems.com/wiki/display/GG15UG/Grid+Deployment#GridDeployment-PeerClassLoading"&gt;GridGain Peer Class Loading&lt;/a&gt;, remote nodes can be bare-bone GridGain nodes that have absolutely no knowledge of your event filter class. As a matter of fact, you can simply startup several stand alone grid nodes by executing a startup script, then execute any grid task directly from your IDE and then query for events. All task execution code and event querying code (including the filter you just created) will be automatically deployed to the remote grid nodes.&lt;br /&gt;&lt;br /&gt;The above approach allows GridGain to be very productive in development and yet remain very effective in production.&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;a href="http://www.gridgain.com"&gt;GridGain - Grid Computing Made Simple&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1680085285488970412-5842698995033124080?l=gridgain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://gridgain.blogspot.com/feeds/5842698995033124080/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=1680085285488970412&amp;postID=5842698995033124080" title="5 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1680085285488970412/posts/default/5842698995033124080?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1680085285488970412/posts/default/5842698995033124080?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/gridify/~3/gksK8iLmu-U/processing-events-in-grid-environments.html" title="Processing Events in Grid Environments" /><author><name>dsetrakyan</name><uri>http://www.blogger.com/profile/10016890172415226172</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="02085866846326042706" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_LUKx0tSelZo/SZDg7EkjJWI/AAAAAAAAAEI/9V5DhA63T04/s72-c/workgroup-128x128.png" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">5</thr:total><feedburner:origLink>http://gridgain.blogspot.com/2009/02/processing-events-in-grid-environments.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUcCRX04fyp7ImA9WxVQE00.&quot;"><id>tag:blogger.com,1999:blog-1680085285488970412.post-4947511380585615304</id><published>2009-01-30T00:45:00.001-08:00</published><updated>2009-01-30T01:17:44.337-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-01-30T01:17:44.337-08:00</app:edited><title>Controlling Users In Grid Environments</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_LUKx0tSelZo/SYK9O4Y4J6I/AAAAAAAAAD8/Rt-JIN_cvX4/s1600-h/users-256x256.png"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 96px; height: 96px;" src="http://4.bp.blogspot.com/_LUKx0tSelZo/SYK9O4Y4J6I/AAAAAAAAAD8/Rt-JIN_cvX4/s200/users-256x256.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5297004175093671842" /&gt;&lt;/a&gt;When executing tasks and jobs on the grid you may be faced with the question: &lt;span style="font-style:italic;"&gt;"How do I make sure that tasks from other users are not executed on nodes started by me?"&lt;/span&gt; For example, what if you have several grid/cloud nodes used by everyone and a couple of private grid/cloud nodes started by you and you want to make sure that other users don't get to use your private grid nodes.&lt;br /&gt;&lt;br /&gt;Here is how this problems solved with &lt;a href="http://www.gridgain.com/"&gt;GridGain&lt;/a&gt;. Let me firstly note that we are not solving any security issues here, but simply trying to facilitate proper usage of resources within a trusted environment.&lt;br /&gt;&lt;br /&gt;Now, let's state the problem:&lt;blockquote&gt;Lets assume that we have grid users &lt;span style="font-weight: bold;"&gt;Tom&lt;/span&gt; and &lt;span style="font-weight: bold;"&gt;Jim&lt;/span&gt;. Let's also assume the following grid topology:&lt;br /&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-style: italic;"&gt;Nodes NodeP1 and NodeP2 are public and can be used by everyone.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-style: italic;"&gt;Node NodeT1 and NodeT2 are private nodes that should only be used for tasks executed by Tom. Tom can start execution of his tasks from any of these nodes.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-style: italic;"&gt;Node NodeJ1 and NodeJ2 are private nodes that should only be used for tasks executed by Jim. Jim can start execution of his tasks from any of these nodes.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-style: italic;"&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&lt;span style="font-style: italic;"&gt;So the problem at hand is how does Tim ensure that his tasks run on his private nodes and public nodes, but do not run on Jim's private nodes?&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;In GridGain this is solved purely by configuration without touching user's code. Let's assume that Tom's user name is &lt;span style="font-weight:bold;"&gt;'tom'&lt;/span&gt; and Jim's user name is &lt;span style="font-weight:bold;"&gt;'jim'&lt;/span&gt;. Let's also assume that public nodes are started from account &lt;span style="font-weight:bold;"&gt;'publicuser'&lt;/span&gt;.In GridGain all system properties are available on every node as attributes. Since user name is available in Java as system property 'user.name', we can get it as follows:&lt;br /&gt;&lt;pre name="code" class="java:nogutter"&gt;&lt;br /&gt;GridNode localNode = GridFactory.getGrid().getLocalNode();&lt;br /&gt;&lt;br /&gt;String userName = localNode.getAttribute("user.name");&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;We need to ensure that tasks started by Tom are only executed on public nodes and Tom's private nodes. For this we have to configure &lt;a href="http://www.gridgainsystems.com/wiki/display/GG15UG/GridNodeFilterTopologySpi"&gt;GridNodeFilterTopologySpi&lt;/a&gt; to only include required nodes. GridGain comes with a special node filter, &lt;a href="http://www.gridgainsystems.com/wiki/display/GG15UG/SLAs+And+Grid+Node+Filters"&gt;GridJexlNodeFilter&lt;/a&gt;, based on &lt;a href="http://commons.apache.org/jexl/"&gt;Apache JEXL&lt;/a&gt;, which allows us to specify node inclusion rules in one-liner JEXL expression:&lt;br /&gt;&lt;pre name="code" class="xml:nogutter"&gt;&lt;br /&gt;&amp;lt;bean id="grid.custom.cfg" &lt;br /&gt; class="org.gridgain.grid.GridConfigurationAdapter" &lt;br /&gt; singleton="true"&amp;gt;&lt;br /&gt; ...&lt;br /&gt; &lt;property name="topologySpi"&gt;&lt;br /&gt;  &amp;lt;bean &lt;br /&gt;   class="org.gridgain.grid.spi.topology.nodefilter.GridNodeFilterTopologySpi"&amp;gt;&lt;br /&gt;   &lt;property name="filter"&gt;&lt;br /&gt;    &lt;bean class="org.gridgain.grid.GridJexlNodeFilter"&gt;&lt;br /&gt;     &lt;property name="expression"&gt;&lt;br /&gt;      &lt;value&gt;&lt;br /&gt;       &amp;lt;![CDATA[&lt;br /&gt;        node.attributes['user.name'] == 'tom' ||&lt;br /&gt;        node.attributes['user.name'] == 'publicuser'&lt;br /&gt;       ]]&amp;gt;&lt;br /&gt;      &lt;/value&gt;&lt;br /&gt;     &lt;/property&gt;&lt;br /&gt;    &lt;/bean&gt;&lt;br /&gt;   &lt;/property&gt;&lt;br /&gt;  &amp;lt;/bean&amp;gt;&lt;br /&gt; &lt;/property&gt;&lt;br /&gt; ...&lt;br /&gt;&amp;lt;/bean&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Consequently, JEXL expression for Jim would look like follows:&lt;br /&gt;&lt;pre name="code" class="xml:nogutter"&gt;&lt;br /&gt;...&lt;br /&gt;&lt;bean class="org.gridgain.grid.GridJexlNodeFilter"&gt;&lt;br /&gt; &lt;property name="expression"&gt;&lt;br /&gt;  &lt;value&gt;&lt;br /&gt;   &amp;lt;![CDATA[&lt;br /&gt;    node.attributes['user.name'] == 'jim' ||&lt;br /&gt;    node.attributes['user.name'] == 'publicuser'&lt;br /&gt;   ]]&amp;gt;&lt;br /&gt;  &lt;/value&gt;&lt;br /&gt; &lt;/property&gt;&lt;br /&gt;&lt;/bean&gt;&lt;br /&gt;...&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;The above configuration ensures that Tom's tasks will never run on Jim's nodes and vice versa. Now all we have to do is to bring up the all the nodes from proper user accounts and we are good to go.&lt;br /&gt;&lt;br /&gt;I invite you to &lt;a href="http://www.gridgain.com/downloads.html"&gt;download&lt;/a&gt; GridGain and try it for yourself. Of watch a set of online demos &lt;a href="http://www.gridgain.com/screencasts.html"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;a href="http://www.gridgain.com"&gt;GridGain - Grid Computing Made Simple&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1680085285488970412-4947511380585615304?l=gridgain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://gridgain.blogspot.com/feeds/4947511380585615304/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=1680085285488970412&amp;postID=4947511380585615304" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1680085285488970412/posts/default/4947511380585615304?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1680085285488970412/posts/default/4947511380585615304?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/gridify/~3/lIFTHbtKLd4/controlling-users-in-grid-environments.html" title="Controlling Users In Grid Environments" /><author><name>dsetrakyan</name><uri>http://www.blogger.com/profile/10016890172415226172</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="02085866846326042706" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_LUKx0tSelZo/SYK9O4Y4J6I/AAAAAAAAAD8/Rt-JIN_cvX4/s72-c/users-256x256.png" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://gridgain.blogspot.com/2009/01/controlling-users-in-grid-environments.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkACRXozeip7ImA9WxVSEk8.&quot;"><id>tag:blogger.com,1999:blog-1680085285488970412.post-2105315636446648459</id><published>2009-01-05T23:42:00.000-08:00</published><updated>2009-01-05T23:59:24.482-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-01-05T23:59:24.482-08:00</app:edited><title>Cloud Cafe PodCast - GridGain A Grid in a Cloud</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_LUKx0tSelZo/SWMPJfqYIwI/AAAAAAAAADw/cZKfogxyDzY/s1600-h/Cloud-128x128.png"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 96px; height: 96px;" src="http://3.bp.blogspot.com/_LUKx0tSelZo/SWMPJfqYIwI/AAAAAAAAADw/cZKfogxyDzY/s200/Cloud-128x128.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5288087043255575298" /&gt;&lt;/a&gt;John Willis has an interesting &lt;a href="http://www.johnmwillis.com/"&gt;blog&lt;/a&gt; where he has done many very interesting podcasts about cloud computing. Recently he has done a podcast on &lt;a href="http://www.johnmwillis.com/cloudcafe/cloud-cafe-29-gridgain-a-grid-in-a-cloud/"&gt;"GridGain - A Grid In a Cloud"&lt;/a&gt; where he interviewed Nikita Ivanov about GridGain and how it can help with development of Cloud Applications. What I found really interesting is the concept of &lt;span style="font-weight:bold;"&gt;"Native Cloud Application"&lt;/span&gt; which can be built on top of GridGain. With more and more products moving their infrastructure onto clouds, it is becoming critical that application can reuse native cloud services with minimal changes in configuration - and GridGain with &lt;a href="http://www.gridgainsystems.com/wiki/display/GG15UG/SPI+-+Service+Provider+Interfaces"&gt;SPI-based Architecture&lt;/a&gt; fits right in.&lt;br /&gt;&lt;br /&gt;You can listen to the podcast &lt;a href="http://media.libsyn.com/media/botchagalupe/Recording.mp3"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;a href="http://www.gridgain.com"&gt;GridGain - Grid Computing Made Simple&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1680085285488970412-2105315636446648459?l=gridgain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://gridgain.blogspot.com/feeds/2105315636446648459/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=1680085285488970412&amp;postID=2105315636446648459" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1680085285488970412/posts/default/2105315636446648459?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1680085285488970412/posts/default/2105315636446648459?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/gridify/~3/92EOH4Nx-mw/cloud-cafe-podcast-gridgain-grid-in.html" title="Cloud Cafe PodCast - GridGain A Grid in a Cloud" /><author><name>dsetrakyan</name><uri>http://www.blogger.com/profile/10016890172415226172</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="02085866846326042706" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_LUKx0tSelZo/SWMPJfqYIwI/AAAAAAAAADw/cZKfogxyDzY/s72-c/Cloud-128x128.png" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://gridgain.blogspot.com/2009/01/cloud-cafe-podcast-gridgain-grid-in.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0cHSXo_cSp7ImA9WxRbGUs.&quot;"><id>tag:blogger.com,1999:blog-1680085285488970412.post-148647052339026399</id><published>2008-12-10T17:25:00.000-08:00</published><updated>2008-12-10T18:03:58.449-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-12-10T18:03:58.449-08:00</app:edited><title>Join Multiple App Servers with GridGain</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_LUKx0tSelZo/SUB0dxGIIoI/AAAAAAAAADo/zPZ9CXQmMQU/s1600-h/Utilities-128x128.png"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 96px; height: 96px;" src="http://2.bp.blogspot.com/_LUKx0tSelZo/SUB0dxGIIoI/AAAAAAAAADo/zPZ9CXQmMQU/s200/Utilities-128x128.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5278346818022285954" /&gt;&lt;/a&gt;As some of you may know, integration is one of the strongest points of GridGain. GridGain can natively run on JBoss, WebSphere, WebLogic, TomCat, etc... By &lt;span style="font-weight: bold;"&gt;natively&lt;/span&gt; I mean that GridGain fully reuses all the underneath plumbing of an application server and practically becomes a part of it. For example, if you take integration with JBoss, then you get the following:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;GridGain starts as JBoss service, the same way as any other native component of JBoss.&lt;/li&gt;&lt;li&gt;GridGain reuses JBoss Communication and Discovery protocols if JBoss is run in HA clustered mode. This means that you don't have to open a single extra network port or introduce any additional network protocols. Whatever JBoss is using - GridGain will also use it.&lt;/li&gt;&lt;li&gt;GridGain reuses standard JBoss EE deployment model and in addition allows you to dynamically load resources with GridGain Peer Class Loading.&lt;/li&gt;&lt;li&gt;With its &lt;a href="http://www.gridgainsystems.com/wiki/display/GG15UG/GridAffinityLoadBalancingSpi"&gt;Affinity Load Balancing&lt;/a&gt; GridGain allows to partition data stored in JBoss Cache across multiple grid nodes, so you can actually load much more data into cache and scale it much better (the feature JBoss cache does not provide on its own).&lt;/li&gt;&lt;li&gt;GridGain lets you reuse JBoss AOP for transparent grid-enabling of your code with &lt;a href="http://www.gridgain.com/javadoc/org/gridgain/grid/gridify/Gridify.html"&gt;@Gridify&lt;/a&gt; annotation.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;The same level of integration you can expect for other application servers and network protocols.&lt;br /&gt;&lt;br /&gt;However, recently one of our clients raised a good question - what if you have both, JBoss and WebSphere. Can they be part of the same cluster? Well, if you simply have JBoss use its HA clustering protocol and WebSphere use its own, then you will never create a cluster out of the two. However, you can start JBoss and WebSphere in unclustered modes and &lt;span style="font-weight: bold;"&gt;have GridGain take care of all the clustering needs&lt;/span&gt;. Basically by doing this, you can have JBoss nodes know everything about WAS nodes and easily send computational task from one to another. What's even better, is that with GridGain &lt;span style="font-style: italic;"&gt;Peer Class Loading&lt;/span&gt; you can have your WAS server automatically load all the classes deployed into JBoss (and vise versa) without any explicit deployment steps.&lt;br /&gt;&lt;br /&gt;I should however mention that Peer Class Loading does not apply to resources managed by the container, such as EJBs - if you have an EJB deployed in JBoss, this EJB is fully managed by JBoss and will be absolutely useless to WAS server. However, you can easily execute some computation task from any App Server (even from your EJB) and have this task distributed to all JBoss and WAS servers in your cluster.&lt;br /&gt;&lt;br /&gt;Stay tuned for GridGain 2.1 release coming out any day now!&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;a href="http://www.gridgain.com"&gt;GridGain - Grid Computing Made Simple&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1680085285488970412-148647052339026399?l=gridgain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://gridgain.blogspot.com/feeds/148647052339026399/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=1680085285488970412&amp;postID=148647052339026399" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1680085285488970412/posts/default/148647052339026399?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1680085285488970412/posts/default/148647052339026399?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/gridify/~3/G7_4DAvRneA/join-multiple-app-servers-with-gridgain.html" title="Join Multiple App Servers with GridGain" /><author><name>dsetrakyan</name><uri>http://www.blogger.com/profile/10016890172415226172</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="02085866846326042706" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_LUKx0tSelZo/SUB0dxGIIoI/AAAAAAAAADo/zPZ9CXQmMQU/s72-c/Utilities-128x128.png" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://gridgain.blogspot.com/2008/12/join-multiple-app-servers-with-gridgain.html</feedburner:origLink></entry></feed>
