SlideShare a Scribd company logo
Java Applications on Google App Engine




Narinder Kumar
www.xebiaindia.com
Easy to build, easy to maintain,
         easy to scale
Current Web Application LifeCycle
         Management
➢   Prepare
➢   Deploy
➢   Scale
➢   Maintain / Monitor
➢   Upgrade

    Difficult and Expensive
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
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
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
Architecture
Typical Application Building Blocks
      Industry Standard APIs : JPA/JDO, JCache,JavaMail



                Google Specific API Interfaces




                    Google Infrastructure
Platform
➢   JVM 5 or later
➢   Servlet 2.5 Container, Jetty & Jasper (can
    change)
    ➢   HTTP Session
    ➢   JSP
➢   SandBox Environment
➢   Google Services API
Getting Started
➢   Google Account & Mobile Phone

➢   Download and install SDK

➢   Plugin for your IDE / Command Line
DEMO OF HELLO-WORLD
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
Configuration
➢   appengine-web.xml
    ➢   Application Name and Version
    ➢   Logger
    ➢   Static Files
    ➢   Resource Files
    ➢   System Properties & Environment Variables
    ➢   SSL
    ➢   Session
    ➢   Inbound Services
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
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
RDBMS vs DataStore
 RDBMS     DATASTORE           JPA            JDO
DataBase   DataStore   @Entity         @PersistanceCapa
Table      Kind                        ble
Row        Entity      @Id             @PrimaryKey
Row ID     Key         @GeneratedVal   @Persistent
Column     Property    ue
                       find(...)       getObjectById(...)
Other Google Services
➢   URL Fetch
➢   Memcache
➢   User Service
➢   Mail
➢   Image
➢   XMPP
Additional Services
➢   Cron

➢   AOP Like Interface

➢   Task Queues
Managing & Monitoring
➢   Dashboard

➢   Reporting

➢   Manage different versions

➢   Logs
Developer's Toolkit
➢   IDE Plugins
➢   Ant supported, Maven on the way
➢   Testing Facilities
➢   XML Validation
Quotas & Billing
➢   Billable Quotas & Fixed Quotas
➢   Per-minute Quotas
➢   Resources
    ➢   Requests
    ➢   CPU
    ➢   Bandwidth (In/Out)
    ➢   Google Services
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
How to Manage / Monitor Costs
➢   QuotaService
➢   Profiling Tool
➢   Application behaviour when Resources are
    finished
➢   AdminConsole
Constraints
➢   Restricted JVM
    ➢   Threads
    ➢   File System Writes
    ➢   ClassLoader, JNI,...
➢   Read Only File System
➢   DataStore : Only choice for persistence
➢   Requests limited to max 30 seconds
Limitations
➢   No Server Push
➢   Request & Response Size Max 10 MB
➢   Max Files < 3000
➢   Max Size of Application Files < 150 MB
Supported Languages &
               Frameworks
➢   Groovy & Grails
➢   JRuby on Rails (with some build and config modifications)
➢   Scala & Lift (no Scala Actors)
➢   Wicket
➢   Blaze-DS
➢   Struts,...
Powered By Google App Engine
Competitors
➢   SaaS / PaaS / IaaS

➢   Azure Sevices

➢   Force.com

➢   Amazon Web Service
Developing, deploying and monitoring Java applications using Google App Engine
References & Credits
➢   Of-course Google
    (http://code.google.com/appengine/)

➢   Google IO 2009 Sessions

➢   Dzone RefCardz

More Related Content

What's hot (18)

Hosting huge amount of binaries in JCR
Hosting huge amount of binaries in JCR
Woonsan Ko
 
Web performance Talk
Web performance Talk
Prasoon Agrawal
 
Effectively Scale and Operate AEM with MongoDB by Norberto Leite
Effectively Scale and Operate AEM with MongoDB by Norberto Leite
AEM HUB
 
AEM WITH MONGODB
AEM WITH MONGODB
Nate Nelson
 
Building low latency java applications with ehcache
Building low latency java applications with ehcache
Chris Westin
 
Architecting for scalability in cf
Architecting for scalability in cf
Ted Steinmann
 
How to Use OWASP Security Logging
How to Use OWASP Security Logging
Milton Smith
 
Implementing High Performance Drupal Sites
Implementing High Performance Drupal Sites
Shri Kumar
 
jboss.org-jboss.com
jboss.org-jboss.com
Dimitris Andreadis
 
WordCamp RVA
WordCamp RVA
codearachnid_test
 
Best practices para publicar un WebSite con SharePoint Server 2010
Best practices para publicar un WebSite con SharePoint Server 2010
Juan Andrés Valenzuela
 
Fluent 2012 v2
Fluent 2012 v2
Shalendra Chhabra
 
Hidden gems in Apache Jackrabbit and BloomReach Forge
Hidden gems in Apache Jackrabbit and BloomReach Forge
Woonsan Ko
 
XPages Performance Master Class - Survive in the fast lane on the Autobahn (E...
XPages Performance Master Class - Survive in the fast lane on the Autobahn (E...
BCC - Solutions for IBM Collaboration Software
 
Using NoSQL MongoDB with ColdFusion
Using NoSQL MongoDB with ColdFusion
indiver
 
JavaCro'14 - Using WildFly core to build high performance web server – Tomaž ...
JavaCro'14 - Using WildFly core to build high performance web server – Tomaž ...
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
 
Optimizing Your Frontend Performance
Optimizing Your Frontend Performance
Thomas Weinert
 
Dynamicly Scale Weblogic in the private Cloud clusters
Dynamicly Scale Weblogic in the private Cloud clusters
Getting value from IoT, Integration and Data Analytics
 
Hosting huge amount of binaries in JCR
Hosting huge amount of binaries in JCR
Woonsan Ko
 
Effectively Scale and Operate AEM with MongoDB by Norberto Leite
Effectively Scale and Operate AEM with MongoDB by Norberto Leite
AEM HUB
 
AEM WITH MONGODB
AEM WITH MONGODB
Nate Nelson
 
Building low latency java applications with ehcache
Building low latency java applications with ehcache
Chris Westin
 
Architecting for scalability in cf
Architecting for scalability in cf
Ted Steinmann
 
How to Use OWASP Security Logging
How to Use OWASP Security Logging
Milton Smith
 
Implementing High Performance Drupal Sites
Implementing High Performance Drupal Sites
Shri Kumar
 
Best practices para publicar un WebSite con SharePoint Server 2010
Best practices para publicar un WebSite con SharePoint Server 2010
Juan Andrés Valenzuela
 
Hidden gems in Apache Jackrabbit and BloomReach Forge
Hidden gems in Apache Jackrabbit and BloomReach Forge
Woonsan Ko
 
Using NoSQL MongoDB with ColdFusion
Using NoSQL MongoDB with ColdFusion
indiver
 
Optimizing Your Frontend Performance
Optimizing Your Frontend Performance
Thomas Weinert
 

Viewers also liked (7)

Membangun aplikasi java restful web service [bagian 2] menggunakan hibernate
Membangun aplikasi java restful web service [bagian 2] menggunakan hibernate
Eko Kurniawan Khannedy
 
Membangun aplikasi java restful web service menggunakan spring web mvc
Membangun aplikasi java restful web service menggunakan spring web mvc
Eko Kurniawan Khannedy
 
Java Tech Day 2009 - Developing Cloud Computing Applications With Java
Java Tech Day 2009 - Developing Cloud Computing Applications With Java
Shlomo Swidler
 
Deploying applications to Cloud with Google App Engine
Deploying applications to Cloud with Google App Engine
Alexander Zamkovyi
 
Java application monitoring with Dropwizard Metrics and graphite
Java application monitoring with Dropwizard Metrics and graphite
Roberto Franchini
 
How to Analyze Reports in Jmeter
How to Analyze Reports in Jmeter
Viviana Lesmes
 
Developing Java Web Applications In Google App Engine
Developing Java Web Applications In Google App Engine
Tahir Akram
 
Membangun aplikasi java restful web service [bagian 2] menggunakan hibernate
Membangun aplikasi java restful web service [bagian 2] menggunakan hibernate
Eko Kurniawan Khannedy
 
Membangun aplikasi java restful web service menggunakan spring web mvc
Membangun aplikasi java restful web service menggunakan spring web mvc
Eko Kurniawan Khannedy
 
Java Tech Day 2009 - Developing Cloud Computing Applications With Java
Java Tech Day 2009 - Developing Cloud Computing Applications With Java
Shlomo Swidler
 
Deploying applications to Cloud with Google App Engine
Deploying applications to Cloud with Google App Engine
Alexander Zamkovyi
 
Java application monitoring with Dropwizard Metrics and graphite
Java application monitoring with Dropwizard Metrics and graphite
Roberto Franchini
 
How to Analyze Reports in Jmeter
How to Analyze Reports in Jmeter
Viviana Lesmes
 
Developing Java Web Applications In Google App Engine
Developing Java Web Applications In Google App Engine
Tahir Akram
 
Ad

Similar to Developing, deploying and monitoring Java applications using Google App Engine (20)

Google Developer Days Brazil 2009 - Java Appengine
Google Developer Days Brazil 2009 - Java Appengine
Patrick Chanezon
 
Google App Engine for Java
Google App Engine for Java
Lars Vogel
 
Google appenginejava.ppt
Google appenginejava.ppt
Young Alista
 
Google App Engine for Java v0.0.2
Google App Engine for Java v0.0.2
Matthew McCullough
 
Google App Engine for Java
Google App Engine for Java
Lars Vogel
 
Introduction to Google's Cloud Technologies
Introduction to Google's Cloud Technologies
Chris Schalk
 
Java Web Programming on Google Cloud Platform [1/3] : Google App Engine
Java Web Programming on Google Cloud Platform [1/3] : Google App Engine
IMC Institute
 
Google App Engine
Google App Engine
Software Park Thailand
 
Google Cloud Platform
Google Cloud Platform
Francesco Marchitelli
 
Javaedge 2010-cschalk
Javaedge 2010-cschalk
Chris Schalk
 
Google App Engine - Java Style
Google App Engine - Java Style
Peter Lind
 
Google App Engine - September 17 2009
Google App Engine - September 17 2009
sullis
 
Google App Engine
Google App Engine
cloudcampnigeria
 
The 90-Day Startup with Google AppEngine for Java
The 90-Day Startup with Google AppEngine for Java
David Chandler
 
Cannibalising The Google App Engine
Cannibalising The Google App Engine
catherinewall
 
Appengine Nljug
Appengine Nljug
Paul Bakker
 
Google app-engine-cloudcamplagos2011
Google app-engine-cloudcamplagos2011
Opevel
 
Google app engine
Google app engine
Renjith318
 
Introduction to Google Cloud Platform Technologies
Introduction to Google Cloud Platform Technologies
Chris Schalk
 
Google App Engine With Java And Groovy
Google App Engine With Java And Groovy
Ken Kousen
 
Google Developer Days Brazil 2009 - Java Appengine
Google Developer Days Brazil 2009 - Java Appengine
Patrick Chanezon
 
Google App Engine for Java
Google App Engine for Java
Lars Vogel
 
Google appenginejava.ppt
Google appenginejava.ppt
Young Alista
 
Google App Engine for Java v0.0.2
Google App Engine for Java v0.0.2
Matthew McCullough
 
Google App Engine for Java
Google App Engine for Java
Lars Vogel
 
Introduction to Google's Cloud Technologies
Introduction to Google's Cloud Technologies
Chris Schalk
 
Java Web Programming on Google Cloud Platform [1/3] : Google App Engine
Java Web Programming on Google Cloud Platform [1/3] : Google App Engine
IMC Institute
 
Javaedge 2010-cschalk
Javaedge 2010-cschalk
Chris Schalk
 
Google App Engine - Java Style
Google App Engine - Java Style
Peter Lind
 
Google App Engine - September 17 2009
Google App Engine - September 17 2009
sullis
 
The 90-Day Startup with Google AppEngine for Java
The 90-Day Startup with Google AppEngine for Java
David Chandler
 
Cannibalising The Google App Engine
Cannibalising The Google App Engine
catherinewall
 
Google app-engine-cloudcamplagos2011
Google app-engine-cloudcamplagos2011
Opevel
 
Google app engine
Google app engine
Renjith318
 
Introduction to Google Cloud Platform Technologies
Introduction to Google Cloud Platform Technologies
Chris Schalk
 
Google App Engine With Java And Groovy
Google App Engine With Java And Groovy
Ken Kousen
 
Ad

More from IndicThreads (20)

Http2 is here! And why the web needs it
Http2 is here! And why the web needs it
IndicThreads
 
Understanding Bitcoin (Blockchain) and its Potential for Disruptive Applications
Understanding Bitcoin (Blockchain) and its Potential for Disruptive Applications
IndicThreads
 
Go Programming Language - Learning The Go Lang way
Go Programming Language - Learning The Go Lang way
IndicThreads
 
Building Resilient Microservices
Building Resilient Microservices
IndicThreads
 
App using golang indicthreads
App using golang indicthreads
IndicThreads
 
Building on quicksand microservices indicthreads
Building on quicksand microservices indicthreads
IndicThreads
 
How to Think in RxJava Before Reacting
How to Think in RxJava Before Reacting
IndicThreads
 
Iot secure connected devices indicthreads
Iot secure connected devices indicthreads
IndicThreads
 
Real world IoT for enterprises
Real world IoT for enterprises
IndicThreads
 
IoT testing and quality assurance indicthreads
IoT testing and quality assurance indicthreads
IndicThreads
 
Functional Programming Past Present Future
Functional Programming Past Present Future
IndicThreads
 
Harnessing the Power of Java 8 Streams
Harnessing the Power of Java 8 Streams
IndicThreads
 
Building & scaling a live streaming mobile platform - Gr8 road to fame
Building & scaling a live streaming mobile platform - Gr8 road to fame
IndicThreads
 
Internet of things architecture perspective - IndicThreads Conference
Internet of things architecture perspective - IndicThreads Conference
IndicThreads
 
Cars and Computers: Building a Java Carputer
Cars and Computers: Building a Java Carputer
IndicThreads
 
Scrap Your MapReduce - Apache Spark
Scrap Your MapReduce - Apache Spark
IndicThreads
 
Continuous Integration (CI) and Continuous Delivery (CD) using Jenkins & Docker
Continuous Integration (CI) and Continuous Delivery (CD) using Jenkins & Docker
IndicThreads
 
Speed up your build pipeline for faster feedback
Speed up your build pipeline for faster feedback
IndicThreads
 
Unraveling OpenStack Clouds
Unraveling OpenStack Clouds
IndicThreads
 
Digital Transformation of the Enterprise. What IT leaders need to know!
Digital Transformation of the Enterprise. What IT leaders need to know!
IndicThreads
 
Http2 is here! And why the web needs it
Http2 is here! And why the web needs it
IndicThreads
 
Understanding Bitcoin (Blockchain) and its Potential for Disruptive Applications
Understanding Bitcoin (Blockchain) and its Potential for Disruptive Applications
IndicThreads
 
Go Programming Language - Learning The Go Lang way
Go Programming Language - Learning The Go Lang way
IndicThreads
 
Building Resilient Microservices
Building Resilient Microservices
IndicThreads
 
App using golang indicthreads
App using golang indicthreads
IndicThreads
 
Building on quicksand microservices indicthreads
Building on quicksand microservices indicthreads
IndicThreads
 
How to Think in RxJava Before Reacting
How to Think in RxJava Before Reacting
IndicThreads
 
Iot secure connected devices indicthreads
Iot secure connected devices indicthreads
IndicThreads
 
Real world IoT for enterprises
Real world IoT for enterprises
IndicThreads
 
IoT testing and quality assurance indicthreads
IoT testing and quality assurance indicthreads
IndicThreads
 
Functional Programming Past Present Future
Functional Programming Past Present Future
IndicThreads
 
Harnessing the Power of Java 8 Streams
Harnessing the Power of Java 8 Streams
IndicThreads
 
Building & scaling a live streaming mobile platform - Gr8 road to fame
Building & scaling a live streaming mobile platform - Gr8 road to fame
IndicThreads
 
Internet of things architecture perspective - IndicThreads Conference
Internet of things architecture perspective - IndicThreads Conference
IndicThreads
 
Cars and Computers: Building a Java Carputer
Cars and Computers: Building a Java Carputer
IndicThreads
 
Scrap Your MapReduce - Apache Spark
Scrap Your MapReduce - Apache Spark
IndicThreads
 
Continuous Integration (CI) and Continuous Delivery (CD) using Jenkins & Docker
Continuous Integration (CI) and Continuous Delivery (CD) using Jenkins & Docker
IndicThreads
 
Speed up your build pipeline for faster feedback
Speed up your build pipeline for faster feedback
IndicThreads
 
Unraveling OpenStack Clouds
Unraveling OpenStack Clouds
IndicThreads
 
Digital Transformation of the Enterprise. What IT leaders need to know!
Digital Transformation of the Enterprise. What IT leaders need to know!
IndicThreads
 

Recently uploaded (20)

June Patch Tuesday
June Patch Tuesday
Ivanti
 
Artificial Intelligence in the Nonprofit Boardroom.pdf
Artificial Intelligence in the Nonprofit Boardroom.pdf
OnBoard
 
FIDO Seminar: Perspectives on Passkeys & Consumer Adoption.pptx
FIDO Seminar: Perspectives on Passkeys & Consumer Adoption.pptx
FIDO Alliance
 
“Why It’s Critical to Have an Integrated Development Methodology for Edge AI,...
“Why It’s Critical to Have an Integrated Development Methodology for Edge AI,...
Edge AI and Vision Alliance
 
Integration of Utility Data into 3D BIM Models Using a 3D Solids Modeling Wor...
Integration of Utility Data into 3D BIM Models Using a 3D Solids Modeling Wor...
Safe Software
 
Mastering AI Workflows with FME - Peak of Data & AI 2025
Mastering AI Workflows with FME - Peak of Data & AI 2025
Safe Software
 
Edge-banding-machines-edgeteq-s-200-en-.pdf
Edge-banding-machines-edgeteq-s-200-en-.pdf
AmirStern2
 
PyData - Graph Theory for Multi-Agent Integration
PyData - Graph Theory for Multi-Agent Integration
barqawicloud
 
MuleSoft for AgentForce : Topic Center and API Catalog
MuleSoft for AgentForce : Topic Center and API Catalog
shyamraj55
 
Bridging the divide: A conversation on tariffs today in the book industry - T...
Bridging the divide: A conversation on tariffs today in the book industry - T...
BookNet Canada
 
Providing an OGC API Processes REST Interface for FME Flow
Providing an OGC API Processes REST Interface for FME Flow
Safe Software
 
Down the Rabbit Hole – Solving 5 Training Roadblocks
Down the Rabbit Hole – Solving 5 Training Roadblocks
Rustici Software
 
FIDO Seminar: Authentication for a Billion Consumers - Amazon.pptx
FIDO Seminar: Authentication for a Billion Consumers - Amazon.pptx
FIDO Alliance
 
TrustArc Webinar - 2025 Global Privacy Survey
TrustArc Webinar - 2025 Global Privacy Survey
TrustArc
 
vertical-cnc-processing-centers-drillteq-v-200-en.pdf
vertical-cnc-processing-centers-drillteq-v-200-en.pdf
AmirStern2
 
Scaling GenAI Inference From Prototype to Production: Real-World Lessons in S...
Scaling GenAI Inference From Prototype to Production: Real-World Lessons in S...
Anish Kumar
 
National Fuels Treatments Initiative: Building a Seamless Map of Hazardous Fu...
National Fuels Treatments Initiative: Building a Seamless Map of Hazardous Fu...
Safe Software
 
Kubernetes Security Act Now Before It’s Too Late
Kubernetes Security Act Now Before It’s Too Late
Michael Furman
 
War_And_Cyber_3_Years_Of_Struggle_And_Lessons_For_Global_Security.pdf
War_And_Cyber_3_Years_Of_Struggle_And_Lessons_For_Global_Security.pdf
biswajitbanerjee38
 
FME for Good: Integrating Multiple Data Sources with APIs to Support Local Ch...
FME for Good: Integrating Multiple Data Sources with APIs to Support Local Ch...
Safe Software
 
June Patch Tuesday
June Patch Tuesday
Ivanti
 
Artificial Intelligence in the Nonprofit Boardroom.pdf
Artificial Intelligence in the Nonprofit Boardroom.pdf
OnBoard
 
FIDO Seminar: Perspectives on Passkeys & Consumer Adoption.pptx
FIDO Seminar: Perspectives on Passkeys & Consumer Adoption.pptx
FIDO Alliance
 
“Why It’s Critical to Have an Integrated Development Methodology for Edge AI,...
“Why It’s Critical to Have an Integrated Development Methodology for Edge AI,...
Edge AI and Vision Alliance
 
Integration of Utility Data into 3D BIM Models Using a 3D Solids Modeling Wor...
Integration of Utility Data into 3D BIM Models Using a 3D Solids Modeling Wor...
Safe Software
 
Mastering AI Workflows with FME - Peak of Data & AI 2025
Mastering AI Workflows with FME - Peak of Data & AI 2025
Safe Software
 
Edge-banding-machines-edgeteq-s-200-en-.pdf
Edge-banding-machines-edgeteq-s-200-en-.pdf
AmirStern2
 
PyData - Graph Theory for Multi-Agent Integration
PyData - Graph Theory for Multi-Agent Integration
barqawicloud
 
MuleSoft for AgentForce : Topic Center and API Catalog
MuleSoft for AgentForce : Topic Center and API Catalog
shyamraj55
 
Bridging the divide: A conversation on tariffs today in the book industry - T...
Bridging the divide: A conversation on tariffs today in the book industry - T...
BookNet Canada
 
Providing an OGC API Processes REST Interface for FME Flow
Providing an OGC API Processes REST Interface for FME Flow
Safe Software
 
Down the Rabbit Hole – Solving 5 Training Roadblocks
Down the Rabbit Hole – Solving 5 Training Roadblocks
Rustici Software
 
FIDO Seminar: Authentication for a Billion Consumers - Amazon.pptx
FIDO Seminar: Authentication for a Billion Consumers - Amazon.pptx
FIDO Alliance
 
TrustArc Webinar - 2025 Global Privacy Survey
TrustArc Webinar - 2025 Global Privacy Survey
TrustArc
 
vertical-cnc-processing-centers-drillteq-v-200-en.pdf
vertical-cnc-processing-centers-drillteq-v-200-en.pdf
AmirStern2
 
Scaling GenAI Inference From Prototype to Production: Real-World Lessons in S...
Scaling GenAI Inference From Prototype to Production: Real-World Lessons in S...
Anish Kumar
 
National Fuels Treatments Initiative: Building a Seamless Map of Hazardous Fu...
National Fuels Treatments Initiative: Building a Seamless Map of Hazardous Fu...
Safe Software
 
Kubernetes Security Act Now Before It’s Too Late
Kubernetes Security Act Now Before It’s Too Late
Michael Furman
 
War_And_Cyber_3_Years_Of_Struggle_And_Lessons_For_Global_Security.pdf
War_And_Cyber_3_Years_Of_Struggle_And_Lessons_For_Global_Security.pdf
biswajitbanerjee38
 
FME for Good: Integrating Multiple Data Sources with APIs to Support Local Ch...
FME for Good: Integrating Multiple Data Sources with APIs to Support Local Ch...
Safe Software
 

Developing, deploying and monitoring Java applications using Google App Engine

  • 1. Java Applications on Google App Engine Narinder Kumar www.xebiaindia.com
  • 2. Easy to build, easy to maintain, easy to scale
  • 3. Current Web Application LifeCycle Management ➢ Prepare ➢ Deploy ➢ Scale ➢ Maintain / Monitor ➢ Upgrade Difficult and Expensive
  • 5. 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
  • 6. 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
  • 7. 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
  • 9. Typical Application Building Blocks Industry Standard APIs : JPA/JDO, JCache,JavaMail Google Specific API Interfaces Google Infrastructure
  • 10. Platform ➢ JVM 5 or later ➢ Servlet 2.5 Container, Jetty & Jasper (can change) ➢ HTTP Session ➢ JSP ➢ SandBox Environment ➢ Google Services API
  • 11. Getting Started ➢ Google Account & Mobile Phone ➢ Download and install SDK ➢ Plugin for your IDE / Command Line
  • 13. 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
  • 14. Configuration ➢ appengine-web.xml ➢ Application Name and Version ➢ Logger ➢ Static Files ➢ Resource Files ➢ System Properties & Environment Variables ➢ SSL ➢ Session ➢ Inbound Services
  • 15. 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
  • 16. 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
  • 17. RDBMS vs DataStore RDBMS DATASTORE JPA JDO DataBase DataStore @Entity @PersistanceCapa Table Kind ble Row Entity @Id @PrimaryKey Row ID Key @GeneratedVal @Persistent Column Property ue find(...) getObjectById(...)
  • 18. Other Google Services ➢ URL Fetch ➢ Memcache ➢ User Service ➢ Mail ➢ Image ➢ XMPP
  • 19. Additional Services ➢ Cron ➢ AOP Like Interface ➢ Task Queues
  • 20. Managing & Monitoring ➢ Dashboard ➢ Reporting ➢ Manage different versions ➢ Logs
  • 21. Developer's Toolkit ➢ IDE Plugins ➢ Ant supported, Maven on the way ➢ Testing Facilities ➢ XML Validation
  • 22. Quotas & Billing ➢ Billable Quotas & Fixed Quotas ➢ Per-minute Quotas ➢ Resources ➢ Requests ➢ CPU ➢ Bandwidth (In/Out) ➢ Google Services
  • 23. 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
  • 24. How to Manage / Monitor Costs ➢ QuotaService ➢ Profiling Tool ➢ Application behaviour when Resources are finished ➢ AdminConsole
  • 25. Constraints ➢ Restricted JVM ➢ Threads ➢ File System Writes ➢ ClassLoader, JNI,... ➢ Read Only File System ➢ DataStore : Only choice for persistence ➢ Requests limited to max 30 seconds
  • 26. Limitations ➢ No Server Push ➢ Request & Response Size Max 10 MB ➢ Max Files < 3000 ➢ Max Size of Application Files < 150 MB
  • 27. Supported Languages & Frameworks ➢ Groovy & Grails ➢ JRuby on Rails (with some build and config modifications) ➢ Scala & Lift (no Scala Actors) ➢ Wicket ➢ Blaze-DS ➢ Struts,...
  • 28. Powered By Google App Engine
  • 29. Competitors ➢ SaaS / PaaS / IaaS ➢ Azure Sevices ➢ Force.com ➢ Amazon Web Service
  • 31. References & Credits ➢ Of-course Google (http://code.google.com/appengine/) ➢ Google IO 2009 Sessions ➢ Dzone RefCardz