>>: Welcome again. We're going to start the... Engine overview.

advertisement
>>: Welcome again. We're going to start the next session, and this is Google App
Engine overview.
Chris Schalk: I think the published title was slightly different, but building applications
on that basis ->>: Yeah, building applications on the Google app. And the presentation is by Chris
Schalk. We met in March of last year or something -Chris Schalk: Something like that.
>>: -- at the Google-plex, and he's going to present, I think, the principles of Google
and how to build an application on Google App. Thank you.
Chris Schalk: Were you going to do the bio at all or -- okay. What's that?
>>: [inaudible].
Chris Schalk: Okay. So my name is Chris Schalk. I'm a developer advocate for
Google. That job is actually kind of an interesting, fairly new job. It's a combination of
essentially a software engineer, but I also do a lot of partner work and I also work with
the developer community. So I'm like -- I've been at Google for the last three years
helping on a number of different projects ranging from Google AJAX APIs, Google
Maps, Open Social, so -- actually I spent a lot of time on Open Social. How many
people here know what Open Social is? Just a few I guess.
Okay. So basically going out and building new developer communities and also helping
companies get up to speed with various Google technologies.
Currently I'm working on the cloud technologies at Google, and specifically Google App
Engine. And so today what I'd like to do is -- because I'm a developer at heart, I don't
know if you noticed me, I was kind of cranking away on my laptop during the morning
here. So I created like a little demo app just for you guys today, and it will be something
that you guys can play around with while I'm doing my presentation.
Since you guys are all from all different parts of the world, I'm assuming, it sounds like it,
and so I made the app basically to allow you to kind of put yourself onto the map and
shout out, you know, a comment or something like that.
So basically that's a little demo app that I created today, and we play with it. But my
main goal is just to kind of show you a really hands-on approach to what Google App
Engine is, what it's like to actually build with Google App Engine. So I have definitely
some slides that go concepts and go over the high-level details, but I definitely want to
reserve some time over just to kind of show you how to work with the technology.
Actually, a quick show of hands. How many people here are comfortable with Java
programming? Okay. Cool.
How about Python? Python developers out here? Okay. Less so. Okay.
So one of the things that I'll mention for app engine is that the two languages that we
support out of the box right now is both Python and Java. My background is actually
Java, so I'll probably step into a little bit more Java coding examples on some of the
stuff I'll show you.
So anyway, let's go ahead and get started -- oh, just for a quick bio, I went to UCLA,
worked at Oracle for 12 years doing a lot of product management, building out their IDE
[inaudible] Java development tools, and I, as I mentioned, work as a developer
advocate at Google.
And I'll give you my contact info as well. Also, I published my slides on slide share. I
didn't quite get a chance to generate a little bittly [phonetic] link, but also I just gave
Juan the PDF as well for the slides.
So a few high-level slides. I think this audience probably has a general -- a pretty good
feel. A lot of times I go out and speak to folks and they all have kind of different takes
on what cloud computing is. But one thing that I think helped me with regards to kind of
get a nice feel for the entire lay of the land with regards to cloud computing is I went to a
Garnter Conference back in December, and they pretty much laid it out in kind of like a
pyramid fashion in the sense that you have a number of lower-level services that have
been -- they refer to it as an infrastructure, architectural services, so you've got Amazon,
things like that, where you're essentially working with virtual machines and so forth.
And then, of course, as we go up the stack, there's this application platform as a
service. So these are generally the buzz words that a lot of analyst folks are using
these days.
Now, in that case we tend to agree that app engine fits in this category in the sense
that, you know, you just focus on your app, on your code, and then you let the platform
itself go ahead and scale up. So in that sense you're not really so concerned about the
actual machines and getting all the hosting stuff figured out. You just work on your app
and toss it away, deploy it, and it's good to go and it will scale for you automatically.
And then, of course, there's high-level services like when you get into like, Google Docs
and things like that. So this gets into the actual software as a service. So hopefully you
guys tend to agree with me I think that's a pretty good take on the overall landscape.
And this is actually coming from Gartner.
So I can probably fly through these fairly quickly, but the value proposition as we are
down at the bottom of the stack is generally -- you know, you've got your network
connectivity, you've got your power as well as you've got cooling.
And then, of course, if we were to swap out and say let's bump up the notch there, the
platform, in addition to all those services, we've got actually application development
tools as well. And then what you apply your tools to is a platform from which you can
actually start building out your applications. And so in that sense, yeah, app engine, I
would say, fits in that category.
The three core things that we always tell folks is -- or at least these are the three goals
that App Engine was created on. Mainly making it very easy to build your applications.
And so we find this is actually ringing true in the sense that we go out and we meets
with lots of different development communities, you know, give them some ideas and
they are just literally able to get started in a few minutes and start building applications.
Actually, quick show of hands. How many people have actually tried out Google App
Engine? So a couple people. Okay. So good. So this will be a learning experience for
you guys.
And, actually, with what you do today, I mean, you're more than welcome to just jump
right into it providing you guys are up for coding either Python or Java. But, yeah, you
can jump right into it and start building some cool apps. And I'll also give you some nice
tutorials that you can jump into. We just created a whole new set of step-by-step
tutorials for South By Southwest Interactive. Actually, we were just there a couple
weeks ago, and so we have some new tutorials that you can play around with some
cool features like XMBP and things like that.
But anyway, I digress. So the core thing is very easy to build, whether it's Java or
Python, and then maintain. So like, there's a whole host of platform-related tools where
you can go into a dashboard and manage the health, just kind of check up on the
applications. And then, of course, the scalability is something you get essentially as
part of the platform. You don't have to worry about provisioning a bunch stuff.
Now, you're going to have to kind of keep in mind the growth of your app. And so
there's definitely like, a free barrier where you can just create an app and post it and
you'll have like, a good deal of usage without even paying a cent. But then if you start
getting a lot of hits, you'll get to a point where we will let you know that, hey, you'll want
to go ahead and enable building if you do want to continue to scale up to your
[inaudible]. But it's a very easy process, and I can share that in a little bit more detail.
So just some high-level numbers as we're getting started. We have a community of
over 250,000 developers, and these are all guys developing a lot of different types of
applications. A lot of the apps that we found have been fairly popular tends to be, you
know, either their mobile or social or a combination of both in the sense that -especially with the social explosion of all these different applications where, you know,
they're manifesting themselves on Facebook and MySpace and all those different social
sites.
The back ends to these, a lot of times we're finding that developers are very happy with
just creating like a Google App Engine back into service, like a data store for these
things.
Okay. But that's not to say there's -- you can build really anything you want, whether it's
front facing web -- complete websites or just back in data services so you can create
like, whatever -- any types of like JSON or [inaudible] types of services in the
background.
And then, of course, as we've grown over the last two years, the overall daily page view
has now maxed out above 250 million. So basically App Engine has continued to grow.
It's getting bigger and bigger, a large developer population as well as significantly large
bit of usage as well.
Okay. Here's an example. Actually, it's kind of cool because I don't know if you've ever
seen this application called Wordle. It's actually written on App Engine, but if you want
to take just a chunk of text or a web page or whatever and dump it to this website, it will
give you like, a nice word cloud. And so in this sense if you look up the and engine -like the source for this word cloud is actually the Wikipedia entry for App Engine. So in
that sense I think it's more or less correct in the sense that, you know, it's App Engine,
it's meant to scale, ease of use and so forth.
Actually, I just wrote like, an internal survey, and we'll be doing an external survey as
well, where we had also numerous bits of data, and just for fun I injected some of the
responses from the survey into the word cloud generator, and it was kind of a nice way
to visualize a body of text, but you get the basics of it just by quickly visualizing it.
There are App Engine partners across the way. Some of them, obviously, like -- now, I
should say that a lot of these companies, they're not necessarily using App Engine to
run their entire web infrastructure, but they do use App Engine in various components.
Like Best Buy, for example. They created some various services within their overall
infrastructure and so forth. Other companies, like Socialwok -- they actually won an
award last year in 2009 in tech crunch -- they actually based their entire architecture,
which is essentially like a social network with some really cool integration features with
some of the other Google apps and things like that embedded into that. And they
actually based it entirely off the App Engine. And so, anyway, some pretty cool partners
that we're lining up.
As I mentioned, since social networking is extremely -- is very popular these days, some
of our most prolific and successful App Engine developers are using essentially App
Engine's ability to quickly scale and they can create some cool front end.
So, for example, BuddyPoke, they have -- or at least there's pretty much one main guy
who I interact with, and he's been very successful both on Facebook and on a number
of other sites where he has like, a nice little avatar, kind of a little game kind of social
interaction. And he basically uses App Engine for the background.
And so in this case, this one app itself just to give you an idea of the overall size, over
62 million users, and it continues to grow substantially.
Here's another example of a fairly recent partner that came up to speed on App Engine
over the last few months. It's called Gigya. And the Gigya actually -- the cool thing
about them is that they tend to have promotional or event-based content that comes up,
and so they'll actually have a spike. And so this is kind of like why I like to kind of show
this in the sense that they're able to manage these one-time event-based masses of
traffic fairly easily by using the App Engine architecture.
So in this case here's one example where we're starting pretty much at nothing and
then some kind of sports event or some kind of topical thing pops up on one of their
websites that's using App Engine, and basically it's just able to jump in and scale it right
away. And so like there's a nice quote from the VP of research development over at
Gigya just basically mentioning that he's very happy with the capability of App Engine to
be able to scale right there on a dime.
So some of these slides I think if you're into cloud computing, you more or less get the
gist, but these are kind of like what we also, I think, hold true and dear in the sense of
why we think App Engine is a compelling environment in the sense that if you about it
back a little bit, before the whole buzz of cloud computing, obviously if you had some
services or website you needed to get out there, yeah, it tended to be a fairly manual
process that you would have to go out and provision your own kind of stuff.
And so all that stuff tends to add up in the sense that you can start doing all this
management stuff.
So as you probably have gone through just dealing with these different costs, that's,
hence, why the whole move towards cloud computing so -- whereas, like you can see,
maintenance and traffic and upgrades of the overall environment.
So in a nutshell, App Engine does provide a nice entire development environment,
development and deployment platform in a box.
So let's jump into a little bit more of the details. So, so far I've been very high level. I'm
going to start kind of getting into more of the nitty-gritty and then I'll finish up with just
doing a bunch of demos and I'll show you how I built that demo application for today.
So App Engine essentially is a set of services. And the services all have their own
responsibilities. I would say probably the most popular or the most popular service that
App Engine does provide is the data store service. Now, the data store service is
essentially your database within App Engine's environment. So if you -- this is one thing
that sometimes might be a little bit of a conceptual -- you kind of have to get over the
hurdle in the sense that App Engine has architecture based on Google's Big Table
architecture.
So if you're at all familiar with how Google works, Google has this technology referred to
as Big Table, and it's basically a massive scalable database which is what is behind the
Google search service. So App Engine, the way it's architected is it ties into that same
technology, and so basically it allows you, as developers, as -- to build essentially your
own website that can tap into Google's Big Table infrastructure. And that's how you
use -- basically the data store is how you interact with this Big Table service in that
sense.
So you would design your applications, you'd design your data classes and objects to
work within the data store. And I'll get into more details on that.
There's also some good things to know. First off, it's not a SQL database, so you kind
of have to understand that, first, it's not a SQL database, but then you can also
understand why it's not necessarily a SQL. There's actually kind of I would say
somewhat of a group of folks within cloud computing that are kind of moving a little bit
outside of the SQL area. So people -- I came from the SQL background since I was at
Oracle for a number of years anyway, but I can also see the rationale also for going for
a little bit more kind of like -- and this is all designed for maximum scalability, but
basically kind of stepping away from fairly hierarchical and lots of different types of
joined relationships where you can have a little bit more simplistic access.
And so we do have some publications. There's definitely some good content out there
as of, like, last year at Gigya, we had a session devoted specifically how to build Google
App Engine applications that can scale.
Now, the other services a pretty, I would say, complementary to building your web
applications. So memcache -- actually, memcache and Datastore are somewhat
related. Memcache is basically Google's caching technology. So if you have some
data that you don't want to take the time to do an actual write or if you want to pull it out
and just keep it in memory, memcache is basically your solution for that. And that's
available as a service as well.
URL Fetch, if you want to go out and fetch content out on the internet. Now, I should
also say in addition to be different from, like a SQL or your typical server side lamp
stack or Java EE server side technology, with App Eg -- and this is all done for
scalability again -- you don't have the ability for opening up socket connections and
forth. So in that sense you use this URL Fetch capability or service within App Engine
to go out and fetch content and bring it in.
And the rest of the services, email, typical email service. You can go in and shoot out
emails. It can also take incoming emails. You can handle attachments and so forth.
XMPP, this is actually pretty fun. I might be able to show you a demo, time permitting,
of how to build your own XMPP server, like a chatbot, for example. That was one of the
exercises that we had in our workshop over at South By Southwest.
Task queues, like if you want to have a number of tasks lined up in a queue, not
necessarily like a chron job, but just stuff that you want to do off-line processing.
There is an image API for service image manipulation. Blob store. This is actually
somewhat new, but this is kind of just like a regular blob storage capability as well that's
added onto App Engine.
And then, finally, there's a user service that taps into Google's user service, and then
there's also ways that you can tap it into Open ID, OAuth, other ways of basically
authentication into App Engine. Okay?
Let me grab my water here.
Any questions so far? Just high-level stuff. And, of course, I'll take questions at the
end, and then I have to jump in taxi to head back to the airport so I have to make sure I
have enough time.
So the two main languages, obviously, are Python and Java. Python was actually first.
And as you may have heard, Google has traditionally been a very Python-centric
company, but I would say over the last five years there's been an equal and very strong
Java component within Google's overall structure technology. So I think what we have
now is App Engine kind of mirrors what the internal expertise at Google is as well.
Of course, Google has a number of other stuff with various languages like PHP and
Ruby and so forth.
So, now, as far as folks on the Java side, as you can see, basically the core
technologies, the core standards within Java, like serverless JDO, JPA, Java mail and
so forth are all supported within App Engine's API. And I think I touched on most of
those already.
And, likewise, because of Java, because of the fact that you have a JVM, you actually
can run in other languages. So, for example, if you wanted to program in Python but
you wanted to take advantage of the various services that you get from the Java side,
you could actually just use Jython, which is kind of interesting. At first I thought it was
kind of weird why anyone would want to do that, but then a good friend of mine who I
work with at Google, Wesley Chun [phonetic], he's definitely a Python advocate. He's
written various books on Python. And he's like, oh, no it's perfectly reasonable to
program on Python on top of a JVM just to access the services. Okay.
So, anyway, just to kind of touch on some of the main points, as I mentioned before, it's
always free to get started. So really anyone today could just go out and start building
and creating prototypes and literally deploy them to the cloud. And you can get a lot of
bang for actually no bucks just by starting out and playing with the technology. It's open
until only you get, like, a substantially large audience that at that point you can choose if
you want to enable billing, and then you can manage your billing and so forth.
I won't go through every bullet list, but get the idea of the -- how things are broken
down. And then you can go to the dashboard of your app to see how you're doing on
quota and so forth.
Speaking of the dashboard or the overall platform management, that is, so when you
create -- and I'll step through this shortly, but when you create your app, you first create
it locally, and in that sense you kind of have a local running -- or a local runable instance
where you can test it and you don't have to be connected to the cloud or anything like
that. So you can go through, create your app, start building out the functionality, and
you even have a local data store instance and you can start testing out the app as if it
was actually running in the cloud.
But then when you get to the point where you want to actually deploy the app to the
cloud, what you would do is you first create the application itself in the cloud, which
means you go to App Engine's online service, appengine.google.com, you go ahead
and give it a name, and then you create this empty stub app. And then once you build
your local app, you can they the deploy it up to the cloud. And this is all done fairly
easily using the various tools, whether you're on Python or whether you're on Java. So
that's basically the process by which you create an App Engine app with a cloud.
Once you've deployed your app and it's live and receiving traffic and so forth, you can
then go back to your App Engine dashboard or console of your deployed app, and then
once you go there you can see, okay, here's my traffic, here's how basically, at a
glance, I have all the data that's associated with this app. I can see my data store
usage, I can see the number of population actually hitting the app. And then you can
kind of filter down on the various services that you're using. So whether you're using
email or XMPP or all these different types of services, you can drill down and get all the
granular data that you need.
There's also even historical data. So if you want to see how things have been running
over time and stuff like that. Incidentally, we actually use this same app when we're just
kind of monitoring the entire system. And when we're working with partners, for
example, on helping them out with their applications, they just give us their application
ID and we pull it up and we can see the same exact data that they see and we can help
them continue to work out any kinks that they see.
Let's jump into the tools for App Engine. Now, for those of you on the Python side,
there's actually a nice -- it's an nifty little tool that was created -- I think the first one was
for Mac, but there's now been subsequent ports for Windows, and I think there's also a
Linux one. But basically it's called the App Engine Launcher, and when you download
the STK, you can downloaded launcher as part of it.
And what this allows you to do in a nutshell is, one, you can create very quickly a stub
or an empty app, and then as you can see, it's got some little buttons on there where
you can start and fire up the app locally and you can also access a local console for the
application as it's running locally just by clicking on one of these buttons.
And also, as you see over to the side, there's kind of some -- I had a pointer up here.
Oh, here it is -- you can actually see over here, there's some buttons over there that
allow you to take the app and deploy it over to your service side instance of your cloud.
Anyway, I'll show you how that works pretty easily.
Now, I think I've touched on this once or twice. As you're running locally, the cool thing
is that -- as you can see here, it says local host -- you can continue to manage your
local instance. So it's kind of like your own mini version of the cloud service that you're
running in the cloud, but in this case you can do a lot of debugging without even having
to be connected to the cloud. So in this sense you can have your local instance of your
data store, for example. Same with memcache and so forth. So this is extremely useful
as well. And it doesn't matter whether you're using Java or Python. It's all the same.
Now, if we have Java users, we do have a Google-developed plug-in for Eclipse and
then there's also some open source or various other plug-ins for other environments.
So, for example, NetBeans, there's a plug-in for NetBeans. I think there's also one for -oh, where is there one? Well, I know for sure we have NetBeans out there, and that
was just basically traded out in the community.
And then this particular plug-in for Eclipse -- I'll show you in a second, but basically is
makes both the creation and the deployment and the debugging, all those aspects,
they're easy to do in an Eclipse environment. So file new, new web application, and
then you can debug it locally. That fires up the local -- in this case the local server is
Jedi [phonetic] actually. And it runs Jedi locally and then you can debug it and then
deploy it to the cloud.
So just on kind of review a little bit, back in April of 2008 was when it was actually
launched. And that was just for the Python-only version. And some of these services -all of a sudden fairly limited, but you had the data store and then not too long after that
memcache images and various other features. I won't read them all, but basically the
main point here is that App Engine is a continuously evolving technology that's getting
more and more powerful. And we have a whole list of stuff that I can't necessarily tell
you about, but basically there's a whole bunch of really cool features that we're working
on that we're continuing to add on for App Engine.
So once you jump into the App Engine development environment, you can expect just a
continued stream of updates and new functionality. So we find that our users are
actually very impressed and quite pleased by all the stuff that continues to come down
in the pipeline.
Also, we just celebrated a birthday yesterday, and so there's a blog post about it, and so
it just touches on kind of the overall growth of App Engine. So it's a fairly healthy angle,
I guess, or slope of overall App Engine users over the world. And that's the blog post
that just went out yesterday.
So let me jump in and show you how to actually work with App Engine. So what I'll do is
I'll first do some basic stuff, so I'll go to the App Engine site, I'll show basically how far
you get started and build App Engine or at least register and start creating these stub
empty applications, and then I'll switch over and fire up the local app launcher. So I'll
create a very simple, just for scratch, app running locally and then, depending on time, I
might deploy that or I can create another one and deploy that to the cloud.
And then I'll step over -- I'll do both the Python and the Eclipse side. So I'll show you
the Eclipse plug-in as well.
And then I'll show you the demo that I created earlier today, which you might have an
interest in seeing what are the different moving pieces that are created. And then the
other thing that I wanted to show you is that because we had this hack-a-thon at South
By Southwest Interactive, we have some new sets of workshops. We refer to them as
code labs. And so these code labs basically provide step-by-step instructions on how to
use different Google technologies.
So I'll show you the site, and we have an App Engine section where we have both Java
and Python. And they're more or less parallel, so you get to do the same types of
exercises, but you can just choose whatever you want.
So I'll step into that, but I think that pretty much is going to eat up, I don't know,
whatever, a certain amount of time. I just have to make sure I don't go too late.
Any questions so far? Yes?
>>: In the previous talks we were told how we could get hundreds and thousands of
servers. Can we get hundreds of thousands of servers from Google?
Chris Schalk: So I can repeat it --
>>: [inaudible].
Chris Schalk: Yeah. And correct me if I -- correct me a little bit, but basically you were
saying in previous talks you can get hundreds of thousands of servers?
>>: Instances.
Chris Schalk: Instances. Okay. Are you asking if App Engine can scale to large
numbers ->>: I mean, let's imagine we had a Python or Java version of blast. Could I do
corresponding Google blast to compare with the Azure blast and [inaudible].
Chris Schalk: Well, yeah, I mean, what you're getting at is basically, at its core,
probably the key thing that is of value in the sense that you don't have to worry about
hitting an upper limit on what you -- from a scalability standpoint. So we haven't really
had any instance of any customers that maxed out us. Google's infrastructure across
the board is actually quite extensive globally. So in that sense we're tapping into that.
And Google's -- I should say also, Google's overall cloud infrastructure is already
supporting the various Google Docs and all these different services. So it's tapping into
what's already a very large infrastructure as well.
From App Engine specifically? Yeah, we haven't had any problems with any particular
customers. Google is our biggest customer, or vice-versa. Basically Google is running
it already.
Anyway, let me jump in and show you how to work with App Engine.
So, first of all, let's just -- that's where I uploaded my slides. So the very first thing you
want to do -- actually, let me just switch over to my other browser. That was a sneak
peek.
Okay. This is my external account. So as you noticed, I went to
appengine.google.com, and then I logged in with my Google password, and then at this
point I'm faced with kind of a registry of applications that I have.
So on this particular application or -- these are basically all the various applications that
I have running. Some of them are quite old and then -- so you can go through and
create your own. Actually, I just show that you right now.
So let's go ahead and create an application. Incidentally, you get ten apps to start out
with, and if you put in a request, you can actually bump it up. But you can actually also
get a lot of mileage out of that first ten because you can have versioning, you can
completely swap out and replace it with apps.
Now, the first thing you do when you're creating an application is you just figure out if an
app is taken already. So, for example, if I wanted to check if Cloud Futures Wall is
available and it will say, darn, it's not available. That's because I already took it earlier
anyway. But if I were to say let's create -- oops. Something slightly different. It will say
it's available, and then I can just say Cloud Futures Wall again. You go through and
create your app on the fly, and then once you hit save -- I won't do it for this case
because I don't really want to burn up another app, but you have an empty stub app.
At that point you can go in and, on your local client, start creating an app and test it and
run it. And when you feel that it's in a state that you want to go and push it out to the
cloud, you just create -- you essentially click on upload, whether you're using the
Eclipse plug-in or whether you're using the command line utilities or the App Engine
launcher.
So I'll take a look at this really quickly just to show you the app that I created today for
this little demo just to give you an idea what it's like to look at the dashboard, and then
I'll switch back over to client development.
So this is an app that I built today right there in the seat, and the main thing here is
that -- well, there I can see at a glance the overall performance or the incoming traffic
for the app, which is not very much over today, just me kind of hitting it. I can go into
the quota details and in this case I can see in a very granular sense all the different
services that are being utilized by my app.
Now, if I don't program in these services, then nobody would actually have the ability to
use them. But typically when you get more complex, you're going to be using a number
of services and you'll want to kind of keep track of how the quota is.
Now, as I mentioned, and I showed that fir set of quotas, you can get a lot of mileage
without even paying anything at all. You get basically a free set of usages for creating
simple apps, creating [inaudible] data, so on and so forth.
But you will start seeing some red lines once you start hitting those maximum amounts.
And you can actually get an exception thrown if you go over quotas. But that's when
you want -- you'll know about it, because you'll see it right there. Plus you can actually
then say let's go ahead and turn on billing, and then billing will allow you to continue to
scale. And then you can basically control how much you want to pay. So you would
never get stuck with a massive bill just because the thing went crazy without you, like
overnight. You can set continual gradual limit on how much you want to continue to
spend.
But anyway, for getting started, it's very simple. Just a few other quick things that I look
at.
Logs. You know, you can go through and see all the different types of logs available,
whether it's simple debugging information. That's actually a fairly useful tool. You can
put in logging information with your app, whether it's Python or Java, and just go
through and see how the app is running on the cloud.
Chron jobs, just like your typical chron that you're already used to. And I haven't
enabled some of these because my app is fairly simple, but as I mentioned before, you
have these various services, and you can go through and basically see what the data is
or see what the state of the server is.
Now, in this case, this is actually my data store instance of this particular app, which
happens -- I've defined it to have -- it's an object which takes various fields. So in this
case I've created an object that allows me to go in and I have my name, my address,
and then I have some geographical data that you show you. When I show you the app,
you'll understand what it means.
But basically this is a typical data store object that you define, whether it's on the Java
side where you just go through and create your typical Pojo, which has your various
fields, or if you're on the Python side, you can quickly create a data store object and
define its fields in a similar fashion.
What that translates to is this data store object in which you can then go through and
manage and so forth.
So let me jump back and I'll go to on the client side. Now, on the client side -- so once
you've gone through and you've, say, downloaded the SDK -- actually, there's another
very important website that I'll show you.
How many here are familiar with code.google.com for just general technology about
Google? Not so many. Okay. We've got a few. I was getting nervous there.
Basically code.google.com -- I'll start at the top actually. So if you want to learn how to
use the various Google technologies -- you might be surprised if you've never been
here. Google, of course, has a search capability or things like Gmail and maps, but you
can actually use a very rich set of technologies in API. So App Engine is just one
technology, but if you start looking into whether you're using a technology like, for
example, Google Web Toolkit to build front-end web UIs or Android for building mobile
applications, if you go -- if you start at code.google.com, you'll be able to jump right in
there and get immersed in a whole a bunch developer-related information.
Now, if I click on the App Engine link there, that basically takes me to
code.google.com/appengine, and that's where you can start in understanding how to
work with App Engine. You can sign up and essentially turn on your App Engine
account. So if you already have a Google account, this will allow you to turn on, and
then you'll have your App Engine account all turned on and ready to start building apps,
and then here is when you want to download the SDK.
So this is what you need in order to have your client environment set up. Whether
you're on Windows, Mac or Linux, you can decide what you want. And then, of course,
you have to decide whether you want the Python SDK or the Java SDK.
Of course, if you have the Java SDK you will need a JDK and so forth. And so there's
information that explains how to do that. And there's really no problem with even taking
both SDKs, whether it's Python or Java, which I happen to have right here.
So let me just show you fairly quickly, once you install the Python SDK -- I'll just use
Python as the starter -- the Python SDK comes basically with a set of command line
utilities, and you can just use those. Like app config or -- all those are simple command
line utilities that you can type in and upload, run locally and so forth. You can even
configure them to run with [inaudible]. So if you have something -- your own kind of
methodology for using -- building your apps, you can totally use that.
Now, the App Engine launcher is just a convenience tool, so if I want to, say -- actually,
I'll go ahead and turn that one off and I'll create a brand new app just by clicking on the
plus sign.
So what this is going to do, it's going to create a -- I guess that's good enough. Let's
see. Cloud Futures. That should create my app in that subdirectory. Python App
Engine, boom. And it's also going to run on port 8092.
So now that it's created it, I can click on the little green button there, and that fires up a
local instance.
Oh, did I do something wrong? Let me just create a new one. I'll accept the defaults.
I know, I'll do -- hold on [inaudible].
So I speak some Spanish. Occasionally I try to present in Spanish, but it depends on
how tired I am or whatever the next day. I'm actually going to Mexico next week. We're
having a developer conference, and I'll see how much I'll speak in Spanish over there.
So I created this application. It's now running locally, and I can click on this browse
button, and that actually just allows me to jump out and run this and, as you can see.
Now, in this case -- I'll just jump over to the file system. I think I dumped it to my Xbox -to my desktop. [inaudible] where did I put it? Oh, it's right on my home directory. There
it is.
So this is what you get out of the box if you click on the little plus button. So if you're
just getting started, in this case there's an application yaml, yet another mark-up
language, and a simple single Python script -- let me just fire that up -- that essentially
does a hello world response to an http get request.
At this point you can go through and follow through tutorials that explain how to go and
build method to handle both post get, also web templating, if you want to use jango, if
people are familiar with that, you can use that, or you can use kind of like a simple web
templating so you can start creating html and then start putting in tags which represent
actual data.
So that's where I have my app there. I could show you a few other things, though, just
to kind of give you an idea. If I click on this button, that actually launches a dashboard,
but only for my local instance. And this is what I refer to as the local development
console. So in this case since I haven't really created any services, I'm not really doing
anything, but if I were to go through and create a data store, I would start seeing my
local instance of my objects there.
When I show the demo app in a second, I'll show you actual data that's in there that I've
been playing around with as I was testing it.
And then when I want to go and deploy my app, I can go through and just click on this
button here. And then that basically allows me to log into my Google App Engine
account and send my app on its way.
And then once it's deployed, I can jump out to the actual server side instance. In this
case I don't have a server side instance for this particular app because I haven't created
one.
So that's the basics of using the App Engine Launcher. I think I have -- oh, this one is
actually kind of funny.
I created a language app which basically translates English to a language called
Halaka. How many people are familiar with Halaka? None of them. That's because the
language doesn't exist. It was a joke, actually, between me and a coworker a few years
ago -- well, actually in the mid '90s -- where he wrote the original version of this in Pearl
and he posted it on his company's website and people started linking to it and it actually
became a fair well known -- people didn't realize it was a joke.
So as App Engine was getting started, I wrote a Halaka version on App Engine, and it
has its own algorithm for generating basically gobbledygook, and so I actually posted it
out to the cloud here. It's halakadict@appspot. And so in this case -- and it also learn.
So if it doesn't know a word, it will create a new instance of it. And, plus, I can turn it
around and go backwards.
But for the code for this, I put it out there just for people to learn it. But basically it was
also a learning experience for me. Plus I had a little fun with it because I kind of created
this fictitious language and stuff like that. So anyway, whatever. Another one of these
silly ->>: [inaudible].
Chris Schalk: The Avatar? Yeah, that's right. Avatar ->>: Here it says it's a Jewish law and ritual.
Chris Schalk: Oh, well, I found that out later on. I didn't even know about that. So this
was, like, just a joke back from 1995 or whatever, but now we know. I guess I can
change it, if need be, but, you know -- so anyway, I'm digressing.
So that's the App Engine Launcher. Let me just back into some of the other stuff that I
was going to show you.
Oh, let's go over to Eclipse. All right. So I happen to have my Eclipse platform here.
And I can do a similar thing, or if I want to create a brand new app, I can go through -because I have the plug-in installed, I can go ahead and say let's do a new web
application project, and so I can say hello Cloud Futures, give it a common package.
Now, this is an option, but if you're familiar with Google Web Toolkit, that's a whole body
of technology which is actually quite powerful to build really rich Ajax-style UIs, and you
can actually use this within App Engine fairly easily, and this wizard actually gives you
the option of just generating a simple starting app to get started. Basically like a little
stub app. That way you can put in some text and it will go back and exercise like a
server-side call and then send back a response.
For this case, I won't do that. I'll just create a very simple starter app that, as you can
see, it's somewhat similar to what that little plus button on the app launcher, and I'll be
using -- you can specify what SDK. 132 is the latest, but, you know, whatever. It's
actually quite easy to upgrade the SDKs.
Okay. So there it is. That's funny, I have an "i" in there,
iCloud. Oh, well.
So in this case let's just take a look at what just got created so we can have a better feel
for what it is. So in this case I created a new kind of stub application. So if you're
familiar with Java Servlets, it's basically responding to a get request. And the way I
want to -- oh, before I run it, let me just show you one more thing.
So this is very similar to a server-side, like a Java EE application, so an app that you
could run, say, on Tomcat
or GlassFish or so forth. But there are some slight differences.
Over here you'll notice there's, as you expect, a web.xml, but there's also an
appengine-web.xml. So in this case, this is where you could specify any App
Engine-specific properties, and then as you start to use other services, like, for
example, the task use or chron and so forth, you do typically start adding a few more
config files. But, yeah, so that's, in its simplest form, what you get when you create like
empty App Engine, for Java app, that is.
Now, one thing that -- right off the bat there is there's this field within your App Engine
web.xml which allows you to specify the name of the application. So if I say Cloud
Futures Wall right there, that will mean if I deploy that app, that will actually deploy out
to my registered Cloud Futures Wall app that is now live on the internet. But if I'm just
running locally, I don't have to define anything at the moment since it doesn't really
matter.
So let's just go ahead and step through how to run it. So I'll click on run as web
application. So now, as you can see, it's running on local host 8080, so I'll click on local
host 8080. And then that's a little -- that's not the server, that's my browser, because it
was cached. It has this mistake -- there we go.
So here's basically kind of a generated index page which has a link to any registered
servlets, and there's my hello world server responding in kind. So pretty
straightforward. I can do the same thing if I wanted to insert a break point into the code.
You get the idea. But basically if you're an Eclipse user, I can fire it up locally and say
debug as a Google App Engine web application and so forth, and then it will launch the
debugger and I can do line-by-line debugging and so forth. So pretty straightforward.
Let me jump in and start showing you something more interesting. At this point what I'll
do is I want to show you a set of tutorials that we created. So it's bit.ly/gcodelabs, and I
think I put it on the presentation, but if not, you can always make a note of it. But
basically gcodelabs. And that's a bit of the exercises that were created for this
hack-a-thon a couple weeks ago.
And so this was actually a joint project by all of the different developers at -- well, we
had multiple products being showcased and people who came to the hack-a-thon were
encouraged to build apps that were essentially mache-ups of the various different
technologies. And away actually gave out prizes. One of our -- actually, five of the folks
who came up actually built some really cool apps that integrated Android with App
Engine in the background or they used some cool maps features and so forth.
So anyway, as you can see, there's the App Engine portion of these code labs which
explain how to do essentially some of the stuff that stepped through already, and then at
that point you can jump in and start doing step-by-step exercises on how to build a
simple -- it starts off with a guestbook application which is part of the getting started
guide, but it continues on and shows how to build XMPP, like a little chatbot, and so
forth, as well as cover some of the other stuff.
And I actually wrote the Java version, and then my coworker wrote the Python. But
basically it does the same thing. So if you follow along this guide, you can essentially
do what I did as well when I was showing how to build it. And here's, like, a running
instance of this application, and I can just fire it up just so you get a basic idea.
So this is like the finished version of this guestbook app. Actually, it may or may not be
finished. Let's go ahead and take a look.
So the cool thing about is that -- oh, so this one doesn't have the finished version, but
basically when you get started you start using the user servicing and then if you notice
here, if you click on the generated link that allows you to log in as an actual user, I don't
actually have to even be logged into Google, you can have this simple test capability
where it then goes in and gives you kind of like a pseudo local user. So that's just one
usage of the user service.
But basically if you follow through that code lab that I showed you here which explains
how to build this guest application, you can build an app that allows people to
essentially submit comments onto a wall.
So that was kind of the inspiration for this demo app that I created for this particular talk.
So what I did was I took that same app and because folks were from all around the
world, I figured it might be kind of fun to receipt a demo app that allows people to write a
comment on a wall but then also kind of showed geographically where they are, where
they're coming from for this conference.
So let me just jump out and show you that app and then I'll show you how I built it. So,
first of all, the app that I created is this one here, cloudfutureswall.appsbot.com. So if
you actually go there, you can do what I'm doing here on the fly, and we might have
actually had some people sign up if anyone were paying attention. So we just have me.
So this is an app that I created mainly just to kind of showcase like an extension of that
wall app. And the way you do it is you can say -- should I enter you, Juan, or -- I'll just
enter my old dog -- well, I don't have an icon for a dog so I'll just make up someone. All
right. Sammy. And let's say this person lives in Amphitheater Parkway. I don't know
why I choose the hardest thing. Let's go for London, England. There we go. Hit tab.
So this what is doing -- I have a little bit of Java script that uses the Google Maps API
that geolocated based on what I typed in, and then since I'm a guy I will switch my icon
over -- oh, maybe I'll go for that guy. I don't know. And so this is just a little bit of
Google Maps Java script fun that I just kind of tossed into this app.
So I've defined basically where I'm coming from for this and, and then I can say hello,
there, and so I'll hit add to the map and then what that's doing back on the server -yeah, I have to do a reset -- oh, cool, we have some folks signing up.
So when you click on the reset map, it actually starts showing you the different folks
who have signed up. So in this case it says Sammy says hello there, and I also put in a
little bit of -- because the Maps API has all these cool things where you can calculate
distance, and I put the distance to Redmond, Washington. So anyway, just for fun, you
know, let's take a look at Rod Senra [phonetic]. So Rod Senra -- ah, there you go
[laughter]. So you traveled 6,736 miles to come here. Cool.
So anyway -- and, also, there's a list view, so if you go down to the bottom, it's kind of
hard to see, but if you just scroll down you can kind of see basically like a list view of the
different comments in it. So this is -What's that?
>>: There's lots of new people there.
Chris Schalk: Yeah. Looks like people are hitting the website. So, anyway, don't say
any bad words. Otherwise I'll have to kill the app. But, anyway, you get the idea.
I also made sure to escape to html, but I slapped some code in very quickly, so you
could theoretically break it. Just keep that in mind.
So let me show you how I built it just so you get an idea. Obviously it's somewhat of a
frivolous application, but you can kind of get a flavor for how you can use App Engine to
create a nice front end, but then you can also use it to build, say, like a back-end data
store for geographical data in this case. Okay.
So what I did -- and I'll even step over here, so -- if I can find it. Oh, there it is. Cloud
Futures.
So I went ahead and started off this application just using the file new web application
and I started off with a really simple hello world servlet, and that was basically it. But
then I started building out the functionality, and I figured, okay, I want to have a
front-end page here that allows me to present a form, and I want a Google Map on it.
So in this case I won't get into the details of the map, but I just had, like, a Java script
file that goes and renders a map how I want it and then just takes care of the
visualization part. But the main job of this JSP page is just to render the form. And
because the Maps API allows me to geolocate and quietly figure out the latitude and
longitude and then stick those into my form as hidden fields, that's basically kind of the
little bit of trickery behind it.
So I have my form, and I post -- once I post the form, meaning I submit and add a new
contact, that goes onto the server. And let me just show you my code to process the
comment.
So if someone presses the button to actually add themselves into the registry, this is my
do post method, which if you're familiar with server-side Java programming, it's fairly
straightforward, but in a nutshell, any web developer can understand that you're
grabbing some parameters from a form and you're doing something with it.
In this case, this is the bit of the code that allows me to interact with the data store
service, and it's just like creating a new Java object, setting some of the fields, which
are basically passing from the form, and I hit a method called make persistent, and then
I close my connection to the data store.
So at that point I've created my data store instance and I have my data. Now, if you're
curious how I actually render these points onto the map, I can show you. So just to kind
of go back to map view here -- now, as the map renders, what it's actually doing is it is
actually creating a -- come on -- it's creating a request -- uh-oh, did it break already? It's
creating a request to go out to -- here we go. I'll just -- sorry. I'll also show you the
dashboard for this app as well. And then I'll finish up and we'll step into a few more
other things here.
I'll go into list view. I have a sinking feeling that the app might have some data in there
that made it -- so anyway, let's jump into the dashboard while we're at it.
Oh, before I do that, in order for the map to populate the list, which is currently not quite
working at the moment -- I'll have to double check on it -- I have this url that I've defined.
Right now there's no security on it so really anyone can go to a slash rest. And you can
see essentially what the incoming -- or what the data for the map is. And so this is
essentially a JSON stream, and then you use the Google Maps API and Java script to
take that stream and then render a set of data points onto the map.
So in that case, how did I create the JSON stream? Well, basically in a very simple
matter of creating a JSON rest servlet which I've mapped to slash rest, and in this case
the JSON servlet just does a simple query and creates a JSON output stream which
then on my client side I can consume inside my Google Map and then send it on its
way. Okay?
So let's go ahead and check out the dashboard for this particular app. So this is like the
server-side instance. So there it is at the top. And since we have data in there, I can
click data store viewer -- oh, see that last spike. So now I can see all the people that
are signing in, and I see lots of weird characters here. You guys are testing my app,
aren't you? You're going to break it. Oh, well.
Actually, the data looks okay. But, ah, whatever.
So anyway, that's basically the app itself. I'm looking at the high-level aspect of it on the
server, and there's the little spike as you guys are now hitting it.
Anything else? Let me see if there's any logs that are decent. Nothing really.
But anyway, so that's the basics of that app just to kind of give you a feel for how it
works. It's fairly simple. It just has this wall JSP which is my front-end form, I have the
list view here which is my comment list, so when you switch over to list view, it's just
doing a simple query of the data items and displaying it in a straightforward fashion.
And this is very similar to what is in the tutorial that we showed -- that I showed a
second ago.
And the other thing is -- typically what I do is I break down my data objects and I create
a model project and then I can create a set of objects that represent my data and then
some DAO objects if I want to do a little bit more typical database operations or data
operations, like insert, update, delete, and so forth.
But in this case I've just created this single class called comment, and the comment has
a number of fields. Author, name, so forth, address, latitude, longitude and icon and so
forth and then the associated getters and setters. And I used the -- actually, the built-in
factory service for instantiating essentially a connection to my data store, and it allows
me to query or insert, update, delete, and so forth, just using the API.
So that's that. I'll go back. And feel free to play with the app, continue, and I might
update it to clean out some of the data or whatever. So anyway, so that's that.
Let me jump back to my presentation to see what else I want to show you.
I think that was it. I have a few other demo apps that I've created just for fun. One is
called Plane Crazy, and this one I created a while back, which it has integration with
social. There's some social features. So it's -- I can jump out to the live instance of it.
So I created this app last year which showed basically how to interact with different
services. And the main technology that I used in this case was Google Friend Connect,
and Google Friend Connect is kind of a neat technology that allows me to push out
events and so forth or -- the coolest thing is I can log in with a number of different online
credentials. So whether it's OpenID directly or Yahoo or Twitter and so forth.
So for this one I'll just go ahead and log in using my Google credentials, and then the
main point here was just to kind of show, like, a nice UI front end which also integrates
with -- did I kill my browser? Oh, no, there is it is -- which integrates with the various
online services. And Google Friend Connect is pretty cool in the sense that it allows
me, as I mentioned, to federate out different events.
So in this case I can -- the main point of this app is that it shows how to use the email
service, it shows how to actually integrate with different users and so forth. I can
creativity streams. And the main usage pattern here is I just select like an airplane as
my favorite airplane and then I can take this particular event and post it out to other
social networks that are connected with me.
And so behind the scenes what it's using is a set of APIs that are called the Open Social
Java client APIs which allows me to make a connection out to various other sites and
then post activities and so forth.
So I won't get into all the details, but you can get the general idea. I've also open
sourced this as well so you can play around with the code directly.
Plane-crazy.appspot.com. And it's a Java app, but depending on time, I was possibly
thinking of working with one of our Python guys to create a Python version. Okay.
So I think I've showed most of the things that I wanted to show. That was the url if you
wanted to try out some of those new code labs, and, of course, there's the App Engine
portion of it directly.
And then I showed basically how this one works. So that was just a simple wall demo
that you can play around with. I might have to fix it now.
And some main places -- as I mentioned before code.google.com/appengine. So if you
want to get started, that's where you would go. And then there's just some cool blog
posts here. Like, for example, the main blog for App Engine which provides the latest
information of all of the stuff that's going on, as well as -- even if you want to drill down
into specifically Java persistence, there's a blog there that's running by the community.
Now, contact info for me. Basically that's my work email. So feel free, if you have any
questions, if you feel like trying out App Engine for your company or whatever, you can
always just ping me if you need any particular help. My Twitter address is there. I don't
tweet that often, but I usually -- if I'm going out and speaking, I will go ahead and just
tweet some of the information.
I provided slides also to Juan, but I also posted them on Slide Share, but I don't have
the link. But if you -- I will post the link to my slides also on Twitter so you can get it
from there.
Okay. Any questions?
Yes?
>>: I think you want record it or no ->>: Yes. So basically he will repeat the question ->>: Oh, okay. I was just curious. This was a very interesting talk, but I was curious in
the middle when you mentioned something about there is an increase in Java coding
and Google. Why would that be? You were hiring more Java coders or -Chris Schalk: Google in general is growing, and it's just, I don't know, I think a sign of
the times where it's reflecting maybe the general population of developers out there,
and Java is actually a significantly popular programming language. But there's no real
major intent one way or the other. It's just kind of one of the signs of the times.
Google, to some degree, is somewhat organic in the sense that there's a lot of different
projects going on, and each project lead kind of has their own preference. But I would
just say from an empirical standpoint, Java seems to be a little bit -- you know, getting
larger and larger, but, yeah, I don't think one language will completely dominate. I think
it's going to be a mixture of stuff.
Any other questions about App Engine?
>>: [inaudible] how does App Engine store the data? Do you have some database to
store it.
Chris Schalk: Oh, yeah, yeah, yeah. So I got into the data store. So App Engine, as I
explained before, has like a set of services, and these services are essentially tied into
the same infrastructure that Google uses. So Big Table is kind of the internal name of
this storage technology that Google uses for the overall search technology. The data
store is essentially an interface by which you can -- or really internal Google or external
folks can use App Engine to utilize this same data storage capacity.
Now, Big Table is not a SQL database, it's kind of like a different animal. But it's
designed in a way to have maximum scalability. And so in that sense if you learn how
to work with the Big Table or essentially data store technologies, you can essentially
design an app that has very -- a very scalable app, but it is different from your typical
SQL database.
>>: How about performance? Is it slower than [inaudible].
Chris Schalk: Whenever you do like a Google search, you're basically accessing the
same infrastructure. So it seems to work okay for Google searches.
Now, of course, there are -- and I did mention, there's followup information on how best
to scale your data store usage or your apps that use data store. There is a -- I may not
have included the link, but if you Google or use any search engine, a Google IO
presentation that one of the guys who wrote the original data store API, he had some
very good tips on how to write your most scalable applications.
Again, that's a presentation that was given last year at Google IO, and I believe his
name is Brett Slatkin [phonetic] was the guy who wrote that particular presentation. So
it gives some good advice on how to write scalable applications that can have
essentially maximum performance.
Yes?
>>: If I have a very CPU intensive application like a video encoder or something like
that, is Google App Engine for me or should I go down this tack Amazon or someplace?
Chris Schalk: You can use it. Probably I would say you can try out either one and see
what works out. As I mentioned, since Google App Engine is so easy to get started,
you can always prototype and see if it works. CPU intensive stuff will -- you do have a
quota on CPU usage for your free usage. But if you still are able to find out or process
enough without even running into the billing threshold, then that might be helpful at least
for getting started.
But, yeah, you can do it, but you will at some point, if you're doing really high amounts
of CPU processing, run into the threshold where you'll need to decide if you want to turn
on billing to continue to process your server code.
>>: A completely different question. I couldn't help notice that one of your presentation
was for a VC company on your folder. What kind of comments do you get from these
people? I mean, this is basically innovation platforms, what you're doing.
Chris Schalk: So what kind of -- so ->>: What kind of comments do you get from VCs or -Chris Schalk: Well, so just to -- yeah, so we typically will give presentations to a wide
array of companies, whether they're large or small, and, yeah, VCs are definitely in the
mix there. The comments from them -- sometimes I would say the VC community is not
quite aware of this technology because a lot of times they're dealing more on the -- well,
or the other thing that -- and this is something that I'm pushing for at Google is that we
tend to be pretty good at reaching out to the massive develops, but we don't quite give,
like, higher-level white paper type of content out there just yet. But we're working to
address that as well. So that way we're also reaching out to the folks who are not in the
trenches writing every single line of code, but we're also providing kind of the
higher-level architectural -- you know, key points of these specifically technologies and
how you might use them in different capacities together or even alone.
But, yeah, the VC community I would say in general probably are not fully aware of the
nitty-gritty stuff that we tend to post. And so they are sometimes surprised at some of
the stuff that you can do with that [inaudible] as well as some of the other Google APIs
and technologies.
Yes. You have a question back there?
>>: So I wondered if you supported MapReduce.
Chris Schalk: Yeah, that's a fairly common request, and I don't know if -- I don't think I
can comment publicly, but we're definitely aware of it. Yeah, we're definitely aware of it.
So, yeah -- like I said, we've got a whole pipeline of stuff that we're working on, things
like that.
>>: [inaudible].
Chris Schalk: We'll see.
>>: Hi. When you mentioned the infrastructure, you mentioned there's support for
images memcached, several other services, but I missed video, audio and streaming
data.
Chris Schalk: That can be handled by blob storage. So there's a blob store. And that
was a service that got turned on not too long ago. But, yeah, you can use -- you can
handle really any kind of media types using that particular service there.
>>: Hi. Two questions, actually. One is what is the kind of integration with the Android
platform? I mean, if you wanted something to seamlessly migrate between the two.
And the second one would be what if you wanted to have some interaction with, like,
some third-party server or service? How do you do that?
Chris Schalk: So those are two very typical questions or two typical usage patterns that
we noticed. The first one with Android or, in general, any mobile platform. Is there a
specific linkage between App Engine and Android? Not really. I mean, it doesn't really
matter in the sense that you could create, say, a back-end server for a mobile app that's
run Android and it would be just be interfacing via simple url fetches just simple http
gets and so forth.
And that same App Engine back end could also serve as a back end for a mobile app
that's run on an iPhone or really any kind of other front-end technology.
Now, the second question -- what was the second question again?
>>: [inaudible].
>>: Oh, yeah, third parties. That's also fairly common. And one of the things that we
even mention is that if you're already using, say, S3 or various other types of services
out there, we don't really have any qualms about you mixing and matching and just
trying out what works. So if you already have existing cloud services fully engaged and
doing stuff, there's really no issue from Google's standpoint whether you want to kind of
mix and match or have kind of like a heterogenous type of architecture that does utilize
that.
And actually a good number of our customers, partners, do have a fairly diverse overall
architectural platform that tends to use a combination of these things.
>>: But are there tools in the actual App Engine to do that, let's say to make a call to a
completely remote service -Chris Schalk: Well, like url fetch would be, like, a pretty typical service that you would
use for that kind of interaction. I did mention, like, straight JDVC type or, like,
socket-type communication is not there today. Mainly that's a design consideration for
scalability. But, yeah, just so you're also aware of that.
>>: So I guess I'll ask another question. You are a little out of sync with Jango in the
Python version. How fast could you put the most recent versions of Jango for the
Python version?
Chris Schalk: [inaudible].
>>: Well, we can use your mic.
Chris Schalk: So as you can tell, I'm a little bit more on the Java side, but I like Python
just as well. I just haven't gone through the process of flipping the Jango templating
support. But there's a url. I think it was an online tutorial. I think Guido -- you know,
Guido, the ->>: [inaudible].
Chris Schalk: Oh, that particular one is out of assigning? Okay. Well, that's good to
know. I'm mention it to them next time I see it. Yeah, okay. How old is the ->>: [inaudible].
Chris Schalk: Okay. Okay. I'll definitely let our guys know about it to see what the
latest is on that on updating that.
So anyway, is that -- any other questions? Cool. Well, thanks a lot for being a nice
audience.
[applause]
Download