<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Mastering WAVE &#187; appengine</title>
	<atom:link href="http://www.masteringwave.com/tag/appengine/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.masteringwave.com</link>
	<description>Google Wave Made Easy</description>
	<lastBuildDate>Sun, 08 Aug 2010 13:46:32 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
<cloud domain='www.masteringwave.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
		<item>
		<title>Architecture for Google Wave applications.</title>
		<link>http://www.masteringwave.com/2009/08/architecture-for-google-wave-applications/</link>
		<comments>http://www.masteringwave.com/2009/08/architecture-for-google-wave-applications/#comments</comments>
		<pubDate>Tue, 18 Aug 2009 13:56:11 +0000</pubDate>
		<dc:creator>Daniel Graversen</dc:creator>
				<category><![CDATA[Architecture]]></category>
		<category><![CDATA[appengine]]></category>
		<category><![CDATA[robots]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://www.masteringwave.com/?p=100</guid>
		<description><![CDATA[I&#8217;m designing an application for Google Wave, which interacts with the user. The following is the considerations that I have for how the architecture of the application works best. The application that I&#8217;m planning on should consist of a Robot which interacts with the user. The other part of the application should be a web [...]


No related posts.

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.masteringwave.com%2F2009%2F08%2Farchitecture-for-google-wave-applications%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.masteringwave.com%2F2009%2F08%2Farchitecture-for-google-wave-applications%2F&amp;source=masteringwave&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<p>I&#8217;m designing an application for Google Wave, which interacts with the user. The following is the considerations that I have for how the architecture of the application works best.</p>
<p>The application that I&#8217;m planning on should consist of a Robot which interacts with the user. The other part of the application should be a web application where users can configure how the robot should interact and view status from the waves. There should also be some analytics capabilities. The backend application needs to be rather a little complex to fulfill the requirements.</p>
<p>The most convenient way would be to use appengine, since it is the place that is mostly integrated with Google Wave currently.<span id="more-100"></span></p>
<p>Appengine contains a lot of really nice features for building applications. You just created you application and then you don&#8217;t need to consider how to scale the application, since this is done by Google. This is a huge advantage and you don&#8217;t need to have any resources working with deployment. You can sleep at night, knowing that you cannot do anything to solve problems with the database or the servers. If you are successful and create the application with a lot of growth you just have to pay a little more. You don&#8217;t need to use Amazon EC2 or other cloud servers, where you need to scale you application programmatically via the APIs. Spikes in trafic are also handled without any problems.</p>
<p>I will not place my backend application on Appengine, even though I have the advantages listed above.</p>
<p>One problem is the &#8220;lack&#8221; of support for high performance development languages like Ruby-on-Rails (RoR) or Grails. I have tried to deploy <a href="http://graversen.org/2009/07/22/creating-google-wave-robots-in-grails/">Grails</a> applications to Appengine. There are still some problems with getting all the features working like they do with hibernate. I also ran into problems, where the application worked on the development server, but not on the Appengine because of the whiteliste.</p>
<p>There is also a <a href="http://code.google.com/p/appengine-jruby/wiki/GettingStarted">project</a> for getting Jruby to work on Appengine. It mostly looks like Ruby works with Sinatra, a smaller framework than Rails. I would suspect that there is still some way to go, before the Jruby and Appengine works just as easy as the standalone version.</p>
<p>If it is not possible to use one of these frameworks, development will take longer time. Also the application will be less flexible be more difficult to maintain.</p>
<p>I want to develop the backend application in Ruby-on-Rails, since this is the place, where I have found most resources on how to create scalable applications. The plugins also is of a high quality.</p>
<p>All the developers in the organization are Java developers, so Groovy and Grails would be the obvious choice to learn. I just don&#8217;t find the same size of community and quality of plugins. I think we also could have success with Grails applications.</p>
<p>The application that, I planning to building, will have some of analytics capabilities. The Appengine datastorage does not allow summarizations of data like with SQL &#8220;<em>select plant, sum(stock) from x group by plant</em>&#8220;. Therefore the application should fetch all the data objects and then calculate the sum. The datastorage also have a limit on the number of entries it can return. Thought I read on the Appengine <a href="http://googleappengine.blogspot.com/2009/08/recent-happenings-ticktock-parallel.html">blog</a>, that it was possible to perform queries in parallel, at least on python.</p>
<p>So how do I then plan to make this architecture work? Currently it is only possible to make robots, which runs on Appengine. This restriction will be removed at some point, and the robots can be created directly in the (G)rails application.</p>
<p>But I want to create an application which is ready, soon after wave is release of Wave to the public. So we need to get started already. To make this happen, I think the best architecture is create the deployment like the following.</p>
<p><img src="http://www.masteringwave.com/wp-content/uploads/2009/08/081809_1356_Architectur1.png" alt="" width="468" height="138" /></p>
<p>I&#8217;m planning on building the robots on Appengine. The robots have access to the backend data using REST, which should be easy to create in Ruby-on-Rails. We can then use Appengine datastorage and memcache for optimizing the robot. The other alternative is to create a proxy on the Appengine, which sends the posts to our Rails applications.</p>
<p>I need to find a way to get the Ruby-on-Rails application hosted, but there are plenty of resources for this. An even we are optimistic, we will probably not scale to more than 10 servers.</p>
<p>There will also be a problem with how we can do deployment of applications, when we rollout new releases. The release need to be synchronized both to the Rails application on a robot on Appengine.</p>
<p>There will be an issue with finding the right place to business logic in the robots. I&#8217;m currently not sure on how this can work out.</p>
<p>I would like to know if you think that I&#8217;m on a wild goose chaise with my architecture.  Will I have more success with developing the application on Appengine.</p>


<p>No related posts.</p>
<p>Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.masteringwave.com/2009/08/architecture-for-google-wave-applications/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Debugging Wave Robots</title>
		<link>http://www.masteringwave.com/2009/08/debugging-wave-robots/</link>
		<comments>http://www.masteringwave.com/2009/08/debugging-wave-robots/#comments</comments>
		<pubDate>Thu, 13 Aug 2009 08:58:28 +0000</pubDate>
		<dc:creator>Daniel Graversen</dc:creator>
				<category><![CDATA[Beginner]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[appengine]]></category>
		<category><![CDATA[debug]]></category>
		<category><![CDATA[robot]]></category>

		<guid isPermaLink="false">http://www.masteringwave.com/2009/08/debugging-wave-robots/</guid>
		<description><![CDATA[Debugging robots made in Google Wave can be a little difficult because it can only be tested on the server and it can be difficult to see how it is sent. A way I have found is quite useful is to use the app engine log. On the log tab select &#8220;Requests only&#8221; and then [...]


No related posts.

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.masteringwave.com%2F2009%2F08%2Fdebugging-wave-robots%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.masteringwave.com%2F2009%2F08%2Fdebugging-wave-robots%2F&amp;source=masteringwave&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<p>Debugging robots made in Google Wave can be a little difficult because it can only be tested on the server and it can be difficult to see how it is sent.</p>
<p>A way I have found is quite useful is to use the app engine log. On the log tab select &#8220;Requests only&#8221; and then see that data being sent to the robot. It is this data the robot can see, if it is not here then the robot API is not receiving the data.</p>
<p><img src="http://www.masteringwave.com/wp-content/uploads/2009/08/081309_0857_DebuggingWa1.png" alt="" width="450" /></p>
<p>I hope this help you debug and get at better understanding of your robot.</p>
<p><strong>Update 19 aug 2009:</strong> If you want to format the JSON try the <a href="http://jsonformat.com/">JSON formatter</a>.</p>


<p>No related posts.</p>
<p>Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.masteringwave.com/2009/08/debugging-wave-robots/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

