Google App Engine is a platform for hosting web applications in Google's data centers. It allows developers to build applications on scalable infrastructure without having to manage servers. Key features include automatic scaling, high availability, easy deployment, and built-in services like Datastore, Memcache and Task Queue. The development process involves using the App Engine SDK, which includes a local development server that emulates the live environment. Applications are deployed to App Engine by uploading the compiled code.
4. Cloud computing : Definition (Wikipedia)
Cloud Computing is Internet-based computing,
whereby shared resources, software, and information
are provided to computers and other devices on
demand, like the electricity grid.
5. Cloud computing characteristics
Massive, abstracted infrastructure
Dynamic allocation, scaling, movement of applications
Pay per use
No long-term commitments
OS, application architecture independent
No hardware or software to install
7. Web 2.0 & Cloud Computing
Web 2,0 concentrate on the private user and clouds
are decscendents of data centers which services the
enterprise
Web 2.0 promote SaaS
Web 2.0 needs massive scaling technologies
User centric Web 2.0 companies (Twitter, Slideshare)
are relying on Cloud Services
9. Software as a Service (SaaS)
SaaS is at the highest layer and features a complete
application offered as a service, on-demand,
via multitenancy — meaning a single instance of the
software runs on the provider’s infrastructure and
serves multiple client organizations.
10. Platform as a Service (PaaS)
The middle layer, or PaaS, is the encapsulation of a
development environment abstraction and the
packaging of a payload of services
PaaS offerings can provide for every phase of software
development and testing, or they can be specialized
around a particular area, such as content management
11. Infrastructure as a Service (IaaS)
IaaS is at the lowest layer and is a means of delivering basic
storage and compute capabilities as standardized services
over the network.
Servers, storage systems, switches,routers, and other
systems are pooled (through virtualization technology, for
example) to handle specific types of workloads — from batch
processing to server/storage augmentation during peak loads.
12.
13. Deployment Model
Public Cloud: provider refers to the cloud platform that
targets any types of customers.
Private Cloud: infrastructure that’s hosted internally, targeting
specific customers or sometimes exclusively within an
organization.
Hybrid Cloud: the combination of public and private clouds,
or sometimes on-premise services.
14. IaaS & PaaS: Developer's Perspectives
IaaS normally provides up to O/S level as your choice; for
example Amazon Web Services (AWS) offers several types of
Operating Systems such as Windows Server, Linux SUSE, and
Linux Red Hat. Developer need to install own middleware,
database, etc.
PaaS, given that the database server, VM, and web server VM
are readily provisioned,
15. Setting Up App in IaaS
Source:http://acloudyplace.com/2012/01/comparing-iaas-and-paas-a-developers-perspective/
16. Setting Up App in PaaS
Source:http://acloudyplace.com/2012/01/comparing-iaas-and-paas-a-developers-perspective/
17. PaaS for Java
Amazon Elastic Beanstalk
CloudBees
Cloud Foundry
Google App Engine
Heroku for Java
Red Hat OpenShift
21. Google App Engine : Definition (Wikipedia)
It is a platform for hosting web applications in Google-
managed data centers. It is cloud computing
technology which virtualizes applications across
multiple servers and data centers.
22. Google App Engine
Running your web application in Google infrastructure
Support different runtime environments
Java (JRE 6 with limitation, Servlet 2.5, JDO, JPA)
Python (2.5.2)
Apps run in sandbox.
Automatic scaling and load balancing
No server restart, no network issues
23. Hosting Java web apps traditionally
Not so popular except enterprise
High rates as compared to PHP hosting
Shared Tomcat instance among users
Restrictions on any time deployments due to shared
server
Dedicated hosts works fine but they are costly
37. App Engine for Java : One Year
Source: What’s Hot in Java for App Engine Google Con 2010
38. GAE Java Runtime Environment
Java 6 VM
Servlet 2.5 Container
HTTP Session support (need to enable explicitly)
JDO/JPA for Datastore API
JSR 107 for Memcache API
javax.mail for Mail API
javax.net.URLConnection for URLFetch API
40. Services by App Engine
Memcache API – high performance in-memory key-value cache
Datastore – database storage and operations
URLFetch – invoking external URLs
Mail – sending mail from your application
Task Queues – for invoking background processes
Images – for image manipulation
Cron Jobs – scheduled tasks on defined time
User Accounts – using Google accounts for authentication
41. Limitations
Programming Model : Application runs in sandbox and
can not
Write to file system
Make arbitrary network connections
Use multiple threads/processes
Perform long-lasting processing
Permissions
Know about other instances/applications
Quotas (Requests, In/Out bandwidth, CPU time, API
calls)
43. GAE Datastore
Storing data and manipulation
Based on Bigtable
Bigtable is proprietary and hidden from the app developers
Not a relational database (No SQL)
GQL (Google Query Language) to query
Stores data as entities
Distribution, replication, load balancing behind the scene
Need to use JDO/JPA
44. User Service : Google Accounts
Google Accounts are encouraged as the preferred
authentication mechanism for App Engine
– It assumes that all users have a Google Account
– Google authentication for private domains isn’t available yet
Access to Google account data -> email, id
The Development Server simulates Google Accounts
Access constraints based on roles
45. User API : Example
import com.google.appengine.api.users.*;
import com.google.appengine.api.users.*;
UserService userService == UserServiceFactory.getUserService();
UserService userService UserServiceFactory.getUserService();
User user == userService.getCurrentUser();
User user userService.getCurrentUser();
String navBar;
String navBar;
if (user == null) {{
if (user == null)
navBar == "<p>Welcome! <a href="" ++ userService.createLoginURL("/")
navBar "<p>Welcome! <a href="" userService.createLoginURL("/")
+"">Sign in or register</a> to customize.</p>";
+"">Sign in or register</a> to customize.</p>";
}} else {{
else
navBar == "<p>Welcome, "" ++ user.getEmail() ++ "! You can <a href=""
navBar "<p>Welcome, user.getEmail() "! You can <a href=""
+userService.createLogoutURL("/") +"">sign out</a>.</p>";
+userService.createLogoutURL("/") +"">sign out</a>.</p>";
}}
46. URLFetch API
Invoking external URLs from your application over HTTP and
HTTPs
import java.net.*;
import java.net.*;
import java.io.*;
import java.io.*;
URL url == new URL("htp://...");
URL url new URL("htp://...");
InputStream inp == new InputStreamReader(url.openStream());
InputStream inp new InputStreamReader(url.openStream());
BufferedReader reader == new BufferedReader(inp);
BufferedReader reader new BufferedReader(inp);
String line;
String line;
while ((line == reader.readLine()) != null) {{
while ((line reader.readLine()) != null)
//do something
//do something
}}
reader.close();
reader.close();
47. Mail API
Send emails on the behalf of app administrator to the Google
account use.
You can not receive emails
import javax.mail.*;
import javax.mail.*;
Session session == Session.getDefaultInstance(new Properties(), null);
Session session Session.getDefaultInstance(new Properties(), null);
InternetAddress admins == new InternetAddress("admins");
InternetAddress admins new InternetAddress("admins");
Message msg == new MimeMessage(session);
Message msg new MimeMessage(session);
msg.setFrom(admins);
msg.setFrom(admins);
msg.addRecipient(Message.RecipientType.TO, admins);
msg.addRecipient(Message.RecipientType.TO, admins);
msg.setSubject("subject");
msg.setSubject("subject");
msg.setText("text");
msg.setText("text");
Transport.send(msg);
Transport.send(msg);
48. Memcache Service
Distributed in memory cache, better than DataStore
Key-value pair mapping
Configurable expiration time but
Unreliable might be vanished at any time
Supported Interfaces :
– JACHE (JSR 107: JCACHE – Java Temporary Caching API)
– The Low-Level Memcache API
50. Task Queues API
Perform background processes by inserting tasks into queues.
Instructions need to be mention in file queue.xml, in the WEB-INF/ dir
import com.google.appengine.api.labs.taskqueue.Queue;
import com.google.appengine.api.labs.taskqueue.Queue;
import com.google.appengine.api.labs.taskqueue.QueueFactory;
import com.google.appengine.api.labs.taskqueue.QueueFactory;
import com.google.appengine.api.labs.taskqueue.TaskOptions;
import com.google.appengine.api.labs.taskqueue.TaskOptions;
// ...
// ...
TaskOptions taskOptions ==
TaskOptions taskOptions
TaskOptions.Builder.url("/send_invitation_task")
TaskOptions.Builder.url("/send_invitation_task")
.param("address", "juliet@example.com")
.param("address", "juliet@example.com")
.param("firstname", "Juliet");
.param("firstname", "Juliet");
Queue queue == QueueFactory.getDefaultQueue();
Queue queue QueueFactory.getDefaultQueue();
queue.add(taskOptions);
queue.add(taskOptions);
51. Cron Jobs
Up to 20 scheduled tasks per app
Cron jobs (scheduled tasks) supported in cron.xml in WEB-INF dir
Schedule instructions contain Englis-like format
<?xml version="1.0" encoding="UTF-8"?>
<?xml version="1.0" encoding="UTF-8"?>
<cronentries>
<cronentries>
<cron>
<cron>
<url>/listbooks</url>
<url>/listbooks</url>
<description>Repopulate the cache every day at
<description>Repopulate the cache every day at
5am</description>
5am</description>
<schedule>every day 05:00</schedule>
<schedule>every day 05:00</schedule>
</cron>
</cron>
</cronentries>
</cronentries>
55. Getting Started
The application owner must have a Google Account to
get the tools regardless of language.
Use Java 6 for development.
Eclipse and Netbeans have official plugins.
Both SDKs ship with a Development Web Server that
runs locally and provides a sandbox almost identical to
the real run-time.
56. Software Development Kit
App Engine SDK
– Includes web server (Jetty)
– Emulates all the GAE services
SDK includes an upload tool to deploy app to GAE
Command line tools included.
62. Deployment Environment
Application is deployed as .war which contains.
Deployment is integrated in IDE
Deploy multiple version of the application at the same
time
Your app lives at
– <app_id>.appspot.com or
– Custom domain with Google Apps
63. Running your app on Google
http://<version>.<appid>.appspot.com/some/path
66. Resources
Google App Engine at a glance, Stefan Christoph
Developing Java Based Web Applications in
Google App Engine, Tahir Akram, Dec. 2009
Google App Engine, Patrick Chanezon, Mar 2010
67. Thank you
thananum@gmail.com
www.facebook.com/imcinstitute
www.imcinstitute.com