SlideShare a Scribd company logo
You	
   know	
   Java,	
   but	
   what	
   is	
  
AppEngine?	
   In	
   this	
   session	
   Max	
   will	
  
walk	
   you	
   from	
   a	
   brief	
   introducAon	
   of	
  
Servlets	
   to	
   an	
   overview	
   of	
   the	
  
Google	
   AppEngine.	
   We	
   learn	
   about	
  
the	
   basics	
   such	
   as	
   the	
   data	
   store	
   –	
  
which	
   is	
   quite	
   different	
   from	
   SQL	
   -­‐,	
  
applicaAon	
   versions,	
   back-­‐ends,	
  
scheduler,	
   instances	
   and	
   logging.	
  
Services	
   such	
   as	
   mail,	
   url	
   fetch,	
   task	
  
queue	
   are	
   also	
   explained.	
   Since	
   we	
  
use	
   GAE/J	
   since	
   2010	
   in	
   Calpano	
   we	
  
also	
  talk	
  about	
  costs	
  and	
  experience	
  
in	
  pracAce.	
  
	
  





Dr. Max Völkel, Calpano
                                                                      1
Poll
§  Language?
§  Java?
§  AppEngine?
§  Servlets?




           GDG Karlsruhe DevFest 2012 | Dr. Max Völkel | Calpano.com
                                                                        2
Do you know Servlets?
§  HttpServlet
     •  void doGet( HttpServletRequest req,

        "HttpServletResponse res);"
     •  void doPost(…)"
§  HttpServletRequest
     •  get Header(…), get InputStream(...)"
§  HttpServletResponse
     •  set Header(…), getOutputStream(...)"

See: http://java.sun.com/products/servlet/, AppEngine supports version 2.5            "



                         GDG Karlsruhe DevFest 2012 | Dr. Max Völkel | Calpano.com
                                                                                          3
AppEngine is a Servlet Container
§  Servlet Container runs a Web Application
    Archive (WAR)
  •  Class files
  •  Static resources
  •  web.xml"

§  In AppEngine also:
  •  appengine-web.xml, queue.xml, cron.xml,
    backends.xml, indexes.xml,                           …


                GDG Karlsruhe DevFest 2012 | Dr. Max Völkel | Calpano.com
                                                                             4

Recommended for you

Faster java ee builds with gradle [con4921]
Faster java ee builds with gradle [con4921]Faster java ee builds with gradle [con4921]
Faster java ee builds with gradle [con4921]

JavaOne 2016 It is time to move your Java EE builds over to Gradle! Gradle continues to gain momentum across the industry. In fact, Google is now pushing Gradle for Android development. Gradle draws on lessons learned from both Ant and Maven and is the next evolutionary step in Java build tools. This session covers the basics of switching existing Java EE projects (that use Maven) over to Gradle and the benefits you will reap, such as incremental compiling, custom distributions, and task parallelization. You’ll see demos of all the goodies you’ve come to expect, such as integration testing and leveraging of Docker. Switching is easier than you think, and no refactoring is required.

gradlejava ee7
Resin Outperforms NginX
Resin Outperforms NginXResin Outperforms NginX
Resin Outperforms NginX

www.caucho.com Using industry standard tool and methodology, Resin Pro web server was put to the test versus Nginx, a popular web server with a reputation for efficiency and performance. Nginx is known to be faster and more reliable under load than the popular Apache HTTPD. Benchmark tests between Resin and Nginx yielded competitive figures, with Resin leading with fewer errors and faster response times. In numerous and varying tests, Resin handled 20% to 25% more load while still outperforming Nginx. In particular, Resin was able to sustain fast response times under extremely heavy load while Nginx performance degraded.

java web servernginxjava application server
Rebooting a Cloud
Rebooting a CloudRebooting a Cloud
Rebooting a Cloud

The document discusses the importance of resilience and failure preparation in cloud systems. It introduces the concept of "GameDay", which are large-scale exercises that inject faults across critical systems to increase an organization's resilience. These exercises help identify risks, reduce failure frequency and recovery time, and build confidence and competence in responding to failures. The document advocates designing infrastructure to be rebuildable from source code and data backups alone. It also stresses the importance of automation, emergencies tools testing, and culture of collaboration between dev and ops.

opscodemtbfoperations
AppEngine Architecture
                                  Java/Python/Go

§  Running Code
                                                HTTP,	
  Incoming	
  Mail,	
  
§  Storing Data
                                                  Cron,	
  Taskqueue	
  
    •  JVM
    •  Memcache
    •  Data store (Old vs. High
       Replication)
                                                 Servlet	
  Container	
  
§  Connect to the outside world
                                               	
  
    •  Mail (Incoming, Outgoing)
                                           JVM	
  
    •  Urlfetch
§  Delay or schedule work
    •  Taskqueue
                                                                   Memcache	
  
    •  Cron
                                              Data	
  Store	
            Images	
  
§  More helper services
    •  Images
                                                Urlfetch,	
  Outgoing	
  Mail,	
  
    •  Users
                                                        Taskqueue	
  


                    GDG Karlsruhe DevFest 2012 | Dr. Max Völkel | Calpano.com
                                                                                                   5
Hello AppEngine
§  Typical first test:
   •  Register, Verify mobile number via SMS
   •  Create new app “helloworld”
      •  http://helloworld.appspot.com
§  Next step:
   •  Buy domain name
   •  Configure …



              GDG Karlsruhe DevFest 2012 | Dr. Max Völkel | Calpano.com
                                                                           6
1.  Appspot.com > Create App




2.  Go to “Apps for your Domain”
    https://www.google.com/a/calpano.com
3.  Organization & Users > Create user
    ! Only those can send emails
4.  Domain Settings >
    Domain names >
    Add domain name or alias >



5.  Go to appspot.com and “Add Domain”

   

                    GDG Karlsruhe DevFest 2012 | Dr. Max Völkel | Calpano.com
                                                                                 7
Application Versions
§  http://{version}.{appid}.appspot.com"
§  http://{appid].appspot.com
    à main version (Selected in Dashboard)
§  All versions
  •  Share the same datastore, memcache (!)
  •  Different logs, stats, instances




            GDG Karlsruhe DevFest 2012 | Dr. Max Völkel | Calpano.com
                                                                         8

Recommended for you

Full stack development with node and NoSQL - All Things Open - October 2017
Full stack development with node and NoSQL - All Things Open - October 2017Full stack development with node and NoSQL - All Things Open - October 2017
Full stack development with node and NoSQL - All Things Open - October 2017

What is different about this generation of web applications? A solid development approach must consider latency, throughput, and interactivity demanded by users users across mobile devices, web browsers, and IoT. These applications often use NoSQL to support a flexible data model and easy scalability required for modern development. A full stack application (composed of Couchbase, WebAPI, Angular2, and ASP.NET/ASP.NET Core) will be demonstrated in this session. The individual parts of a stack may vary, but the overall design is the focus.

couchbase.netasp.net
Integrating multiple CDN providers at Etsy - Velocity Europe (London) 2013
Integrating multiple CDN providers at Etsy - Velocity Europe (London) 2013Integrating multiple CDN providers at Etsy - Velocity Europe (London) 2013
Integrating multiple CDN providers at Etsy - Velocity Europe (London) 2013

The document discusses Etsy's experience integrating multiple content delivery network (CDN) providers. Etsy began using a single CDN in 2008 but then investigated using multiple CDNs in 2012 to improve resilience, flexibility, and costs. They developed an evaluation criteria and testing process to initially configure and test the CDNs with non-critical traffic before routing production traffic. Etsy then implemented methods for balancing traffic across CDNs using DNS and monitoring the performance of the CDNs and origin infrastructure.

cdn etsy
Virtualization and Containers
Virtualization and ContainersVirtualization and Containers
Virtualization and Containers

This document discusses using virtualization and containers to improve database deployments in development environments. It notes that traditional database deployments are slow, taking 85% of project time for creation and refreshes. Virtualization allows for more frequent releases by speeding up refresh times. The document discusses how virtualization engines can track database changes and provision new virtual databases in seconds from a source database. This allows developers and testers to self-service provision databases without involving DBAs. It also discusses how virtualization and containers can optimize database deployments in cloud environments by reducing storage usage and data transfers.

kscopedbasvirtualization
Running Code
§  Java 6 VM (experimental Java 7)
§  No Files (only read the ones you put in your .war)
§  Explicit whitelist which Java classes are allowed (many!)
   •  https://developers.google.com/appengine/docs/java/jrewhitelist


§  F1: 8 cent/hour 
   •  128MB memory (!), 
   •  600MHz CPU
§  F2 = F1 * 2; F4 = F1 * 4
§  ! Servlet response max. time is 60 seconds




                  GDG Karlsruhe DevFest 2012 | Dr. Max Völkel | Calpano.com
                                                                               9
Storing Data
§  JVM
  •  Great when “always on”
§  Memcache
  •  Really just a cache
§  Data store
  •  Old: Master-Slave (2 data centers)
  •  High Replication (3 data centers)


             GDG Karlsruhe DevFest 2012 | Dr. Max Völkel | Calpano.com
                                                                          10
Connect to the outside world
§  Mail
   •  Incoming
      •  Send as a servlet request
   •  Outgoing
      •  Via Java Mail API, only some headers used
      •  ! Bounce processing
            •  http://code.google.com/p/googleappengine/issues/
               detail?id=1800

§  Urlfetch
      •  ! Calling Twitter API etc.

                 GDG Karlsruhe DevFest 2012 | Dr. Max Völkel | Calpano.com
                                                                              11
Delay or schedule work
§  Taskqueue
Queue queue = QueueFactory.getDefaultQueue();!
queue.add(TaskOptions.Builder.withDefaults()!
.payload(task));!
   •  Task is a DeferredTask (has a run() method)
   •  Very quick to enqueue task
   •  Task queue service fires requests as
      HttpRequests at defined rates, unwraps task,
      runs it
   •  Max runtime: 10 minutes
§  Cron
   •  Scheduled GET-requests at defined urls

              GDG Karlsruhe DevFest 2012 | Dr. Max Völkel | Calpano.com
                                                                           12

Recommended for you

Java EE Servlet JSP Tutorial- Cookbook 1
Java EE Servlet JSP Tutorial- Cookbook 1Java EE Servlet JSP Tutorial- Cookbook 1
Java EE Servlet JSP Tutorial- Cookbook 1

http://wiki4.caucho.com/Java_EE_Tutorial_covering_JSP_2.2,_and_Servlets_3.0 This tutorial focuses on using Servlet's and JSP the right way. Servlet and JSP have evolved over the years, and now there is often more than one way to do things. For example, this tutorial uses EL and JSTL not JSP scriptlets, it uses JSPs in a Model 2/MVC style not in a model 1 style, etc. Consider it a tutorial that focuses only on the best practices and not the legacy ways to do things. There are other tutorials on this subject, but this tutorial is going to be different in that it is going to put all code into github, and you can follow along with Eclipse. Also instead of focusing on JSF, we are going to focus on JSP and Servlets as the main view technology. Java EE, JSP and Servlets have added a lot of features that are in other frameworks, making those other frameworks less relevant then they were before Java EE garnered these extra abilities. Even is you decide to use JSF, Struts, Stripes, Spring MVC, JSF, etc., this tutorial should help you have a better understanding of the JSP/Servlets core that they build on. We are going to start by building a simple bookstore. We will progressively add more features to the bookstore and as we do we will use more of Java EE/CDI, JSP and Servlets. For this tutorial, I am going to use Resin 4.0.x, but you could use any Java EE 6 Web Profile compliant application server.

java eejava ee tutorialjsp tutorial
Into The Box 2018 Ortus Keynote
Into The Box 2018 Ortus KeynoteInto The Box 2018 Ortus Keynote
Into The Box 2018 Ortus Keynote

This document provides information about an upcoming Box Guy event, including sponsors, speakers and sessions. On the first day, there will be a presentation on FusionReactor at 12:30pm and a podcast at 6:30pm. The second day will feature a lunch with Pete Freitag at 12:30pm. Attendees can enter raffles by tweeting with #intothebox. The event also promotes Ortus' consulting services and modernization approach for CFML applications.

cfmlcoldfusionweb development
Plain english guide to drupal 8 criticals
Plain english guide to drupal 8 criticalsPlain english guide to drupal 8 criticals
Plain english guide to drupal 8 criticals

This document provides an overview of the remaining tasks to complete the release of Drupal 8. It discusses the 26 remaining critical issues blocking the beta to RC phase. It outlines goals around performance, security, and the upgrade path. Key tasks include finalizing caching, migrating from Drupal 7, and ensuring alternative databases like SQLite and PostgreSQL are fully supported. The document encourages community involvement in testing, profiling, and helping to resolve critical issues.

drupal 8drupal
More helper services
§  Images
   •  Looks like a subset of ImageMagick
§  Users
   •  Log in via Google Account




              GDG Karlsruhe DevFest 2012 | Dr. Max Völkel | Calpano.com
                                                                           13
Where is a request going?
Typical setup
§  DNS lookup: CNAME or A-record to Google
§  GAE scheduler: 
   •  Request queue for your app
   •  Boot new instance? Takes ca. 10-30 seconds.
§  On instance: 
   •  Run WAR, 
   •  Run servlet




               GDG Karlsruhe DevFest 2012 | Dr. Max Völkel | Calpano.com
                                                                            14
Instances




GDG Karlsruhe DevFest 2012 | Dr. Max Völkel | Calpano.com
                                                             15
Time is Money. What time?
§  Free vs. Payment enabled
§  Quotas
   •  Usage – Free = Billable à Pay 
   •  Resource quota à Fair use limit à Error page
§  Data store
   •  See also
      http://blog.xam.de/2011/11/analysis-of-datastore-operation-
      cost.html
§  Instance hours
   •  Usage (code time * complexity + 15 min)
   •  What???

                 GDG Karlsruhe DevFest 2012 | Dr. Max Völkel | Calpano.com
                                                                              16

Recommended for you

ContainerDays NYC 2016: "OpenWhisk: A Serverless Computing Platform" (Rodric ...
ContainerDays NYC 2016: "OpenWhisk: A Serverless Computing Platform" (Rodric ...ContainerDays NYC 2016: "OpenWhisk: A Serverless Computing Platform" (Rodric ...
ContainerDays NYC 2016: "OpenWhisk: A Serverless Computing Platform" (Rodric ...

Slides from Rodric Rabbah & Philippe Suter's talk "OpenWhisk: A Serverless Computing Platform" at ContainerDays NYC 2016: dynamicinfradays.org/events/2016-nyc/programme.html#openwhisk

containerdayscontainersserverless
Top 50 java ee 7 best practices [con5669]
Top 50 java ee 7 best practices [con5669]Top 50 java ee 7 best practices [con5669]
Top 50 java ee 7 best practices [con5669]

JavaOne 2016 This session provides 50 best practices for Java EE 7, with examples. The best practices covered focus primarily on JPA, CDI, JAX-WS, and JAX-RS. In addition, topics involving testing and deployment are covered. This presentation points out where best practices have changed, common misconceptions, and antipatterns that should be avoided. This is a fast-paced presentation with many code samples.

cdijavaone 2016java ee7
Choosing a Javascript Framework
Choosing a Javascript FrameworkChoosing a Javascript Framework
Choosing a Javascript Framework

Pam Selle Co-author of Choosing a JavaScript Framework, thewebivore.com Tuesday, Oct 20th 4:20 pm - Design/UX/UI

ato2015open sourceall things open
Real time vs. API time




§  CPU-intensive code is more expensive
  •  Is magically speed-up by AppEngine

           GDG Karlsruhe DevFest 2012 | Dr. Max Völkel | Calpano.com
                                                                        17
The Scheduler
Appspot > App Settings > Performance




                GDG Karlsruhe DevFest 2012 | Dr. Max Völkel | Calpano.com
                                                                             18
Appstats




GDG Karlsruhe DevFest 2012 | Dr. Max Völkel | Calpano.com
                                                             19
More stuff
§  Backends
      •  Requests run for hours (or even days?)
§  Logging
      •  Java.util.logging runs fine
§    Blobstore
§    Channel ~ like websockets
§    XMPP
§    Remote API: 
      •  Call services remotely

                 GDG Karlsruhe DevFest 2012 | Dr. Max Völkel | Calpano.com
                                                                              20

Recommended for you

Java EE Servlet/JSP Tutorial- Cookbook 2
Java EE Servlet/JSP Tutorial- Cookbook 2Java EE Servlet/JSP Tutorial- Cookbook 2
Java EE Servlet/JSP Tutorial- Cookbook 2

http://wiki4.caucho.com/Java_EE_Tutorial_covering_JSP_2.2,_and_Servlets_3.0 This tutorial focuses on using Servlet's and JSP the right way. Servlet and JSP have evolved over the years, and now there is often more than one way to do things. For example, this tutorial uses EL and JSTL not JSP scriptlets, it uses JSPs in a Model 2/MVC style not in a model 1 style, etc. Consider it a tutorial that focuses only on the best practices and not the legacy ways to do things. There are other tutorials on this subject, but this tutorial is going to be different in that it is going to put all code into github, and you can follow along with Eclipse. Also instead of focusing on JSF, we are going to focus on JSP and Servlets as the main view technology. Java EE, JSP and Servlets have added a lot of features that are in other frameworks, making those other frameworks less relevant then they were before Java EE garnered these extra abilities. Even is you decide to use JSF, Struts, Stripes, Spring MVC, JSF, etc., this tutorial should help you have a better understanding of the JSP/Servlets core that they build on. We are going to start by building a simple bookstore. We will progressively add more features to the bookstore and as we do we will use more of Java EE/CDI, JSP and Servlets. For this tutorial, I am going to use Resin 4.0.x, but you could use any Java EE 6 Web Profile compliant application server.

java ee tutorialjsp tutorialservlet tutorial
Developing Java EE Applications on IntelliJ IDEA with Oracle WebLogic 12c
Developing Java EE Applications on IntelliJ IDEA with Oracle WebLogic 12cDeveloping Java EE Applications on IntelliJ IDEA with Oracle WebLogic 12c
Developing Java EE Applications on IntelliJ IDEA with Oracle WebLogic 12c

This document provides an overview and agenda for a presentation on developing Java EE applications for WebLogic 12c with IntelliJ IDEA. The presentation agenda includes an overview of Oracle WebLogic 12c, installing and configuring WebLogic 12c and IntelliJ IDEA, and developing Java EE applications. It also discusses features of WebLogic 12c such as dynamic clusters, high availability, database integration, developer tools and technologies.

oracle weblogic serverintellij ideajava ee
Introduction to Web Application Clustering
Introduction to Web Application ClusteringIntroduction to Web Application Clustering
Introduction to Web Application Clustering

This document discusses setting up a web application cluster for scaling and load balancing purposes. It introduces vertical and horizontal clustering approaches. Vertical clustering involves using multiple application instances on the same machine, while horizontal clustering uses multiple machines. The document then provides steps to create a private vertical cluster on a local machine using two Tomcat instances fronted by an Apache HTTP server with a weighted round robin load balancing policy.

haj2ee clusterhorizontal clustering
Practical Tips on Datastore
§  Don’t use JDO abstraction
  •  Leaky abstraction anyway
§  Low-level API quite easy
  •  Objectify (open source) makes using it nice
  •  Xydra.org adds versioning/synchronisation




            GDG Karlsruhe DevFest 2012 | Dr. Max Völkel | Calpano.com
                                                                         21
Real-World Experiences
§  Xydra
                                                HTTP,	
  Incoming	
  Mail,	
  
                                                            Cron,	
  Taskqueue	
  
§  Calpano.com
§  SonicMetrics.com
                                         Servlet	
  Container	
  
                                                                         	
  
                                                                     JVM	
  


                                                                             Memcache	
  
                                                   Data	
  Store	
            Images	
  

                                                       Urlfetch,	
  Outgoing	
  Mail,	
  
                                                              Taskqueue	
  


           GDG Karlsruhe DevFest 2012 | Dr. Max Völkel | Calpano.com
                                                                                            22
When to use AppEngine?
§  Best: Spikes in demand
§  OK: Outsource server management




          GDG Karlsruhe DevFest 2012 | Dr. Max Völkel | Calpano.com
                                                                       23
Where to learn more?
§  Next talk from Florian Krupicka on
    Continuous Integration with AppEngine and
    Maven
§  Google webseits – Docu, JavaDocs, Articles,
§  Stackoverflow – Googles official developer
    support moved there
§  Books
  •  Programming Google AppEngine – was OK when
     it came out, but now too outdated
§  Book a workshop from Calpano Consulting
    J 
            GDG Karlsruhe DevFest 2012 | Dr. Max Völkel | Calpano.com
                                                                         24

Recommended for you

OSGi ecosystems compared on Apache Karaf - Christian Schneider
OSGi ecosystems compared on Apache Karaf - Christian SchneiderOSGi ecosystems compared on Apache Karaf - Christian Schneider
OSGi ecosystems compared on Apache Karaf - Christian Schneider

OSGi Community Event 2015 A look at three competing OSGi ecosystems (Declarative Services, Blueprint, CDI). Capabilities of each DI framework. Comparison of support for EE technologies like JPA, Security, SOAP and REST services, UIs. Looking into some of the recent advancements like Aries JPA 2 featuring closure based transactions, JAAS Security, JSP and JSF on OSGi. Attendees will get a good overview about the stacks as well as recommendations where each is most applicable.

eclipseconosgi community event 2015eclipse con europe 2015
Administration for Oracle ADF Applications
Administration for Oracle ADF ApplicationsAdministration for Oracle ADF Applications
Administration for Oracle ADF Applications

Administration Guide for Oracle ADF Applications: Setup WebLogic for ADF, Configurat ADF Connections, Monitor ADF Performance, Application Module Pools, Configure MDS

oracle adforacle weblogic server
Implementing your own Google App Engine
Implementing your own Google App Engine Implementing your own Google App Engine
Implementing your own Google App Engine

Google App Engine (GAE) is a popular PaaS offering. Where its scalable and reliable environment is hidden behind a custom API. This makes GAE apps hard to port over to other non-GAE environments. But what if one could implement such similar environment? And you could simply move your GAE application’s .war file to this new environment and it would just work? After all, at the end it’s all about the API, plus scalable and reliable services. JBoss CapeDwarf project aims at making this a reality. This presentation will provide a glimpse into what it takes to implement something as GAE, ranging from runtime integration with JBoss Application Server, actual services implementation to last but not least, automated heavy testing.

jbossgoogle app enginejava
HTTP,	
  Incoming	
  Mail,	
  
         Cron,	
  Taskqueue	
  



           Servlet	
  Container	
  
                      	
  
                  JVM	
  


                          Memcache	
  
Data	
  Store	
            Images	
  

    Urlfetch,	
  Outgoing	
  Mail,	
                                                
           Taskqueue	
                                                              Dr. Max Völkel

                       GDG Karlsruhe DevFest 2012 | Dr. Max Völkel | Calpano.com
                                                                                               25
Contact Information
§  Dr. Max Völkel
§  Max.voelkel@calpano.com
§  +49 171 8359678

§  www.Calpano.com




           GDG Karlsruhe DevFest 2012 | Dr. Max Völkel | Calpano.com
                                                                        26

More Related Content

What's hot

Make Your Build Great Again (DroidConSF 2017)
Make Your Build Great Again (DroidConSF 2017)Make Your Build Great Again (DroidConSF 2017)
Make Your Build Great Again (DroidConSF 2017)
Jared Burrows
 
Apache Lucene for Java EE Developers
Apache Lucene for Java EE DevelopersApache Lucene for Java EE Developers
Apache Lucene for Java EE Developers
Virtual JBoss User Group
 
Building Grails Plugins - Tips And Tricks
Building Grails Plugins - Tips And TricksBuilding Grails Plugins - Tips And Tricks
Building Grails Plugins - Tips And Tricks
Mike Hugo
 
Faster java ee builds with gradle [con4921]
Faster java ee builds with gradle [con4921]Faster java ee builds with gradle [con4921]
Faster java ee builds with gradle [con4921]
Ryan Cuprak
 
Resin Outperforms NginX
Resin Outperforms NginXResin Outperforms NginX
Resin Outperforms NginX
billdigman
 
Rebooting a Cloud
Rebooting a CloudRebooting a Cloud
Rebooting a Cloud
Jesse Robbins
 
Full stack development with node and NoSQL - All Things Open - October 2017
Full stack development with node and NoSQL - All Things Open - October 2017Full stack development with node and NoSQL - All Things Open - October 2017
Full stack development with node and NoSQL - All Things Open - October 2017
Matthew Groves
 
Integrating multiple CDN providers at Etsy - Velocity Europe (London) 2013
Integrating multiple CDN providers at Etsy - Velocity Europe (London) 2013Integrating multiple CDN providers at Etsy - Velocity Europe (London) 2013
Integrating multiple CDN providers at Etsy - Velocity Europe (London) 2013
Marcus Barczak
 
Virtualization and Containers
Virtualization and ContainersVirtualization and Containers
Virtualization and Containers
Kellyn Pot'Vin-Gorman
 
Java EE Servlet JSP Tutorial- Cookbook 1
Java EE Servlet JSP Tutorial- Cookbook 1Java EE Servlet JSP Tutorial- Cookbook 1
Java EE Servlet JSP Tutorial- Cookbook 1
billdigman
 
Into The Box 2018 Ortus Keynote
Into The Box 2018 Ortus KeynoteInto The Box 2018 Ortus Keynote
Into The Box 2018 Ortus Keynote
Ortus Solutions, Corp
 
Plain english guide to drupal 8 criticals
Plain english guide to drupal 8 criticalsPlain english guide to drupal 8 criticals
Plain english guide to drupal 8 criticals
Angela Byron
 
ContainerDays NYC 2016: "OpenWhisk: A Serverless Computing Platform" (Rodric ...
ContainerDays NYC 2016: "OpenWhisk: A Serverless Computing Platform" (Rodric ...ContainerDays NYC 2016: "OpenWhisk: A Serverless Computing Platform" (Rodric ...
ContainerDays NYC 2016: "OpenWhisk: A Serverless Computing Platform" (Rodric ...
DynamicInfraDays
 
Top 50 java ee 7 best practices [con5669]
Top 50 java ee 7 best practices [con5669]Top 50 java ee 7 best practices [con5669]
Top 50 java ee 7 best practices [con5669]
Ryan Cuprak
 
Choosing a Javascript Framework
Choosing a Javascript FrameworkChoosing a Javascript Framework
Choosing a Javascript Framework
All Things Open
 
Java EE Servlet/JSP Tutorial- Cookbook 2
Java EE Servlet/JSP Tutorial- Cookbook 2Java EE Servlet/JSP Tutorial- Cookbook 2
Java EE Servlet/JSP Tutorial- Cookbook 2
billdigman
 
Developing Java EE Applications on IntelliJ IDEA with Oracle WebLogic 12c
Developing Java EE Applications on IntelliJ IDEA with Oracle WebLogic 12cDeveloping Java EE Applications on IntelliJ IDEA with Oracle WebLogic 12c
Developing Java EE Applications on IntelliJ IDEA with Oracle WebLogic 12c
Bruno Borges
 
Introduction to Web Application Clustering
Introduction to Web Application ClusteringIntroduction to Web Application Clustering
Introduction to Web Application Clustering
Piyush Katariya
 
OSGi ecosystems compared on Apache Karaf - Christian Schneider
OSGi ecosystems compared on Apache Karaf - Christian SchneiderOSGi ecosystems compared on Apache Karaf - Christian Schneider
OSGi ecosystems compared on Apache Karaf - Christian Schneider
mfrancis
 
Administration for Oracle ADF Applications
Administration for Oracle ADF ApplicationsAdministration for Oracle ADF Applications
Administration for Oracle ADF Applications
Andreas Koop
 

What's hot (20)

Make Your Build Great Again (DroidConSF 2017)
Make Your Build Great Again (DroidConSF 2017)Make Your Build Great Again (DroidConSF 2017)
Make Your Build Great Again (DroidConSF 2017)
 
Apache Lucene for Java EE Developers
Apache Lucene for Java EE DevelopersApache Lucene for Java EE Developers
Apache Lucene for Java EE Developers
 
Building Grails Plugins - Tips And Tricks
Building Grails Plugins - Tips And TricksBuilding Grails Plugins - Tips And Tricks
Building Grails Plugins - Tips And Tricks
 
Faster java ee builds with gradle [con4921]
Faster java ee builds with gradle [con4921]Faster java ee builds with gradle [con4921]
Faster java ee builds with gradle [con4921]
 
Resin Outperforms NginX
Resin Outperforms NginXResin Outperforms NginX
Resin Outperforms NginX
 
Rebooting a Cloud
Rebooting a CloudRebooting a Cloud
Rebooting a Cloud
 
Full stack development with node and NoSQL - All Things Open - October 2017
Full stack development with node and NoSQL - All Things Open - October 2017Full stack development with node and NoSQL - All Things Open - October 2017
Full stack development with node and NoSQL - All Things Open - October 2017
 
Integrating multiple CDN providers at Etsy - Velocity Europe (London) 2013
Integrating multiple CDN providers at Etsy - Velocity Europe (London) 2013Integrating multiple CDN providers at Etsy - Velocity Europe (London) 2013
Integrating multiple CDN providers at Etsy - Velocity Europe (London) 2013
 
Virtualization and Containers
Virtualization and ContainersVirtualization and Containers
Virtualization and Containers
 
Java EE Servlet JSP Tutorial- Cookbook 1
Java EE Servlet JSP Tutorial- Cookbook 1Java EE Servlet JSP Tutorial- Cookbook 1
Java EE Servlet JSP Tutorial- Cookbook 1
 
Into The Box 2018 Ortus Keynote
Into The Box 2018 Ortus KeynoteInto The Box 2018 Ortus Keynote
Into The Box 2018 Ortus Keynote
 
Plain english guide to drupal 8 criticals
Plain english guide to drupal 8 criticalsPlain english guide to drupal 8 criticals
Plain english guide to drupal 8 criticals
 
ContainerDays NYC 2016: "OpenWhisk: A Serverless Computing Platform" (Rodric ...
ContainerDays NYC 2016: "OpenWhisk: A Serverless Computing Platform" (Rodric ...ContainerDays NYC 2016: "OpenWhisk: A Serverless Computing Platform" (Rodric ...
ContainerDays NYC 2016: "OpenWhisk: A Serverless Computing Platform" (Rodric ...
 
Top 50 java ee 7 best practices [con5669]
Top 50 java ee 7 best practices [con5669]Top 50 java ee 7 best practices [con5669]
Top 50 java ee 7 best practices [con5669]
 
Choosing a Javascript Framework
Choosing a Javascript FrameworkChoosing a Javascript Framework
Choosing a Javascript Framework
 
Java EE Servlet/JSP Tutorial- Cookbook 2
Java EE Servlet/JSP Tutorial- Cookbook 2Java EE Servlet/JSP Tutorial- Cookbook 2
Java EE Servlet/JSP Tutorial- Cookbook 2
 
Developing Java EE Applications on IntelliJ IDEA with Oracle WebLogic 12c
Developing Java EE Applications on IntelliJ IDEA with Oracle WebLogic 12cDeveloping Java EE Applications on IntelliJ IDEA with Oracle WebLogic 12c
Developing Java EE Applications on IntelliJ IDEA with Oracle WebLogic 12c
 
Introduction to Web Application Clustering
Introduction to Web Application ClusteringIntroduction to Web Application Clustering
Introduction to Web Application Clustering
 
OSGi ecosystems compared on Apache Karaf - Christian Schneider
OSGi ecosystems compared on Apache Karaf - Christian SchneiderOSGi ecosystems compared on Apache Karaf - Christian Schneider
OSGi ecosystems compared on Apache Karaf - Christian Schneider
 
Administration for Oracle ADF Applications
Administration for Oracle ADF ApplicationsAdministration for Oracle ADF Applications
Administration for Oracle ADF Applications
 

Similar to Google AppEngine (GAE/J) - Introduction and Overview from a Java Guy

Implementing your own Google App Engine
Implementing your own Google App Engine Implementing your own Google App Engine
Implementing your own Google App Engine
Virtual JBoss User Group
 
Golang @ Tokopedia
Golang @ TokopediaGolang @ Tokopedia
Golang @ Tokopedia
Qasim Zaidi
 
Buildingsocialanalyticstoolwithmongodb
BuildingsocialanalyticstoolwithmongodbBuildingsocialanalyticstoolwithmongodb
Buildingsocialanalyticstoolwithmongodb
MongoDB APAC
 
PaaS with Java
PaaS with JavaPaaS with Java
PaaS with Java
Eberhard Wolff
 
Cannibalising The Google App Engine
Cannibalising The  Google  App  EngineCannibalising The  Google  App  Engine
Cannibalising The Google App Engine
catherinewall
 
Gaelyk - JFokus 2011 - Guillaume Laforge
Gaelyk - JFokus 2011 - Guillaume LaforgeGaelyk - JFokus 2011 - Guillaume Laforge
Gaelyk - JFokus 2011 - Guillaume Laforge
Guillaume Laforge
 
The State of Java under Oracle at JCertif 2011
The State of Java under Oracle at JCertif 2011The State of Java under Oracle at JCertif 2011
The State of Java under Oracle at JCertif 2011
Arun Gupta
 
Getting Started on Google Cloud Platform
Getting Started on Google Cloud PlatformGetting Started on Google Cloud Platform
Getting Started on Google Cloud Platform
Aaron Taylor
 
Cloud Platforms for Java
Cloud Platforms for JavaCloud Platforms for Java
Cloud Platforms for Java
3Pillar Global
 
What to expect from Java 9
What to expect from Java 9What to expect from Java 9
What to expect from Java 9
Ivan Krylov
 
Java script nirvana in netbeans [con5679]
Java script nirvana in netbeans [con5679]Java script nirvana in netbeans [con5679]
Java script nirvana in netbeans [con5679]
Ryan Cuprak
 
Scala, ECS, Docker: Delayed Execution @Coursera
Scala, ECS, Docker: Delayed Execution @CourseraScala, ECS, Docker: Delayed Execution @Coursera
Scala, ECS, Docker: Delayed Execution @Coursera
C4Media
 
Secrets of Performance Tuning Java on Kubernetes
Secrets of Performance Tuning Java on KubernetesSecrets of Performance Tuning Java on Kubernetes
Secrets of Performance Tuning Java on Kubernetes
Bruno Borges
 
DrupalSouth 2015 - Performance: Not an Afterthought
DrupalSouth 2015 - Performance: Not an AfterthoughtDrupalSouth 2015 - Performance: Not an Afterthought
DrupalSouth 2015 - Performance: Not an Afterthought
Nick Santamaria
 
Google App Engine Java, Groovy and Gaelyk
Google App Engine Java, Groovy and GaelykGoogle App Engine Java, Groovy and Gaelyk
Google App Engine Java, Groovy and Gaelyk
Guillaume Laforge
 
Usability in the GeoWeb
Usability in the GeoWebUsability in the GeoWeb
Usability in the GeoWeb
Dave Bouwman
 
Realtime Analytics with MongoDB Counters (mongonyc 2012)
Realtime Analytics with MongoDB Counters (mongonyc 2012)Realtime Analytics with MongoDB Counters (mongonyc 2012)
Realtime Analytics with MongoDB Counters (mongonyc 2012)
Scott Hernandez
 
DevOps <3 node.js
DevOps <3 node.jsDevOps <3 node.js
DevOps <3 node.js
Jeff Miccolis
 
Apache Airflow (incubating) NL HUG Meetup 2016-07-19
Apache Airflow (incubating) NL HUG Meetup 2016-07-19Apache Airflow (incubating) NL HUG Meetup 2016-07-19
Apache Airflow (incubating) NL HUG Meetup 2016-07-19
Bolke de Bruin
 
Apache Drill (ver. 0.1, check ver. 0.2)
Apache Drill (ver. 0.1, check ver. 0.2)Apache Drill (ver. 0.1, check ver. 0.2)
Apache Drill (ver. 0.1, check ver. 0.2)
Camuel Gilyadov
 

Similar to Google AppEngine (GAE/J) - Introduction and Overview from a Java Guy (20)

Implementing your own Google App Engine
Implementing your own Google App Engine Implementing your own Google App Engine
Implementing your own Google App Engine
 
Golang @ Tokopedia
Golang @ TokopediaGolang @ Tokopedia
Golang @ Tokopedia
 
Buildingsocialanalyticstoolwithmongodb
BuildingsocialanalyticstoolwithmongodbBuildingsocialanalyticstoolwithmongodb
Buildingsocialanalyticstoolwithmongodb
 
PaaS with Java
PaaS with JavaPaaS with Java
PaaS with Java
 
Cannibalising The Google App Engine
Cannibalising The  Google  App  EngineCannibalising The  Google  App  Engine
Cannibalising The Google App Engine
 
Gaelyk - JFokus 2011 - Guillaume Laforge
Gaelyk - JFokus 2011 - Guillaume LaforgeGaelyk - JFokus 2011 - Guillaume Laforge
Gaelyk - JFokus 2011 - Guillaume Laforge
 
The State of Java under Oracle at JCertif 2011
The State of Java under Oracle at JCertif 2011The State of Java under Oracle at JCertif 2011
The State of Java under Oracle at JCertif 2011
 
Getting Started on Google Cloud Platform
Getting Started on Google Cloud PlatformGetting Started on Google Cloud Platform
Getting Started on Google Cloud Platform
 
Cloud Platforms for Java
Cloud Platforms for JavaCloud Platforms for Java
Cloud Platforms for Java
 
What to expect from Java 9
What to expect from Java 9What to expect from Java 9
What to expect from Java 9
 
Java script nirvana in netbeans [con5679]
Java script nirvana in netbeans [con5679]Java script nirvana in netbeans [con5679]
Java script nirvana in netbeans [con5679]
 
Scala, ECS, Docker: Delayed Execution @Coursera
Scala, ECS, Docker: Delayed Execution @CourseraScala, ECS, Docker: Delayed Execution @Coursera
Scala, ECS, Docker: Delayed Execution @Coursera
 
Secrets of Performance Tuning Java on Kubernetes
Secrets of Performance Tuning Java on KubernetesSecrets of Performance Tuning Java on Kubernetes
Secrets of Performance Tuning Java on Kubernetes
 
DrupalSouth 2015 - Performance: Not an Afterthought
DrupalSouth 2015 - Performance: Not an AfterthoughtDrupalSouth 2015 - Performance: Not an Afterthought
DrupalSouth 2015 - Performance: Not an Afterthought
 
Google App Engine Java, Groovy and Gaelyk
Google App Engine Java, Groovy and GaelykGoogle App Engine Java, Groovy and Gaelyk
Google App Engine Java, Groovy and Gaelyk
 
Usability in the GeoWeb
Usability in the GeoWebUsability in the GeoWeb
Usability in the GeoWeb
 
Realtime Analytics with MongoDB Counters (mongonyc 2012)
Realtime Analytics with MongoDB Counters (mongonyc 2012)Realtime Analytics with MongoDB Counters (mongonyc 2012)
Realtime Analytics with MongoDB Counters (mongonyc 2012)
 
DevOps <3 node.js
DevOps <3 node.jsDevOps <3 node.js
DevOps <3 node.js
 
Apache Airflow (incubating) NL HUG Meetup 2016-07-19
Apache Airflow (incubating) NL HUG Meetup 2016-07-19Apache Airflow (incubating) NL HUG Meetup 2016-07-19
Apache Airflow (incubating) NL HUG Meetup 2016-07-19
 
Apache Drill (ver. 0.1, check ver. 0.2)
Apache Drill (ver. 0.1, check ver. 0.2)Apache Drill (ver. 0.1, check ver. 0.2)
Apache Drill (ver. 0.1, check ver. 0.2)
 

More from Max Völkel

Lean Startup Cost and Benefits
Lean Startup Cost and BenefitsLean Startup Cost and Benefits
Lean Startup Cost and Benefits
Max Völkel
 
Summary of 'The Mom Test' (v2 2013-11-05)
Summary of 'The Mom Test' (v2 2013-11-05)Summary of 'The Mom Test' (v2 2013-11-05)
Summary of 'The Mom Test' (v2 2013-11-05)
Max Völkel
 
Innovation Ohne Risiko - Lean Startup für Unternehmen
Innovation Ohne Risiko - Lean Startup für UnternehmenInnovation Ohne Risiko - Lean Startup für Unternehmen
Innovation Ohne Risiko - Lean Startup für Unternehmen
Max Völkel
 
2012-07 Lean Startup at #bcka by Calpano
2012-07 Lean Startup at #bcka by Calpano2012-07 Lean Startup at #bcka by Calpano
2012-07 Lean Startup at #bcka by Calpano
Max Völkel
 
Lessons Learned from reading "The Lean Startup"
Lessons Learned from reading "The Lean Startup"Lessons Learned from reading "The Lean Startup"
Lessons Learned from reading "The Lean Startup"
Max Völkel
 
REQUIREMENTS FOR PERSONAL KNOWLEDGE MANAGEMENT TOOLS
REQUIREMENTS FOR PERSONAL KNOWLEDGE MANAGEMENT TOOLSREQUIREMENTS FOR PERSONAL KNOWLEDGE MANAGEMENT TOOLS
REQUIREMENTS FOR PERSONAL KNOWLEDGE MANAGEMENT TOOLS
Max Völkel
 
The 10 Processes of using Knowledge Models
The 10 Processes of using Knowledge ModelsThe 10 Processes of using Knowledge Models
The 10 Processes of using Knowledge Models
Max Völkel
 
TagFS — Tag Semantics for Hierarchical File Systems
TagFS — Tag Semantics for Hierarchical File SystemsTagFS — Tag Semantics for Hierarchical File Systems
TagFS — Tag Semantics for Hierarchical File Systems
Max Völkel
 
Artificial Memory - tasks, structure, performance indicators
Artificial Memory - tasks, structure, performance indicatorsArtificial Memory - tasks, structure, performance indicators
Artificial Memory - tasks, structure, performance indicators
Max Völkel
 
Personal Knowledge Mapping with Semantic Web Technologies
Personal Knowledge Mapping with Semantic Web TechnologiesPersonal Knowledge Mapping with Semantic Web Technologies
Personal Knowledge Mapping with Semantic Web Technologies
Max Völkel
 
Personal Knowledge Models for More Productive Knowledge Workers
Personal Knowledge Models for More Productive Knowledge WorkersPersonal Knowledge Models for More Productive Knowledge Workers
Personal Knowledge Models for More Productive Knowledge Workers
Max Völkel
 
A Survey of the Landscape and State-of-Art in Semantic Wiki
A Survey of the Landscape and State-of-Art in Semantic WikiA Survey of the Landscape and State-of-Art in Semantic Wiki
A Survey of the Landscape and State-of-Art in Semantic Wiki
Max Völkel
 
Persönliches Wissensmanagement mit Semantischen Technologien
Persönliches Wissensmanagement mit Semantischen TechnologienPersönliches Wissensmanagement mit Semantischen Technologien
Persönliches Wissensmanagement mit Semantischen Technologien
Max Völkel
 
Cost-Benefit Analysis for the Design of Personal Knowledge Management Systems
Cost-Benefit Analysis for the Design of Personal Knowledge Management SystemsCost-Benefit Analysis for the Design of Personal Knowledge Management Systems
Cost-Benefit Analysis for the Design of Personal Knowledge Management Systems
Max Völkel
 
Talk of Max Völkel at SemWiki2008 workshop
Talk of Max Völkel at SemWiki2008 workshopTalk of Max Völkel at SemWiki2008 workshop
Talk of Max Völkel at SemWiki2008 workshop
Max Völkel
 

More from Max Völkel (15)

Lean Startup Cost and Benefits
Lean Startup Cost and BenefitsLean Startup Cost and Benefits
Lean Startup Cost and Benefits
 
Summary of 'The Mom Test' (v2 2013-11-05)
Summary of 'The Mom Test' (v2 2013-11-05)Summary of 'The Mom Test' (v2 2013-11-05)
Summary of 'The Mom Test' (v2 2013-11-05)
 
Innovation Ohne Risiko - Lean Startup für Unternehmen
Innovation Ohne Risiko - Lean Startup für UnternehmenInnovation Ohne Risiko - Lean Startup für Unternehmen
Innovation Ohne Risiko - Lean Startup für Unternehmen
 
2012-07 Lean Startup at #bcka by Calpano
2012-07 Lean Startup at #bcka by Calpano2012-07 Lean Startup at #bcka by Calpano
2012-07 Lean Startup at #bcka by Calpano
 
Lessons Learned from reading "The Lean Startup"
Lessons Learned from reading "The Lean Startup"Lessons Learned from reading "The Lean Startup"
Lessons Learned from reading "The Lean Startup"
 
REQUIREMENTS FOR PERSONAL KNOWLEDGE MANAGEMENT TOOLS
REQUIREMENTS FOR PERSONAL KNOWLEDGE MANAGEMENT TOOLSREQUIREMENTS FOR PERSONAL KNOWLEDGE MANAGEMENT TOOLS
REQUIREMENTS FOR PERSONAL KNOWLEDGE MANAGEMENT TOOLS
 
The 10 Processes of using Knowledge Models
The 10 Processes of using Knowledge ModelsThe 10 Processes of using Knowledge Models
The 10 Processes of using Knowledge Models
 
TagFS — Tag Semantics for Hierarchical File Systems
TagFS — Tag Semantics for Hierarchical File SystemsTagFS — Tag Semantics for Hierarchical File Systems
TagFS — Tag Semantics for Hierarchical File Systems
 
Artificial Memory - tasks, structure, performance indicators
Artificial Memory - tasks, structure, performance indicatorsArtificial Memory - tasks, structure, performance indicators
Artificial Memory - tasks, structure, performance indicators
 
Personal Knowledge Mapping with Semantic Web Technologies
Personal Knowledge Mapping with Semantic Web TechnologiesPersonal Knowledge Mapping with Semantic Web Technologies
Personal Knowledge Mapping with Semantic Web Technologies
 
Personal Knowledge Models for More Productive Knowledge Workers
Personal Knowledge Models for More Productive Knowledge WorkersPersonal Knowledge Models for More Productive Knowledge Workers
Personal Knowledge Models for More Productive Knowledge Workers
 
A Survey of the Landscape and State-of-Art in Semantic Wiki
A Survey of the Landscape and State-of-Art in Semantic WikiA Survey of the Landscape and State-of-Art in Semantic Wiki
A Survey of the Landscape and State-of-Art in Semantic Wiki
 
Persönliches Wissensmanagement mit Semantischen Technologien
Persönliches Wissensmanagement mit Semantischen TechnologienPersönliches Wissensmanagement mit Semantischen Technologien
Persönliches Wissensmanagement mit Semantischen Technologien
 
Cost-Benefit Analysis for the Design of Personal Knowledge Management Systems
Cost-Benefit Analysis for the Design of Personal Knowledge Management SystemsCost-Benefit Analysis for the Design of Personal Knowledge Management Systems
Cost-Benefit Analysis for the Design of Personal Knowledge Management Systems
 
Talk of Max Völkel at SemWiki2008 workshop
Talk of Max Völkel at SemWiki2008 workshopTalk of Max Völkel at SemWiki2008 workshop
Talk of Max Völkel at SemWiki2008 workshop
 

Google AppEngine (GAE/J) - Introduction and Overview from a Java Guy

  • 1. You   know   Java,   but   what   is   AppEngine?   In   this   session   Max   will   walk   you   from   a   brief   introducAon   of   Servlets   to   an   overview   of   the   Google   AppEngine.   We   learn   about   the   basics   such   as   the   data   store   –   which   is   quite   different   from   SQL   -­‐,   applicaAon   versions,   back-­‐ends,   scheduler,   instances   and   logging.   Services   such   as   mail,   url   fetch,   task   queue   are   also   explained.   Since   we   use   GAE/J   since   2010   in   Calpano   we   also  talk  about  costs  and  experience   in  pracAce.     Dr. Max Völkel, Calpano 1
  • 2. Poll §  Language? §  Java? §  AppEngine? §  Servlets? GDG Karlsruhe DevFest 2012 | Dr. Max Völkel | Calpano.com 2
  • 3. Do you know Servlets? §  HttpServlet •  void doGet( HttpServletRequest req,
 "HttpServletResponse res);" •  void doPost(…)" §  HttpServletRequest •  get Header(…), get InputStream(...)" §  HttpServletResponse •  set Header(…), getOutputStream(...)" See: http://java.sun.com/products/servlet/, AppEngine supports version 2.5 " GDG Karlsruhe DevFest 2012 | Dr. Max Völkel | Calpano.com 3
  • 4. AppEngine is a Servlet Container §  Servlet Container runs a Web Application Archive (WAR) •  Class files •  Static resources •  web.xml" §  In AppEngine also: •  appengine-web.xml, queue.xml, cron.xml, backends.xml, indexes.xml, … GDG Karlsruhe DevFest 2012 | Dr. Max Völkel | Calpano.com 4
  • 5. AppEngine Architecture Java/Python/Go §  Running Code HTTP,  Incoming  Mail,   §  Storing Data Cron,  Taskqueue   •  JVM •  Memcache •  Data store (Old vs. High Replication) Servlet  Container   §  Connect to the outside world   •  Mail (Incoming, Outgoing) JVM   •  Urlfetch §  Delay or schedule work •  Taskqueue Memcache   •  Cron Data  Store   Images   §  More helper services •  Images Urlfetch,  Outgoing  Mail,   •  Users Taskqueue   GDG Karlsruhe DevFest 2012 | Dr. Max Völkel | Calpano.com 5
  • 6. Hello AppEngine §  Typical first test: •  Register, Verify mobile number via SMS •  Create new app “helloworld” •  http://helloworld.appspot.com §  Next step: •  Buy domain name •  Configure … GDG Karlsruhe DevFest 2012 | Dr. Max Völkel | Calpano.com 6
  • 7. 1.  Appspot.com > Create App 2.  Go to “Apps for your Domain” https://www.google.com/a/calpano.com 3.  Organization & Users > Create user ! Only those can send emails 4.  Domain Settings > Domain names > Add domain name or alias > 5.  Go to appspot.com and “Add Domain” GDG Karlsruhe DevFest 2012 | Dr. Max Völkel | Calpano.com 7
  • 8. Application Versions §  http://{version}.{appid}.appspot.com" §  http://{appid].appspot.com à main version (Selected in Dashboard) §  All versions •  Share the same datastore, memcache (!) •  Different logs, stats, instances GDG Karlsruhe DevFest 2012 | Dr. Max Völkel | Calpano.com 8
  • 9. Running Code §  Java 6 VM (experimental Java 7) §  No Files (only read the ones you put in your .war) §  Explicit whitelist which Java classes are allowed (many!) •  https://developers.google.com/appengine/docs/java/jrewhitelist §  F1: 8 cent/hour •  128MB memory (!), •  600MHz CPU §  F2 = F1 * 2; F4 = F1 * 4 §  ! Servlet response max. time is 60 seconds GDG Karlsruhe DevFest 2012 | Dr. Max Völkel | Calpano.com 9
  • 10. Storing Data §  JVM •  Great when “always on” §  Memcache •  Really just a cache §  Data store •  Old: Master-Slave (2 data centers) •  High Replication (3 data centers) GDG Karlsruhe DevFest 2012 | Dr. Max Völkel | Calpano.com 10
  • 11. Connect to the outside world §  Mail •  Incoming •  Send as a servlet request •  Outgoing •  Via Java Mail API, only some headers used •  ! Bounce processing •  http://code.google.com/p/googleappengine/issues/ detail?id=1800 §  Urlfetch •  ! Calling Twitter API etc. GDG Karlsruhe DevFest 2012 | Dr. Max Völkel | Calpano.com 11
  • 12. Delay or schedule work §  Taskqueue Queue queue = QueueFactory.getDefaultQueue();! queue.add(TaskOptions.Builder.withDefaults()! .payload(task));! •  Task is a DeferredTask (has a run() method) •  Very quick to enqueue task •  Task queue service fires requests as HttpRequests at defined rates, unwraps task, runs it •  Max runtime: 10 minutes §  Cron •  Scheduled GET-requests at defined urls GDG Karlsruhe DevFest 2012 | Dr. Max Völkel | Calpano.com 12
  • 13. More helper services §  Images •  Looks like a subset of ImageMagick §  Users •  Log in via Google Account GDG Karlsruhe DevFest 2012 | Dr. Max Völkel | Calpano.com 13
  • 14. Where is a request going? Typical setup §  DNS lookup: CNAME or A-record to Google §  GAE scheduler: •  Request queue for your app •  Boot new instance? Takes ca. 10-30 seconds. §  On instance: •  Run WAR, •  Run servlet GDG Karlsruhe DevFest 2012 | Dr. Max Völkel | Calpano.com 14
  • 15. Instances GDG Karlsruhe DevFest 2012 | Dr. Max Völkel | Calpano.com 15
  • 16. Time is Money. What time? §  Free vs. Payment enabled §  Quotas •  Usage – Free = Billable à Pay •  Resource quota à Fair use limit à Error page §  Data store •  See also http://blog.xam.de/2011/11/analysis-of-datastore-operation- cost.html §  Instance hours •  Usage (code time * complexity + 15 min) •  What??? GDG Karlsruhe DevFest 2012 | Dr. Max Völkel | Calpano.com 16
  • 17. Real time vs. API time §  CPU-intensive code is more expensive •  Is magically speed-up by AppEngine GDG Karlsruhe DevFest 2012 | Dr. Max Völkel | Calpano.com 17
  • 18. The Scheduler Appspot > App Settings > Performance GDG Karlsruhe DevFest 2012 | Dr. Max Völkel | Calpano.com 18
  • 19. Appstats GDG Karlsruhe DevFest 2012 | Dr. Max Völkel | Calpano.com 19
  • 20. More stuff §  Backends •  Requests run for hours (or even days?) §  Logging •  Java.util.logging runs fine §  Blobstore §  Channel ~ like websockets §  XMPP §  Remote API: •  Call services remotely GDG Karlsruhe DevFest 2012 | Dr. Max Völkel | Calpano.com 20
  • 21. Practical Tips on Datastore §  Don’t use JDO abstraction •  Leaky abstraction anyway §  Low-level API quite easy •  Objectify (open source) makes using it nice •  Xydra.org adds versioning/synchronisation GDG Karlsruhe DevFest 2012 | Dr. Max Völkel | Calpano.com 21
  • 22. Real-World Experiences §  Xydra HTTP,  Incoming  Mail,   Cron,  Taskqueue   §  Calpano.com §  SonicMetrics.com Servlet  Container     JVM   Memcache   Data  Store   Images   Urlfetch,  Outgoing  Mail,   Taskqueue   GDG Karlsruhe DevFest 2012 | Dr. Max Völkel | Calpano.com 22
  • 23. When to use AppEngine? §  Best: Spikes in demand §  OK: Outsource server management GDG Karlsruhe DevFest 2012 | Dr. Max Völkel | Calpano.com 23
  • 24. Where to learn more? §  Next talk from Florian Krupicka on Continuous Integration with AppEngine and Maven §  Google webseits – Docu, JavaDocs, Articles, §  Stackoverflow – Googles official developer support moved there §  Books •  Programming Google AppEngine – was OK when it came out, but now too outdated §  Book a workshop from Calpano Consulting J GDG Karlsruhe DevFest 2012 | Dr. Max Völkel | Calpano.com 24
  • 25. HTTP,  Incoming  Mail,   Cron,  Taskqueue   Servlet  Container     JVM   Memcache   Data  Store   Images   Urlfetch,  Outgoing  Mail,   Taskqueue   Dr. Max Völkel GDG Karlsruhe DevFest 2012 | Dr. Max Völkel | Calpano.com 25
  • 26. Contact Information §  Dr. Max Völkel §  Max.voelkel@calpano.com §  +49 171 8359678 §  www.Calpano.com GDG Karlsruhe DevFest 2012 | Dr. Max Völkel | Calpano.com 26