Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Google App Engine Overview - BarCamp Phnom Penh 2011
1. Guy Flysher
Google App Engine
(Google App Engine Overview)
Barcamp Phnom Penh 2011
Phnom Penh, Cambodia
2. About me
● Developer in the Emerging markets team.
● Joined Google in 2007.
● Previously worked on Social graphs,
Gmail and Google Accounts.
● Currently work on SMS products (Chat SMS, G+ SMS and
more to come...)
● G+ profile: http://gplus.name/GuyFlysher
3. Agenda
● Part I: What is App Engine?
● Part II: App Engine Product Usage
● Part III: How to use App Engine
○ Hello world example
○ App Engine Services
○ Code examples
○ Demos of non web uses
5. App Engine is a full development platform
App Engine provides great
Hosting tools, APIs & hosting
Easy to build
APIs Easy to manage
Easy to scale
Tools
9. Agenda
● Part I: What is App Engine?
● Part II: App Engine Product Usage
● Part III: How to use App Engine
○ Hello world example
○ App Engine Services
○ Code examples
○ Demos of non web uses
10. App Engine - A Larger Number
1,500,000,000+
Page views per
day
12. Royal Wedding - Scalability Success
Official blog & live stream apps
hosted on App Engine
On Wedding day...
Blog app served:
● Up to 2k requests per second
● 15 million pageviews
● 5.6 million visitors
Live stream app served:
● Up to 32k requests per second
● 37.7 million pageviews
● 13.7 million visitors
http://goo.gl/F1SGc
13. Not all apps user-facing or web-based!
● Need backend server processing? Want to build your own?
● Go cloud with App Engine!
● No UI needed for app to talk to App Engine, just need HTTP or XMPP
● Great place for user info e.g., high scores, contacts, levels/badges, etc.
● Better UI: move user data off phone & make universally available
14. Agenda
● Part I: What is App Engine?
● Part II: App Engine Product Usage
● Part III: How to use App Engine
○ Servlets and JSP files
○ Hello world example
○ App Engine Services and code examples
○ Demos of non web uses
15. Java HttpServlet
● Abstract class for processing HTTP requests.
● Override its methods for processing various HTTP requests,
e.g:
○ doGet
○ doPost
○ doHead
○ etc
● Part of Java (not App Engine specific)
16. HttpServlet example
public class Hello_worldServlet extends HttpServlet {
public void doGet(HttpServletRequest req,
HttpServletResponse resp) throws IOException {
String userIp = req.getRemoteAddr();
resp.setContentType("text/plain");
resp.getWriter().println("Hello, " + userIp);
}
}
17. JSP - JavaServer Pages
● Used to create dynamically generated web pages based on
HTML.
● A mix of Java and HTML.
● Can be though of as the Java equivalent of PHP.
26. The user system
Building your own user system is a lot of work
● Needs to be very secure - destructive result if broken into.
● Needs to be very reliable - if it is down your app can't be
used.
● Lots of other services you need to build - a recovery
mechanism etc.
27. The Google user system
App Engine User Service lets you use Google's user
system for your app.
Benefits:
● Users don't need to create a new account to use your app,
they can use their Google account
● Very secure, highly reliable.
● Already has recovery mechanisms etc.
● Very easy to use!
28. The User Service
Checking if a user is logged in:
<%
UserService userService = UserServiceFactory.getUserService();
User user = userService.getCurrentUser();
if (user != null) {
%>
<p>Hello, <%= user.getNickname() %> </p>!
<p>Our records show your email as: <%= user.getEmail() %> </p>
<%
} else {
%>
<p>Hello! Please log in. </p>
<%
}
%>
29. The User Service
Creating a sign in/out links
<%
UserService userService = UserServiceFactory.getUserService();
User user = userService.getCurrentUser();
if (user != null) {
%>
<p>Hello, <%= user.getNickname() %>!
<p> <a href="<%= userService.createLogoutURL(request.getRequestURI()) %>">Sign out </a></p>
<%
} else {
%>
<p><a href="<%= userService.createLoginURL(request.getRequestURI()) %>">Sign in</a</p>
...