SlideShare une entreprise Scribd logo
1  sur  33
Télécharger pour lire hors ligne
Introduction into Google App Engine

Halil-Cem Gürsoy
adesso AG


Tw @hgutwit
G+ http://goo.gl/hljRS




21.11.11
The speaker


►   More then 12 years development in Java

►   Before getting a “consulting developer“ some years research
    (calculation of RNA folding with genetic algorithms using Pascal)

►   Senior Software Engineer at adesso AG, Dortmund

►   Speaker on some conferences: (W)-JAX, DOAG, HerbstCampus etc.

►   Mostly EAI/SOA projects... with plain good old Java / JEE

►   … and a bit Scala




21.11.11   2   CloudConf 2011 - GAE/J
Agenda


►   Google App Engine

►   Persistence in Google App Engine

►   Limits in GAE/J

►   Quota and Performance

►   Build-Tools

►   Hands-On




21.11.11   3   CloudConf 2011 - GAE/J
Agenda


►   Google App Engine

►   Persistence in Google App Engine

►   Limits in GAE/J

►   Quota and Performance

►   Build-Tools

►   Hands-On




21.11.11   4   CloudConf 2011 - GAE/J
The Google App Engine


►   A classic PaaS

►   No control over the OS

►   A runtime for Web Application

►   At the start, only Python was supported

►   Since 2009 Java, now Google Go
    > Java-Support is limited!




21.11.11   5   CloudConf 2011 - GAE/J
Talking about GAE/J


►   GAE/J = JRE6
    > A Sandbox with restrictions

►   Supports out of the box
    > Servlet API 2.4 (*)

    > JSF 1.1, 2.0 (*)

    > JSP (*)

    > JDO 2.3 (?!)

    > JPA 1(*)

►   Support for Google Services und API‘s


21.11.11   6    CloudConf 2011 - GAE/J
Agenda


►   Google App Engine

►   Persistence in Google App Engine

►   Limits in GAE/J

►   Quota and Performance

►   Build-Tools

►   Hands-On




21.11.11   7   CloudConf 2011 - GAE/J
Persistence in GEA


►   Default Store is a Key-Value NoSQL-DB (Google BigTable)

►   JDO and JPA supported… partially
    > ORM via DataNucleus v1.1

►   JDO is still better documented than JPA in the GAE/J documentation

►   You can use the low level API for Google BigTable

►   You can use in-memory Databases

►   Enhancement of Entity Classes needed (good to know for Build)

►   MySQL-Support is upcoming (now in Beta, chosen accounts)



21.11.11   8   CloudConf 2011 - GAE/J
GAE - JPA

►   Transactional behavior is configured in the persistence.xml

<persistence-unit name="transactions-optional">
    <provider>org.datanucleus.store.appegine.jpa.DatastorePersistenceProvider
    </provider>
    <properties>
           <property name="datanucleus.NontransactionalRead” value="true" />
           <property name="datanucleus.NontransactionalWrite” value="true" />
           <property name="datanucleus.ConnectionURL” value="appengine" />
    </properties>
</persistence-unit>




21.11.11    9    CloudConf 2011 - GAE/J
More on JPA


►   @ManyToMany is not supported

►   Join-Queries are not supported

►   You can not use
    > InheritanceType.SINGLE_TABLE

    > InheritanceType.JOINED

►   No support for aggregation queries
    > group by, having, sum, avg, min, max

►   No support for polymorphic queries




21.11.11   10   CloudConf 2011 - GAE/J
More to know about limits in JPA

►   Resultsets are not initialized, you have to do it!
    > resultSet.size();
►   Id Fields: don’t use long type
    > Unsupported primary key type: long
►   GenerationType.TABLE results in an error
    > javax.persistence.PersistenceEception: Transaction is still
           active.
►   Solution
    @Id
    GeneratedValue(strategy = GenerationType.IDENTITY)
    private com.google.appengine.api.datastore.Key key;




21.11.11      11   CloudConf 2011 - GAE/J
Agenda


►   Google App Engine

►   Persistence in Google App Engine

►   Limits in GAE/J

►   Quota and Performance

►   Build-Tools

►   Hands-On




21.11.11   12   CloudConf 2011 - GAE/J
Other Limits in GAE


►   The “JRE Whitelist” defines all supported JRE classes
    > http://code.google.com/intl/de-DE/appengine/docs/java/jrewhitelist.html

    > Only ~ 1500 classes

►   Your application should not
    > …start own threads (due to that, no Akka-Support if you use Scala)

    > …write files

    > …open network sockets




21.11.11   13   CloudConf 2011 - GAE/J
Will it play?


►   Overview about the support for frameworks and JVM languages:
    > http://code.google.com/p/googleappengine/wiki/WillItPlayInJava

►   No support for…
    > JAX-RPC
    > JDBC
    > JMS (!)
    > JNDI
    > …and much more!

►   A little bit support for JAX-WS, good support for REST

►   Scala, Groovy (look @ Gealky) etc. supported

►   Spring Core is supported

21.11.11   14   CloudConf 2011 - GAE/J
Spring support

►   Not all Spring Projects are supported - core is
►   Running: Spring MVC with Spring beans
►   Setup: JAR files into /WAR/WEB-INF/lib and add to Classpath
►   Example:
 <listener>
        <listener-class>
           org.springframework.web.context.ContextLoaderListener
       </listener-class>
 </listener>
 <servlet>
    <servlet-name>dispatcher</servlet-name>
        <servlet-class>
       org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
 </servlet>
 <servlet-mapping>
     <servlet-name>dispatcher</servlet-name>
     <url-pattern>/springgae/*</url-pattern>
 </servlet-mapping>



21.11.11   15   CloudConf 2011 - GAE/J
Why?




21.11.11   16   CloudConf 2011 - GAE/J
GAE and Android


►   Tight integration of GAE and Android via Android Cloud to Device
    Framework (C2DM)
    > http://code.google.com/android/c2dm/

►   C2DM enables Android Apps to use all GAE as the backend

►   ...e.g. use the GAE Data Store

►   ...e.g. send Mails from GAE

►   Example: Chrome to Phone-Extension and App
    > http://code.google.com/p/chrometophone/




21.11.11   17   CloudConf 2011 - GAE/J
More Reasons…


►   No one enforces you to use JPA or JDO on GAE!
    > Use the native Interface

    > You have a free, full distributed, NoSQL Key-Value DB!

►   Transparent scaling of your app
    > You have not to care about how many instances you have to start and

           then to start

    > GAE is not Beanstalk / CloudFoundry

    > In Beanstalk / CloudFoundry you have still to take care about LB and

           your infrastructure


21.11.11      18   CloudConf 2011 - GAE/J
Agenda


►   Google App Engine

►   Persistence in Google App Engine

►   Limits in GAE/J

►   Quota and Performance

►   Build-Tools

►   Hands-On




21.11.11   19   CloudConf 2011 - GAE/J
Quota

►   GAE with limits w/o fee
►   New Billing System to overcome limits
►   Quota exceeded: HTTP 403 Errors or Exceptions (bad if you not aware
    of quota)
►   Per minute quota = aprox. 500 Req./min.




21.11.11   20   CloudConf 2011 - GAE/J
Measured Performance




21.11.11   21   CloudConf 2011 - GAE/J
Agenda


►   Google App Engine

►   Persistence in Google App Engine

►   Limits in GAE/J

►   Quota and Performance

►   Build-Tools

►   Hands-On




21.11.11   22   CloudConf 2011 - GAE/J
Build-Tools


►   Ant is supported
    > Enhancement of entity classes

    > Deployment

►   Maven
    > Maven2 plug-in available (http://code.google.com/p/maven-gae-plugin/ )

    > Archetypes for JSP, GWT and Wicket-Projects

    > GAE SDK not available via Maven repositories anymore (?)




21.11.11   23   CloudConf 2011 - GAE/J
Agenda


►   Google App Engine

►   Persistence in Google App Engine

►   Limits in GAE/J

►   Quota and Performance

►   Build-Tools

►   Hands-On




21.11.11   24   CloudConf 2011 - GAE/J
Hands on?


►   Some slides to tell you that is needed

►   Ask me afterwards for a live demo

►   Get ready...




21.11.11   25   CloudConf 2011 - GAE/J
Getting started


►   Google App Engine Account activated?
    > You need your mobile number for activation

►   Eclipse with the Google Plug-in

►   Manual installation via Eclipse Market Place
    > http://marketplace.eclipse.org/content/google-plugin-eclipse

►   SDK with CLI and more resources at GAE-Homepage

       – http://code.google.com/appengine/




21.11.11   26   CloudConf 2011 - GAE/J
Create new project




21.11.11   27   CloudConf 2011 - GAE/J
Hello World




21.11.11   28   CloudConf 2011 - GAE/J
Test in the local sandbox

►   You can test your application in the local sandbox
►   http://localhost:8888/[your_project_name]




21.11.11   29   CloudConf 2011 - GAE/J
Create your cloud app


►   Register your application in your GAE account

►   https://appengine.google.com/ -> “Create Application”

►   Choose an Application Identifier and an Application Name (note them!)

►   Choose the Authentication Option
    > Default is “Open to all Google Account users”
    > User can sign in into your app using their Google Account

►   Choose Storage Option
    > High Replication (default) vs. Master/Slave
    > High Replication is “eventualy consistent” (latency in writes)




21.11.11   30   CloudConf 2011 - GAE/J
Deployment

►   Choose „Google – Deploy to App Engine“ from context menu
►   Provide your App Engine data




21.11.11   31   CloudConf 2011 - GAE/J
Calling now on the cloud


►   Call your Application now on the cloud!

►   [appid].appspot.com/[servletname] (Servletname = Projectname by
    default)

►   The servlet should greet you…

►   Check your Application-Dashboard

       – https://appengine.google.com/




21.11.11   32   CloudConf 2011 - GAE/J
Thank you for your attention!




info@adesso.de
www.adesso.de

Contenu connexe

Tendances

Avoiding the domino effect in our [micro]services (SOLID at macro-design level)
Avoiding the domino effect in our [micro]services (SOLID at macro-design level)Avoiding the domino effect in our [micro]services (SOLID at macro-design level)
Avoiding the domino effect in our [micro]services (SOLID at macro-design level)
CodelyTV
 
JWebPane presentation at JavaOne 2009
JWebPane presentation at JavaOne 2009JWebPane presentation at JavaOne 2009
JWebPane presentation at JavaOne 2009
Alexey Ushakov
 
Maven 2.0 - Project management and comprehension tool
Maven 2.0 - Project management and comprehension toolMaven 2.0 - Project management and comprehension tool
Maven 2.0 - Project management and comprehension tool
elliando dias
 

Tendances (12)

GWT training session 1
GWT training session 1GWT training session 1
GWT training session 1
 
Project Fuji/OpenESB Aquarium Paris
Project Fuji/OpenESB Aquarium ParisProject Fuji/OpenESB Aquarium Paris
Project Fuji/OpenESB Aquarium Paris
 
Magento 2 Development
Magento 2 DevelopmentMagento 2 Development
Magento 2 Development
 
Avoiding the domino effect in our [micro]services (SOLID at macro-design level)
Avoiding the domino effect in our [micro]services (SOLID at macro-design level)Avoiding the domino effect in our [micro]services (SOLID at macro-design level)
Avoiding the domino effect in our [micro]services (SOLID at macro-design level)
 
Microservices: Improving the autonomy of our teams with Event-Driven Architec...
Microservices: Improving the autonomy of our teams with Event-Driven Architec...Microservices: Improving the autonomy of our teams with Event-Driven Architec...
Microservices: Improving the autonomy of our teams with Event-Driven Architec...
 
Workshop: Building Vaadin add-ons
Workshop: Building Vaadin add-onsWorkshop: Building Vaadin add-ons
Workshop: Building Vaadin add-ons
 
Hackathon - Building vaadin add on components
Hackathon - Building vaadin add on componentsHackathon - Building vaadin add on components
Hackathon - Building vaadin add on components
 
The journey of mastering Magento 2 for Magento 1 developers
The journey of mastering Magento 2 for Magento 1 developersThe journey of mastering Magento 2 for Magento 1 developers
The journey of mastering Magento 2 for Magento 1 developers
 
Maven plugins, properties en profiles: Advanced concepts in Maven
Maven plugins, properties en profiles: Advanced concepts in MavenMaven plugins, properties en profiles: Advanced concepts in Maven
Maven plugins, properties en profiles: Advanced concepts in Maven
 
Highlights from Java 10, 11 and 12 and Future of Java at Javaland 2019 By Vad...
Highlights from Java 10, 11 and 12 and Future of Java at Javaland 2019 By Vad...Highlights from Java 10, 11 and 12 and Future of Java at Javaland 2019 By Vad...
Highlights from Java 10, 11 and 12 and Future of Java at Javaland 2019 By Vad...
 
JWebPane presentation at JavaOne 2009
JWebPane presentation at JavaOne 2009JWebPane presentation at JavaOne 2009
JWebPane presentation at JavaOne 2009
 
Maven 2.0 - Project management and comprehension tool
Maven 2.0 - Project management and comprehension toolMaven 2.0 - Project management and comprehension tool
Maven 2.0 - Project management and comprehension tool
 

En vedette

En vedette (7)

Innovation matters and so does how you measure it
Innovation matters and so does how you measure itInnovation matters and so does how you measure it
Innovation matters and so does how you measure it
 
A Business-Critical SharePoint Solution From adesso AG
A Business-CriticalSharePoint SolutionFrom adesso AGA Business-CriticalSharePoint SolutionFrom adesso AG
A Business-Critical SharePoint Solution From adesso AG
 
SNMP Applied - Sicheres Anwendungs-Monitoring mit SNMP (Kurzversion)
SNMP Applied - Sicheres Anwendungs-Monitoring mit SNMP (Kurzversion)SNMP Applied - Sicheres Anwendungs-Monitoring mit SNMP (Kurzversion)
SNMP Applied - Sicheres Anwendungs-Monitoring mit SNMP (Kurzversion)
 
Diabetes mellitus
Diabetes mellitusDiabetes mellitus
Diabetes mellitus
 
Neue EBusiness Perspektiven durch HTML5
Neue EBusiness Perspektiven durch HTML5Neue EBusiness Perspektiven durch HTML5
Neue EBusiness Perspektiven durch HTML5
 
Wozu Portlets – reichen HTML5 und Rest nicht aus für moderne Portale?
Wozu Portlets – reichen HTML5 und Rest nicht aus für moderne Portale?Wozu Portlets – reichen HTML5 und Rest nicht aus für moderne Portale?
Wozu Portlets – reichen HTML5 und Rest nicht aus für moderne Portale?
 
Scala 4 Enterprise
Scala 4 EnterpriseScala 4 Enterprise
Scala 4 Enterprise
 

Similaire à CloudConf2011 Introduction to Google App Engine

eXo Platform SEA - Play Framework Introduction
eXo Platform SEA - Play Framework IntroductioneXo Platform SEA - Play Framework Introduction
eXo Platform SEA - Play Framework Introduction
vstorm83
 
Andy Bosch - JavaServer Faces in the cloud
Andy Bosch -  JavaServer Faces in the cloudAndy Bosch -  JavaServer Faces in the cloud
Andy Bosch - JavaServer Faces in the cloud
Andy Bosch
 
SF JUG - GWT Can Help You Create Amazing Apps - 2009-10-13
SF JUG - GWT Can Help You Create Amazing Apps - 2009-10-13SF JUG - GWT Can Help You Create Amazing Apps - 2009-10-13
SF JUG - GWT Can Help You Create Amazing Apps - 2009-10-13
Fred Sauer
 
Continuous Web Performance Monitoring with Jenkins
Continuous Web Performance Monitoring with JenkinsContinuous Web Performance Monitoring with Jenkins
Continuous Web Performance Monitoring with Jenkins
Michael Kröll
 
Plugin for other browsers - webRTC Conference and Expo June 2014 @ atlanta
Plugin for other browsers - webRTC Conference and Expo June 2014 @ atlantaPlugin for other browsers - webRTC Conference and Expo June 2014 @ atlanta
Plugin for other browsers - webRTC Conference and Expo June 2014 @ atlanta
Alexandre Gouaillard
 

Similaire à CloudConf2011 Introduction to Google App Engine (20)

Spring Native and Spring AOT
Spring Native and Spring AOTSpring Native and Spring AOT
Spring Native and Spring AOT
 
Flutter vs Java Graphical User Interface Frameworks - text
Flutter vs Java Graphical User Interface Frameworks - textFlutter vs Java Graphical User Interface Frameworks - text
Flutter vs Java Graphical User Interface Frameworks - text
 
Getting Started: Google Glass Apps with GDK
Getting Started: Google Glass Apps with GDKGetting Started: Google Glass Apps with GDK
Getting Started: Google Glass Apps with GDK
 
HTML5 on the AGL demo platform with Chromium and WAM (AGL AMM March 2021)
HTML5 on the AGL demo platform with Chromium and WAM (AGL AMM March 2021)HTML5 on the AGL demo platform with Chromium and WAM (AGL AMM March 2021)
HTML5 on the AGL demo platform with Chromium and WAM (AGL AMM March 2021)
 
Ilog Ria2
Ilog Ria2Ilog Ria2
Ilog Ria2
 
eXo Platform SEA - Play Framework Introduction
eXo Platform SEA - Play Framework IntroductioneXo Platform SEA - Play Framework Introduction
eXo Platform SEA - Play Framework Introduction
 
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
 
Slim3 quick start
Slim3 quick startSlim3 quick start
Slim3 quick start
 
Andy Bosch - JavaServer Faces in the cloud
Andy Bosch -  JavaServer Faces in the cloudAndy Bosch -  JavaServer Faces in the cloud
Andy Bosch - JavaServer Faces in the cloud
 
Google Web Toolkit
Google Web ToolkitGoogle Web Toolkit
Google Web Toolkit
 
SF JUG - GWT Can Help You Create Amazing Apps - 2009-10-13
SF JUG - GWT Can Help You Create Amazing Apps - 2009-10-13SF JUG - GWT Can Help You Create Amazing Apps - 2009-10-13
SF JUG - GWT Can Help You Create Amazing Apps - 2009-10-13
 
CollabSphere 2021 - DEV114 - The Nuts and Bolts of CI/CD With a Large XPages ...
CollabSphere 2021 - DEV114 - The Nuts and Bolts of CI/CD With a Large XPages ...CollabSphere 2021 - DEV114 - The Nuts and Bolts of CI/CD With a Large XPages ...
CollabSphere 2021 - DEV114 - The Nuts and Bolts of CI/CD With a Large XPages ...
 
Grails beginners workshop
Grails beginners workshopGrails beginners workshop
Grails beginners workshop
 
GWT Training - Session 1/3
GWT Training - Session 1/3GWT Training - Session 1/3
GWT Training - Session 1/3
 
Java Web Programming on Google Cloud Platform [3/3] : Google Web Toolkit
Java Web Programming on Google Cloud Platform [3/3] : Google Web ToolkitJava Web Programming on Google Cloud Platform [3/3] : Google Web Toolkit
Java Web Programming on Google Cloud Platform [3/3] : Google Web Toolkit
 
Gain more freedom when migrating from Camunda 7 to 8.pdf
Gain more freedom when migrating from Camunda 7 to 8.pdfGain more freedom when migrating from Camunda 7 to 8.pdf
Gain more freedom when migrating from Camunda 7 to 8.pdf
 
Continuous Web Performance Monitoring with Jenkins
Continuous Web Performance Monitoring with JenkinsContinuous Web Performance Monitoring with Jenkins
Continuous Web Performance Monitoring with Jenkins
 
Gradle como alternativa a maven
Gradle como alternativa a mavenGradle como alternativa a maven
Gradle como alternativa a maven
 
Google Cloud Platform
Google Cloud Platform Google Cloud Platform
Google Cloud Platform
 
Plugin for other browsers - webRTC Conference and Expo June 2014 @ atlanta
Plugin for other browsers - webRTC Conference and Expo June 2014 @ atlantaPlugin for other browsers - webRTC Conference and Expo June 2014 @ atlanta
Plugin for other browsers - webRTC Conference and Expo June 2014 @ atlanta
 

Plus de adesso AG

Wartbare Web-Anwendungen mit Knockout.js und Model-View-ViewModel (MVVM)
Wartbare Web-Anwendungen mit Knockout.js und Model-View-ViewModel (MVVM)Wartbare Web-Anwendungen mit Knockout.js und Model-View-ViewModel (MVVM)
Wartbare Web-Anwendungen mit Knockout.js und Model-View-ViewModel (MVVM)
adesso AG
 
Bedarfsorientiertes Qualitätsmanagement im Projektalltag
Bedarfsorientiertes Qualitätsmanagement im ProjektalltagBedarfsorientiertes Qualitätsmanagement im Projektalltag
Bedarfsorientiertes Qualitätsmanagement im Projektalltag
adesso AG
 

Plus de adesso AG (20)

SNMP Applied - Sicheres Anwendungs-Monitoring mit SNMP
SNMP Applied - Sicheres Anwendungs-Monitoring mit SNMPSNMP Applied - Sicheres Anwendungs-Monitoring mit SNMP
SNMP Applied - Sicheres Anwendungs-Monitoring mit SNMP
 
Mythos High Performance Teams
Mythos High Performance TeamsMythos High Performance Teams
Mythos High Performance Teams
 
Was Sie über NoSQL Datenbanken wissen sollten!
Was Sie über NoSQL Datenbanken wissen sollten!Was Sie über NoSQL Datenbanken wissen sollten!
Was Sie über NoSQL Datenbanken wissen sollten!
 
Continuous Delivery praktisch
Continuous Delivery praktischContinuous Delivery praktisch
Continuous Delivery praktisch
 
Agilität, Snapshots und Continuous Delivery
Agilität, Snapshots und Continuous DeliveryAgilität, Snapshots und Continuous Delivery
Agilität, Snapshots und Continuous Delivery
 
Getriebene Anwendungslandschaften
Getriebene AnwendungslandschaftenGetriebene Anwendungslandschaften
Getriebene Anwendungslandschaften
 
Google App Engine JAX PaaS Parade 2013
Google App Engine JAX PaaS Parade 2013Google App Engine JAX PaaS Parade 2013
Google App Engine JAX PaaS Parade 2013
 
Wartbare Web-Anwendungen mit Knockout.js und Model-View-ViewModel (MVVM)
Wartbare Web-Anwendungen mit Knockout.js und Model-View-ViewModel (MVVM)Wartbare Web-Anwendungen mit Knockout.js und Model-View-ViewModel (MVVM)
Wartbare Web-Anwendungen mit Knockout.js und Model-View-ViewModel (MVVM)
 
OOP 2013 NoSQL Suche
OOP 2013 NoSQL SucheOOP 2013 NoSQL Suche
OOP 2013 NoSQL Suche
 
NoSQL in der Cloud - Why?
NoSQL in der Cloud -  Why?NoSQL in der Cloud -  Why?
NoSQL in der Cloud - Why?
 
Lean web architecture mit jsf 2.0, cdi & co.
Lean web architecture mit jsf 2.0, cdi & co.Lean web architecture mit jsf 2.0, cdi & co.
Lean web architecture mit jsf 2.0, cdi & co.
 
Schlanke Webarchitekturen nicht nur mit JSF 2 und CDI
Schlanke Webarchitekturen nicht nur mit JSF 2 und CDISchlanke Webarchitekturen nicht nur mit JSF 2 und CDI
Schlanke Webarchitekturen nicht nur mit JSF 2 und CDI
 
Zehn Hinweise für Architekten
Zehn Hinweise für ArchitektenZehn Hinweise für Architekten
Zehn Hinweise für Architekten
 
Agile Praktiken
Agile PraktikenAgile Praktiken
Agile Praktiken
 
Java und Cloud - nicht nur mit PaaS
Java und Cloud - nicht nur mit PaaS Java und Cloud - nicht nur mit PaaS
Java und Cloud - nicht nur mit PaaS
 
10 Hinweise für Architekten
10 Hinweise für Architekten10 Hinweise für Architekten
10 Hinweise für Architekten
 
HTML5 Storage
HTML5 StorageHTML5 Storage
HTML5 Storage
 
Google Dart
Google DartGoogle Dart
Google Dart
 
Java in the Cloud : PaaS Platforms in Comparison
Java in the Cloud : PaaS Platforms in ComparisonJava in the Cloud : PaaS Platforms in Comparison
Java in the Cloud : PaaS Platforms in Comparison
 
Bedarfsorientiertes Qualitätsmanagement im Projektalltag
Bedarfsorientiertes Qualitätsmanagement im ProjektalltagBedarfsorientiertes Qualitätsmanagement im Projektalltag
Bedarfsorientiertes Qualitätsmanagement im Projektalltag
 

Dernier

+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 

Dernier (20)

Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdf
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUKSpring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 

CloudConf2011 Introduction to Google App Engine

  • 1. Introduction into Google App Engine Halil-Cem Gürsoy adesso AG Tw @hgutwit G+ http://goo.gl/hljRS 21.11.11
  • 2. The speaker ► More then 12 years development in Java ► Before getting a “consulting developer“ some years research (calculation of RNA folding with genetic algorithms using Pascal) ► Senior Software Engineer at adesso AG, Dortmund ► Speaker on some conferences: (W)-JAX, DOAG, HerbstCampus etc. ► Mostly EAI/SOA projects... with plain good old Java / JEE ► … and a bit Scala 21.11.11 2 CloudConf 2011 - GAE/J
  • 3. Agenda ► Google App Engine ► Persistence in Google App Engine ► Limits in GAE/J ► Quota and Performance ► Build-Tools ► Hands-On 21.11.11 3 CloudConf 2011 - GAE/J
  • 4. Agenda ► Google App Engine ► Persistence in Google App Engine ► Limits in GAE/J ► Quota and Performance ► Build-Tools ► Hands-On 21.11.11 4 CloudConf 2011 - GAE/J
  • 5. The Google App Engine ► A classic PaaS ► No control over the OS ► A runtime for Web Application ► At the start, only Python was supported ► Since 2009 Java, now Google Go > Java-Support is limited! 21.11.11 5 CloudConf 2011 - GAE/J
  • 6. Talking about GAE/J ► GAE/J = JRE6 > A Sandbox with restrictions ► Supports out of the box > Servlet API 2.4 (*) > JSF 1.1, 2.0 (*) > JSP (*) > JDO 2.3 (?!) > JPA 1(*) ► Support for Google Services und API‘s 21.11.11 6 CloudConf 2011 - GAE/J
  • 7. Agenda ► Google App Engine ► Persistence in Google App Engine ► Limits in GAE/J ► Quota and Performance ► Build-Tools ► Hands-On 21.11.11 7 CloudConf 2011 - GAE/J
  • 8. Persistence in GEA ► Default Store is a Key-Value NoSQL-DB (Google BigTable) ► JDO and JPA supported… partially > ORM via DataNucleus v1.1 ► JDO is still better documented than JPA in the GAE/J documentation ► You can use the low level API for Google BigTable ► You can use in-memory Databases ► Enhancement of Entity Classes needed (good to know for Build) ► MySQL-Support is upcoming (now in Beta, chosen accounts) 21.11.11 8 CloudConf 2011 - GAE/J
  • 9. GAE - JPA ► Transactional behavior is configured in the persistence.xml <persistence-unit name="transactions-optional"> <provider>org.datanucleus.store.appegine.jpa.DatastorePersistenceProvider </provider> <properties> <property name="datanucleus.NontransactionalRead” value="true" /> <property name="datanucleus.NontransactionalWrite” value="true" /> <property name="datanucleus.ConnectionURL” value="appengine" /> </properties> </persistence-unit> 21.11.11 9 CloudConf 2011 - GAE/J
  • 10. More on JPA ► @ManyToMany is not supported ► Join-Queries are not supported ► You can not use > InheritanceType.SINGLE_TABLE > InheritanceType.JOINED ► No support for aggregation queries > group by, having, sum, avg, min, max ► No support for polymorphic queries 21.11.11 10 CloudConf 2011 - GAE/J
  • 11. More to know about limits in JPA ► Resultsets are not initialized, you have to do it! > resultSet.size(); ► Id Fields: don’t use long type > Unsupported primary key type: long ► GenerationType.TABLE results in an error > javax.persistence.PersistenceEception: Transaction is still active. ► Solution @Id GeneratedValue(strategy = GenerationType.IDENTITY) private com.google.appengine.api.datastore.Key key; 21.11.11 11 CloudConf 2011 - GAE/J
  • 12. Agenda ► Google App Engine ► Persistence in Google App Engine ► Limits in GAE/J ► Quota and Performance ► Build-Tools ► Hands-On 21.11.11 12 CloudConf 2011 - GAE/J
  • 13. Other Limits in GAE ► The “JRE Whitelist” defines all supported JRE classes > http://code.google.com/intl/de-DE/appengine/docs/java/jrewhitelist.html > Only ~ 1500 classes ► Your application should not > …start own threads (due to that, no Akka-Support if you use Scala) > …write files > …open network sockets 21.11.11 13 CloudConf 2011 - GAE/J
  • 14. Will it play? ► Overview about the support for frameworks and JVM languages: > http://code.google.com/p/googleappengine/wiki/WillItPlayInJava ► No support for… > JAX-RPC > JDBC > JMS (!) > JNDI > …and much more! ► A little bit support for JAX-WS, good support for REST ► Scala, Groovy (look @ Gealky) etc. supported ► Spring Core is supported 21.11.11 14 CloudConf 2011 - GAE/J
  • 15. Spring support ► Not all Spring Projects are supported - core is ► Running: Spring MVC with Spring beans ► Setup: JAR files into /WAR/WEB-INF/lib and add to Classpath ► Example: <listener> <listener-class> org.springframework.web.context.ContextLoaderListener </listener-class> </listener> <servlet> <servlet-name>dispatcher</servlet-name> <servlet-class> org.springframework.web.servlet.DispatcherServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>dispatcher</servlet-name> <url-pattern>/springgae/*</url-pattern> </servlet-mapping> 21.11.11 15 CloudConf 2011 - GAE/J
  • 16. Why? 21.11.11 16 CloudConf 2011 - GAE/J
  • 17. GAE and Android ► Tight integration of GAE and Android via Android Cloud to Device Framework (C2DM) > http://code.google.com/android/c2dm/ ► C2DM enables Android Apps to use all GAE as the backend ► ...e.g. use the GAE Data Store ► ...e.g. send Mails from GAE ► Example: Chrome to Phone-Extension and App > http://code.google.com/p/chrometophone/ 21.11.11 17 CloudConf 2011 - GAE/J
  • 18. More Reasons… ► No one enforces you to use JPA or JDO on GAE! > Use the native Interface > You have a free, full distributed, NoSQL Key-Value DB! ► Transparent scaling of your app > You have not to care about how many instances you have to start and then to start > GAE is not Beanstalk / CloudFoundry > In Beanstalk / CloudFoundry you have still to take care about LB and your infrastructure 21.11.11 18 CloudConf 2011 - GAE/J
  • 19. Agenda ► Google App Engine ► Persistence in Google App Engine ► Limits in GAE/J ► Quota and Performance ► Build-Tools ► Hands-On 21.11.11 19 CloudConf 2011 - GAE/J
  • 20. Quota ► GAE with limits w/o fee ► New Billing System to overcome limits ► Quota exceeded: HTTP 403 Errors or Exceptions (bad if you not aware of quota) ► Per minute quota = aprox. 500 Req./min. 21.11.11 20 CloudConf 2011 - GAE/J
  • 21. Measured Performance 21.11.11 21 CloudConf 2011 - GAE/J
  • 22. Agenda ► Google App Engine ► Persistence in Google App Engine ► Limits in GAE/J ► Quota and Performance ► Build-Tools ► Hands-On 21.11.11 22 CloudConf 2011 - GAE/J
  • 23. Build-Tools ► Ant is supported > Enhancement of entity classes > Deployment ► Maven > Maven2 plug-in available (http://code.google.com/p/maven-gae-plugin/ ) > Archetypes for JSP, GWT and Wicket-Projects > GAE SDK not available via Maven repositories anymore (?) 21.11.11 23 CloudConf 2011 - GAE/J
  • 24. Agenda ► Google App Engine ► Persistence in Google App Engine ► Limits in GAE/J ► Quota and Performance ► Build-Tools ► Hands-On 21.11.11 24 CloudConf 2011 - GAE/J
  • 25. Hands on? ► Some slides to tell you that is needed ► Ask me afterwards for a live demo ► Get ready... 21.11.11 25 CloudConf 2011 - GAE/J
  • 26. Getting started ► Google App Engine Account activated? > You need your mobile number for activation ► Eclipse with the Google Plug-in ► Manual installation via Eclipse Market Place > http://marketplace.eclipse.org/content/google-plugin-eclipse ► SDK with CLI and more resources at GAE-Homepage – http://code.google.com/appengine/ 21.11.11 26 CloudConf 2011 - GAE/J
  • 27. Create new project 21.11.11 27 CloudConf 2011 - GAE/J
  • 28. Hello World 21.11.11 28 CloudConf 2011 - GAE/J
  • 29. Test in the local sandbox ► You can test your application in the local sandbox ► http://localhost:8888/[your_project_name] 21.11.11 29 CloudConf 2011 - GAE/J
  • 30. Create your cloud app ► Register your application in your GAE account ► https://appengine.google.com/ -> “Create Application” ► Choose an Application Identifier and an Application Name (note them!) ► Choose the Authentication Option > Default is “Open to all Google Account users” > User can sign in into your app using their Google Account ► Choose Storage Option > High Replication (default) vs. Master/Slave > High Replication is “eventualy consistent” (latency in writes) 21.11.11 30 CloudConf 2011 - GAE/J
  • 31. Deployment ► Choose „Google – Deploy to App Engine“ from context menu ► Provide your App Engine data 21.11.11 31 CloudConf 2011 - GAE/J
  • 32. Calling now on the cloud ► Call your Application now on the cloud! ► [appid].appspot.com/[servletname] (Servletname = Projectname by default) ► The servlet should greet you… ► Check your Application-Dashboard – https://appengine.google.com/ 21.11.11 32 CloudConf 2011 - GAE/J
  • 33. Thank you for your attention! info@adesso.de www.adesso.de