SlideShare une entreprise Scribd logo
1  sur  31
Télécharger pour lire hors ligne
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
References & Credits
➢   Of-course Google
    (http://code.google.com/appengine/)

➢   Google IO 2009 Sessions

➢   Dzone RefCardz

Contenu connexe

Tendances

Optimizing Your Frontend Performance
Optimizing Your Frontend PerformanceOptimizing Your Frontend Performance
Optimizing Your Frontend Performance
Thomas Weinert
 

Tendances (18)

Hosting huge amount of binaries in JCR
Hosting huge amount of binaries in JCRHosting huge amount of binaries in JCR
Hosting huge amount of binaries in JCR
 
Web performance Talk
Web performance TalkWeb performance Talk
Web performance Talk
 
Effectively Scale and Operate AEM with MongoDB by Norberto Leite
Effectively Scale and Operate AEM with MongoDB by Norberto LeiteEffectively Scale and Operate AEM with MongoDB by Norberto Leite
Effectively Scale and Operate AEM with MongoDB by Norberto Leite
 
AEM WITH MONGODB
AEM WITH MONGODBAEM WITH MONGODB
AEM WITH MONGODB
 
Building low latency java applications with ehcache
Building low latency java applications with ehcacheBuilding low latency java applications with ehcache
Building low latency java applications with ehcache
 
Architecting for scalability in cf
Architecting for scalability in cfArchitecting for scalability in cf
Architecting for scalability in cf
 
How to Use OWASP Security Logging
How to Use OWASP Security LoggingHow to Use OWASP Security Logging
How to Use OWASP Security Logging
 
Implementing High Performance Drupal Sites
Implementing High Performance Drupal SitesImplementing High Performance Drupal Sites
Implementing High Performance Drupal Sites
 
jboss.org-jboss.com
jboss.org-jboss.comjboss.org-jboss.com
jboss.org-jboss.com
 
WordCamp RVA
WordCamp RVAWordCamp RVA
WordCamp RVA
 
Best practices para publicar un WebSite con SharePoint Server 2010
Best practices para publicar un WebSite con SharePoint Server 2010Best practices para publicar un WebSite con SharePoint Server 2010
Best practices para publicar un WebSite con SharePoint Server 2010
 
Fluent 2012 v2
Fluent 2012   v2Fluent 2012   v2
Fluent 2012 v2
 
Hidden gems in Apache Jackrabbit and BloomReach Forge
Hidden gems in Apache Jackrabbit and BloomReach ForgeHidden gems in Apache Jackrabbit and BloomReach Forge
Hidden gems in Apache Jackrabbit and BloomReach Forge
 
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...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...
 
Using NoSQL MongoDB with ColdFusion
Using NoSQL MongoDB with ColdFusionUsing NoSQL MongoDB with ColdFusion
Using NoSQL MongoDB with ColdFusion
 
JavaCro'14 - Using WildFly core to build high performance web server – Tomaž ...
JavaCro'14 - Using WildFly core to build high performance web server – Tomaž ...JavaCro'14 - Using WildFly core to build high performance web server – Tomaž ...
JavaCro'14 - Using WildFly core to build high performance web server – Tomaž ...
 
Optimizing Your Frontend Performance
Optimizing Your Frontend PerformanceOptimizing Your Frontend Performance
Optimizing Your Frontend Performance
 
Dynamicly Scale Weblogic in the private Cloud clusters
Dynamicly Scale Weblogic in the private Cloud clusters   Dynamicly Scale Weblogic in the private Cloud clusters
Dynamicly Scale Weblogic in the private Cloud clusters
 

En vedette

How to Analyze Reports in Jmeter
How to Analyze Reports in JmeterHow to Analyze Reports in Jmeter
How to Analyze Reports in Jmeter
Viviana Lesmes
 

En vedette (7)

Membangun aplikasi java restful web service [bagian 2] menggunakan hibernate
Membangun aplikasi java restful web service [bagian 2] menggunakan hibernateMembangun aplikasi java restful web service [bagian 2] menggunakan hibernate
Membangun aplikasi java restful web service [bagian 2] menggunakan hibernate
 
Membangun aplikasi java restful web service menggunakan spring web mvc
Membangun aplikasi java restful web service menggunakan spring web mvcMembangun aplikasi java restful web service menggunakan spring web mvc
Membangun aplikasi java restful web service menggunakan spring web mvc
 
Java Tech Day 2009 - Developing Cloud Computing Applications With Java
Java Tech Day 2009 - Developing Cloud Computing Applications With JavaJava Tech Day 2009 - Developing Cloud Computing Applications With Java
Java Tech Day 2009 - Developing Cloud Computing Applications With Java
 
Deploying applications to Cloud with Google App Engine
Deploying applications to Cloud with Google App EngineDeploying applications to Cloud with Google App Engine
Deploying applications to Cloud with Google App Engine
 
Java application monitoring with Dropwizard Metrics and graphite
Java application monitoring with Dropwizard Metrics and graphite Java application monitoring with Dropwizard Metrics and graphite
Java application monitoring with Dropwizard Metrics and graphite
 
How to Analyze Reports in Jmeter
How to Analyze Reports in JmeterHow to Analyze Reports in Jmeter
How to Analyze Reports in Jmeter
 
Developing Java Web Applications In Google App Engine
Developing Java Web Applications In Google App EngineDeveloping Java Web Applications In Google App Engine
Developing Java Web Applications In Google App Engine
 

Similaire à Developing, deploying and monitoring Java applications using Google App Engine

Cannibalising The Google App Engine
Cannibalising The  Google  App  EngineCannibalising The  Google  App  Engine
Cannibalising The Google App Engine
catherinewall
 
Infrastructure Considerations : Design : "webops"
Infrastructure Considerations : Design : "webops"Infrastructure Considerations : Design : "webops"
Infrastructure Considerations : Design : "webops"
Piyush Kumar
 
Cloud Best Practices
Cloud Best PracticesCloud Best Practices
Cloud Best Practices
Eric Bottard
 
GlassFish Server 3.1: Deploying your Java EE 6 Applications
GlassFish Server 3.1: Deploying your Java EE 6 ApplicationsGlassFish Server 3.1: Deploying your Java EE 6 Applications
GlassFish Server 3.1: Deploying your Java EE 6 Applications
Arun Gupta
 
Automating Software Development Life Cycle - A DevOps Approach
Automating Software Development Life Cycle - A DevOps ApproachAutomating Software Development Life Cycle - A DevOps Approach
Automating Software Development Life Cycle - A DevOps Approach
Akshaya Mahapatra
 
CTU June 2011 - Things that Every ASP.NET Developer Should Know
CTU June 2011 - Things that Every ASP.NET Developer Should KnowCTU June 2011 - Things that Every ASP.NET Developer Should Know
CTU June 2011 - Things that Every ASP.NET Developer Should Know
Spiffy
 

Similaire à Developing, deploying and monitoring Java applications using Google App Engine (20)

Cannibalising The Google App Engine
Cannibalising The  Google  App  EngineCannibalising The  Google  App  Engine
Cannibalising The Google App Engine
 
Top AWS DevOps course in Hyderabad
Top AWS DevOps course in HyderabadTop AWS DevOps course in Hyderabad
Top AWS DevOps course in Hyderabad
 
Infrastructure Considerations : Design : "webops"
Infrastructure Considerations : Design : "webops"Infrastructure Considerations : Design : "webops"
Infrastructure Considerations : Design : "webops"
 
Cloud Platforms for Java
Cloud Platforms for JavaCloud Platforms for Java
Cloud Platforms for Java
 
Cloudy in Indonesia: Java and Cloud
Cloudy in Indonesia: Java and CloudCloudy in Indonesia: Java and Cloud
Cloudy in Indonesia: Java and Cloud
 
Oracle WebLogic 12c New Multitenancy features
Oracle WebLogic 12c New Multitenancy featuresOracle WebLogic 12c New Multitenancy features
Oracle WebLogic 12c New Multitenancy features
 
Cloud Best Practices
Cloud Best PracticesCloud Best Practices
Cloud Best Practices
 
Modern Cloud-Native Jakarta EE Frameworks: tips, challenges, and trends.
Modern Cloud-Native Jakarta EE Frameworks: tips, challenges, and trends.Modern Cloud-Native Jakarta EE Frameworks: tips, challenges, and trends.
Modern Cloud-Native Jakarta EE Frameworks: tips, challenges, and trends.
 
GlassFish Server 3.1: Deploying your Java EE 6 Applications
GlassFish Server 3.1: Deploying your Java EE 6 ApplicationsGlassFish Server 3.1: Deploying your Java EE 6 Applications
GlassFish Server 3.1: Deploying your Java EE 6 Applications
 
GlassFish 3.1 at JCertif 2011
GlassFish 3.1 at JCertif 2011GlassFish 3.1 at JCertif 2011
GlassFish 3.1 at JCertif 2011
 
PaaS with Java
PaaS with JavaPaaS with Java
PaaS with Java
 
12-Step Program for Scaling Web Applications on PostgreSQL
12-Step Program for Scaling Web Applications on PostgreSQL12-Step Program for Scaling Web Applications on PostgreSQL
12-Step Program for Scaling Web Applications on PostgreSQL
 
Automating Software Development Life Cycle - A DevOps Approach
Automating Software Development Life Cycle - A DevOps ApproachAutomating Software Development Life Cycle - A DevOps Approach
Automating Software Development Life Cycle - A DevOps Approach
 
Application Architecture Trends
Application Architecture TrendsApplication Architecture Trends
Application Architecture Trends
 
Java EE 6 workshop at Dallas Tech Fest 2011
Java EE 6 workshop at Dallas Tech Fest 2011Java EE 6 workshop at Dallas Tech Fest 2011
Java EE 6 workshop at Dallas Tech Fest 2011
 
Deploying Java EE 6 Apps in a Cluster: GlassFish 3.1 at Dallas Tech Fest 2011
Deploying Java EE 6 Apps in a Cluster: GlassFish 3.1 at Dallas Tech Fest 2011Deploying Java EE 6 Apps in a Cluster: GlassFish 3.1 at Dallas Tech Fest 2011
Deploying Java EE 6 Apps in a Cluster: GlassFish 3.1 at Dallas Tech Fest 2011
 
Google App Engine
Google App EngineGoogle App Engine
Google App Engine
 
DevOpsDays Taipei 2019 - Mastering IaC the DevOps Way
DevOpsDays Taipei 2019 - Mastering IaC the DevOps WayDevOpsDays Taipei 2019 - Mastering IaC the DevOps Way
DevOpsDays Taipei 2019 - Mastering IaC the DevOps Way
 
CTU June 2011 - Things that Every ASP.NET Developer Should Know
CTU June 2011 - Things that Every ASP.NET Developer Should KnowCTU June 2011 - Things that Every ASP.NET Developer Should Know
CTU June 2011 - Things that Every ASP.NET Developer Should Know
 
How to deploy a Java application on Google App engine Flexible environment
How to deploy a Java application on Google App engine Flexible environmentHow to deploy a Java application on Google App engine Flexible environment
How to deploy a Java application on Google App engine Flexible environment
 

Plus de IndicThreads

Scrap Your MapReduce - Apache Spark
 Scrap Your MapReduce - Apache Spark 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 Continuous Integration (CI) and Continuous Delivery (CD) using Jenkins & Docker
Continuous Integration (CI) and Continuous Delivery (CD) using Jenkins & Docker
IndicThreads
 
Unraveling OpenStack Clouds
 Unraveling OpenStack Clouds Unraveling OpenStack Clouds
Unraveling OpenStack Clouds
IndicThreads
 

Plus de IndicThreads (20)

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

Dernier

Dernier (20)

Designing for Hardware Accessibility at Comcast
Designing for Hardware Accessibility at ComcastDesigning for Hardware Accessibility at Comcast
Designing for Hardware Accessibility at Comcast
 
Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)
Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)
Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)
 
Speed Wins: From Kafka to APIs in Minutes
Speed Wins: From Kafka to APIs in MinutesSpeed Wins: From Kafka to APIs in Minutes
Speed Wins: From Kafka to APIs in Minutes
 
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptxUnpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
 
Linux Foundation Edge _ Overview of FDO Software Components _ Randy at Intel.pdf
Linux Foundation Edge _ Overview of FDO Software Components _ Randy at Intel.pdfLinux Foundation Edge _ Overview of FDO Software Components _ Randy at Intel.pdf
Linux Foundation Edge _ Overview of FDO Software Components _ Randy at Intel.pdf
 
Enterprise Knowledge Graphs - Data Summit 2024
Enterprise Knowledge Graphs - Data Summit 2024Enterprise Knowledge Graphs - Data Summit 2024
Enterprise Knowledge Graphs - Data Summit 2024
 
The Metaverse: Are We There Yet?
The  Metaverse:    Are   We  There  Yet?The  Metaverse:    Are   We  There  Yet?
The Metaverse: Are We There Yet?
 
Simplified FDO Manufacturing Flow with TPMs _ Liam at Infineon.pdf
Simplified FDO Manufacturing Flow with TPMs _ Liam at Infineon.pdfSimplified FDO Manufacturing Flow with TPMs _ Liam at Infineon.pdf
Simplified FDO Manufacturing Flow with TPMs _ Liam at Infineon.pdf
 
Buy Epson EcoTank L3210 Colour Printer Online.pptx
Buy Epson EcoTank L3210 Colour Printer Online.pptxBuy Epson EcoTank L3210 Colour Printer Online.pptx
Buy Epson EcoTank L3210 Colour Printer Online.pptx
 
UiPath Test Automation using UiPath Test Suite series, part 2
UiPath Test Automation using UiPath Test Suite series, part 2UiPath Test Automation using UiPath Test Suite series, part 2
UiPath Test Automation using UiPath Test Suite series, part 2
 
Agentic RAG What it is its types applications and implementation.pdf
Agentic RAG What it is its types applications and implementation.pdfAgentic RAG What it is its types applications and implementation.pdf
Agentic RAG What it is its types applications and implementation.pdf
 
WSO2CONMay2024OpenSourceConferenceDebrief.pptx
WSO2CONMay2024OpenSourceConferenceDebrief.pptxWSO2CONMay2024OpenSourceConferenceDebrief.pptx
WSO2CONMay2024OpenSourceConferenceDebrief.pptx
 
Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...
Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...
Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...
 
What's New in Teams Calling, Meetings and Devices April 2024
What's New in Teams Calling, Meetings and Devices April 2024What's New in Teams Calling, Meetings and Devices April 2024
What's New in Teams Calling, Meetings and Devices April 2024
 
Where to Learn More About FDO _ Richard at FIDO Alliance.pdf
Where to Learn More About FDO _ Richard at FIDO Alliance.pdfWhere to Learn More About FDO _ Richard at FIDO Alliance.pdf
Where to Learn More About FDO _ Richard at FIDO Alliance.pdf
 
Custom Approval Process: A New Perspective, Pavel Hrbacek & Anindya Halder
Custom Approval Process: A New Perspective, Pavel Hrbacek & Anindya HalderCustom Approval Process: A New Perspective, Pavel Hrbacek & Anindya Halder
Custom Approval Process: A New Perspective, Pavel Hrbacek & Anindya Halder
 
Extensible Python: Robustness through Addition - PyCon 2024
Extensible Python: Robustness through Addition - PyCon 2024Extensible Python: Robustness through Addition - PyCon 2024
Extensible Python: Robustness through Addition - PyCon 2024
 
Free and Effective: Making Flows Publicly Accessible, Yumi Ibrahimzade
Free and Effective: Making Flows Publicly Accessible, Yumi IbrahimzadeFree and Effective: Making Flows Publicly Accessible, Yumi Ibrahimzade
Free and Effective: Making Flows Publicly Accessible, Yumi Ibrahimzade
 
ECS 2024 Teams Premium - Pretty Secure
ECS 2024   Teams Premium - Pretty SecureECS 2024   Teams Premium - Pretty Secure
ECS 2024 Teams Premium - Pretty Secure
 
IoT Analytics Company Presentation May 2024
IoT Analytics Company Presentation May 2024IoT Analytics Company Presentation May 2024
IoT Analytics Company Presentation May 2024
 

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
  • 30.
  • 31. References & Credits ➢ Of-course Google (http://code.google.com/appengine/) ➢ Google IO 2009 Sessions ➢ Dzone RefCardz