<?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>Shaun Abram &#187; googleAppEngine</title>
	<atom:link href="http://www.shaunabram.com/tag/googleappengine/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.shaunabram.com</link>
	<description>Java and Technology weblog</description>
	<lastBuildDate>Tue, 27 Jul 2010 23:14:10 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>OSCON Day3 &#8211; Google App Engine</title>
		<link>http://www.shaunabram.com/oscon-day3-google-app-engine/</link>
		<comments>http://www.shaunabram.com/oscon-day3-google-app-engine/#comments</comments>
		<pubDate>Sat, 24 Jul 2010 23:43:35 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Events]]></category>
		<category><![CDATA[cloud]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[googleAppEngine]]></category>
		<category><![CDATA[oscon]]></category>

		<guid isPermaLink="false">http://www.shaunabram.com/?p=961</guid>
		<description><![CDATA[I have seen several talks on Google App Engine before, but have still not used it in anger, so this talk, Introduction to Google App Engine, acted as a refresher. It was given by Ikai Lan, a software engineer working for the Developer Programs groups at Google. Google App Engine is a way to run [...]]]></description>
			<content:encoded><![CDATA[<p>I have seen several talks on <a href="http://code.google.com/appengine/">Google App Engine</a> before, but have still not used it in anger, so this talk, <a href="http://www.oscon.com/oscon2010/public/schedule/detail/13769">Introduction to Google App Engine</a>, acted as a refresher. It was given by <a href="http://www.oscon.com/oscon2010/public/schedule/speaker/94899">Ikai Lan</a>, a software engineer working for the Developer Programs groups at Google.  </p>
<p>Google App Engine is a way to run your applications on Google infrastructure. You push your code to App Engine and it gets scaled out depending on how many instances you need.</p>
<p>My notes from the talk are below, but you can find the full slides <a href="http://slideshare.net/ikailan">here</a> or <a href="http://www.oscon.com/oscon2010/public/schedule/detail/13812#">here</a>.</p>
<p><span id="more-961"></span></p>
<h2>LAMP Setups</h2>
<p>The motivation for using Google App Engine is due to the limitations or constraints of a typical LAMP (Linux, Apache, MySQL and Perl/PHP/Python) setup.</p>
<h4>1) Single Server</h4>
<p>A single server running the LAMP stack is not scalable and has a single point of failure.</p>
<h4>2) Separate web &#038; database server</h4>
<p>The next step would be to move the Apache server and the database to separate servers. You may get better performance but this is still not a highly scalable solution and you now have two single points of failure.</p>
<h4>3) Multiple web servers</h4>
<p>You can provide a more scalable solution by adding multiple Apache web servers, but now you need load balancing and the database remains as a single point of failure.<br />
In order to utilize the multiple web servers, you can use round robin load balancing. Register the web server IPs with DNS; DNS record is cached with a TTL (Time to Live). But the TTL takes time to propagate down and may not be respected, so if a web server goes does, you can still have problems. Additionally, the database remains a single point of failure.</p>
<h4>4) Master Slave Database</h4>
<p>The next approach is to use a Master Slave database. Note that this approach was also discussed at the Database Scalability Patterns talk, and the Database Sharding talk. This Master Slave database approach improves read throughput, but the Master is now a single point of failure for writes and may die before replication takes place.</p>
<h4>5) Partitioned Database</h4>
<p>So, you can migrate to a partitioned database where you will (hopefully) have better read <em>and </em> write throughput, but where you now have more machines and more management and you may need to update your application logic, queries and schema.</p>
<h2>Google App Engine to the rescue</h2>
<p>So, in order to avoid all the hassle of above, Google propose using the Google App Engine.</p>
<h4>Cloud Computing landscape</h4>
<p>App Engine fits into the Cloud Computing landscape as follows:<br />
Software as a Service: Google Docs, saleforce.com<br />
Platform as a Service: <em>Google App Engine</em>, force.com<br />
Infrastructure as a Service:  Amazon Web Services, Rackspace, VMWare</p>
<h4>App Server</h4>
<p>The App Server component of Google App Engine:</p>
<ul>
<li>Hosts application code</li>
<li>Handles concurrent requests</li>
<li>Enforces isolation for app safety</li>
<li>Maintains statelessness</li>
<li>Supports Python &#038; Java runtimes (and in fact any language than runs on JVM, including Scala)</li>
</ul>
<p>It also supports the following services &#038; APIs</p>
<ul>
<li>Memcache &#8211; Distributed, very fast, in-memory cache</li>
<li>Datastore</li>
<ul>
<li>Uses Bigtable</li>
<li>Distributed, partitioned data stored</li>
<li>Arbitrary Horizontal Scaling to &#8216;Internet Scale&#8217;</li>
<li>Replicated and Fault Tolerant</li>
<li>Predictable query performance with no deadlocks</li>
</ul>
<li>URL Fetch &#8211; Simple Http communication with GET/POST to external services; Allows integration with 3rd party REST APIs</li>
<li>Mail &#8211; Inbound &#038; Outbound mail</li>
<li>XMPP &#8211; Instant messaging</li>
<li>Task Queue &#8211; Background &#038; scheduled computation and processing infrastructure</li>
<li>Images</li>
<li>Blobstore &#8211; Upload and distribute large files</li>
<li>User Services &#8211; User account support including federated login (via Google accounts)</li>
</ul>
<h2>Open Source Implementation &#8211; TyphoonAE</h2>
<p>The presentation finished with a code demo, but the presenter also pointed out that there is an open source implementation of Google App Engine called <a href="http://code.google.com/p/typhoonae/">TyphoonAE</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.shaunabram.com/oscon-day3-google-app-engine/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google Technology User Group Campout</title>
		<link>http://www.shaunabram.com/gtu-campout/</link>
		<comments>http://www.shaunabram.com/gtu-campout/#comments</comments>
		<pubDate>Sun, 19 Jul 2009 20:13:58 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Events]]></category>
		<category><![CDATA[OpenSource]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[googleAppEngine]]></category>
		<category><![CDATA[gtug]]></category>
		<category><![CDATA[gwt]]></category>
		<category><![CDATA[wave]]></category>

		<guid isPermaLink="false">http://www.shaunabram.com/?p=433</guid>
		<description><![CDATA[I have signed up for the Google Technology User Group (GTUG) Campout. It is a weekend (August 7-9, 2009) of designing and coding an application, as part of a team, using Google technologies. As far as I know, Google &#8216;technologies&#8217; can include things like GWT, Android, OpenSocial etc, but there will be a particular emphasis [...]]]></description>
			<content:encoded><![CDATA[<p>I have signed up for the <a href="http://www.meetup.com/sv-gtug/pages/GTUG_Campout:_Silicon_Valley/">Google Technology User Group (GTUG) Campout</a>. It is a weekend (August 7-9, 2009) of designing and coding an application, as part of a team, using Google technologies. As far as I know, Google &#8216;technologies&#8217; can include things like <a href="http://code.google.com/webtoolkit/">GWT</a>, <a href="http://www.android.com/about/">Android</a>, <a href="http://code.google.com/apis/opensocial/">OpenSocial</a> etc, but there will be a particular emphasis on <a href="http://wave.google.com/">Google Wave</a> (due to members of the Wave team being out and about to help), and hence <a href="http://code.google.com/appengine/">Google App Engine</a>.</p>
<p>I am not too familiar with Wave yet, so this should be a great opportunity to get to know it better, meet a bunch of fellow techs, and hopefully produce something cool by the end of the weekend. Looking forward to it&#8230;</p>
<p>Registration is free, so if you are interested you can sign up at <a href="http://gtug-campout-sv.eventbrite.com/">here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.shaunabram.com/gtu-campout/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
