31
Java Applications on Google App Engine Narinder Kumar www.xebiaindia.com

Java Support On Google App Engine

Embed Size (px)

DESCRIPTION

This presentation was given by Narinder Kumar at IndicThreads Conference in Pune.

Citation preview

Page 1: Java Support On Google App Engine

Java Applications on Google App Engine

Narinder Kumar

www.xebiaindia.com

Page 2: Java Support On Google App Engine

Easy to build, easy to maintain, easy to scale

Page 3: Java Support On Google App Engine

Current Web Application LifeCycle Management

➢ Prepare➢ Deploy➢ Scale➢ Maintain / Monitor➢ Upgrade

Difficult and Expensive

Page 4: Java Support On Google App Engine

Google App Engine ?

Page 5: Java Support On Google App Engine

What is Google App Engine➢ Yet another Cloud Computing Platform➢ Hosts your Web Applications on Google

Infrastructure➢ Formally launched in April'08 with Python➢ Java Support enabled in April'09

Page 6: Java Support On Google App Engine

Java on Google App Engine➢ Platform as a Service (PaaS)

➢ Hardware, Connectivity➢ Operating System➢ JVM➢ Servlet Container➢ SDK➢ API's for accessing Google Infrastructure

Services

Page 7: Java Support On Google App Engine

Key Features➢ No need to install or maintain your own stack

➢ Scaling on Demand

➢ Google's proven infrastructure for you

➢ Pay as you Go, Free to get started

Page 8: Java Support On Google App Engine

Architecture

Page 9: Java Support On Google App Engine

Typical Application Building Blocks

Industry Standard APIs : JPA/JDO, JCache,JavaMail

Google Specific API Interfaces

Google Infrastructure

Page 10: Java Support On Google App Engine

Platform➢ JVM 5 or later➢ Servlet 2.5 Container, Jetty & Jasper (can

change)➢ HTTP Session➢ JSP

➢ SandBox Environment➢ Google Services API

Page 11: Java Support On Google App Engine

Getting Started➢ Google Account & Mobile Phone

➢ Download and install SDK

➢ Plugin for your IDE / Command Line

Page 12: Java Support On Google App Engine

DEMO OF HELLO-WORLD

Page 13: Java Support On Google App Engine

Summary➢ SDK includes

➢ Dev AppServer➢ Disk based version of DataStore➢ Simulation of Google User Service

➢ Deployment➢ https://appengine.google.com➢ Application hosted at <app-id>.appspot.com or

Custom Domain

Page 14: Java Support On Google App Engine

Configuration➢ appengine-web.xml

➢ Application Name and Version➢ Logger➢ Static Files➢ Resource Files➢ System Properties & Environment Variables➢ SSL➢ Session➢ Inbound Services

Page 15: Java Support On Google App Engine

Data Manipulation➢ Underlying Storage is BigTable➢ JDO or JPA or DataStore API➢ JDO & JPA implemention by DataNucleus

Access Platform➢ jdoconfig.xml or persistence.xml➢ datastore-indexes.xml

Let's try with a simple scenario

Page 16: Java Support On Google App Engine

Data Manipulation Constraints➢ Max 1000 rows per request➢ Not Allowed while Using JPA

➢ Owned Many-to-many relations➢ Join, group by, having...

➢ Only JOINED and MAPPED_SUPERCLASS during Inheritance

➢ Restrictions on Queries

Page 17: Java Support On Google App Engine

RDBMS vs DataStoreRDBMS DATASTORE

DataBase DataStoreTable KindRow EntityRow ID KeyColumn Property

JPA JDO@Entity @PersistanceCapa

ble@Id @PrimaryKey@GeneratedValue

@Persistent

find(...) getObjectById(...)

Page 18: Java Support On Google App Engine

Other Google Services➢ URL Fetch➢ Memcache➢ User Service➢ Mail➢ Image➢ XMPP

Page 19: Java Support On Google App Engine

Additional Services➢ Cron

➢ AOP Like Interface

➢ Task Queues

Page 20: Java Support On Google App Engine

Managing & Monitoring➢ Dashboard

➢ Reporting

➢ Manage different versions

➢ Logs

Page 21: Java Support On Google App Engine

Developer's Toolkit➢ IDE Plugins➢ Ant supported, Maven on the way➢ Testing Facilities➢ XML Validation

Page 22: Java Support On Google App Engine

Quotas & Billing➢ Billable Quotas & Fixed Quotas➢ Per-minute Quotas➢ Resources

➢ Requests➢ CPU➢ Bandwidth (In/Out)➢ Google Services

Page 23: Java Support On Google App Engine

Current Pricing➢ Very Generous ➢ CPU : 6.5 hours / day, $0.10 / hour later➢ Bandwidth In/Out : 1 GB / day, $0.10/$0.12

GB later➢ Stored Data : 1 GB➢ Emails : 2000/day

Page 24: Java Support On Google App Engine

How to Manage / Monitor Costs➢ QuotaService

➢ Profiling Tool

➢ Application behaviour when Resources are

finished

➢ AdminConsole

Page 25: Java Support On Google App Engine

Constraints➢ Restricted JVM

➢ Threads➢ File System Writes➢ ClassLoader, JNI,...

➢ Read Only File System➢ DataStore : Only choice for persistence➢ Requests limited to max 30 seconds

Page 26: Java Support On Google App Engine

Limitations➢ No Server Push

➢ Request & Response Size Max 10 MB

➢ Max Files < 3000

➢ Max Size of Application Files < 150 MB

Page 27: Java Support On Google App Engine

Supported Languages & Frameworks

➢ Groovy & Grails ➢ JRuby on Rails (with some build and config modifications)

➢ Scala & Lift (no Scala Actors)

➢ Wicket➢ Blaze-DS➢ Struts,...

Page 28: Java Support On Google App Engine

Powered By Google App Engine

Page 29: Java Support On Google App Engine

Competitors➢ SaaS / PaaS / IaaS

➢ Azure Sevices

➢ Force.com

➢ Amazon Web Service

Page 30: Java Support On Google App Engine
Page 31: Java Support On Google App Engine

References & Credits➢ Of-course Google

(http://code.google.com/appengine/)

➢ Google IO 2009 Sessions

➢ Dzone RefCardz