SlideShare a Scribd company logo
8 rules to build web app on
 top of Google AppEngine
         effectively
        Lessons learned




            www.comvai.com
Google App Engine



• Keep in mind Google AppEngine supports
  subset of Java EE specifications. Check at
  http://code.google.com/p/googleappengine/wiki/W



                  www.comvai.com
1. Design Data model as simple as
                possible
•   The App Engine Datastore is not traditional relational SQL database and
    there are several important differences.

•   AppEngine datastore is schemaless. Entities of the same kind can have
    different properties. The application itself is responsible for ensuring that
    entities conform to it.

•   If you want to migrate your existing data model to App Engine you will
    probably need it to redesign.

•   Data-model consistency will be split to the data-model and application.

•   Check app engine datastore limitations to understand it. It gives you better
    overview regarding your future data-model design.
    http://code.google.com/appengine/articles/datastore/overview.html
                                   www.comvai.com
How to
•   Use recommended High Replication Datastore HRD.

•   Use Objectify with JPA annotations over built-in JPA or JDO.

•   Prefer to use unowned relationships between entities.

•   Forget about count entities over filtered query result. Design your UI so
    that count is not being required.

•   If you need statistic calculations, do it on entity update.

•   Note: Building data model on top of built-in either JPA or JDO doesn't
    guarantee that application will be vendor independent because of different
    behavior of AppEngine datastore in some cases. Even it doesn't mean that's
    not possible to do so just requires understanding of AppEngine datastore
    behavior.
                                   www.comvai.com
2. Handle your data model via non
     default version of your GAE app



•   The AppEngine allows you to deploy more than one non default version of
    your application. Deploy specifically designed application to perform update
    of your data model only as a non default version to be independent from
    your main application release cycle.




                                  www.comvai.com
3. Price shields tips

•   Use Appstats out of the box tool to detect datastore bottleneck. Just plug
    in. It helps you to find the hidden unnecessary datastore operations that are
    dragging you down.

•   Use memcache. Datastore operations costs money and caching of "static"
    data could save you from using unnecessary datastore operations.

•   Use as many static files as possible. Static files are handled with high
    performance static front-end servers (CDN) which are highly optimized for
    this type of content.

•   See more
    http://www.gregtracy.com/revisiting-google-app-engines-pricing-changes

                                  www.comvai.com
4. Improve cold startup time
•   AppEngine instances starts quite often thus cold startup time (known as
    well as warmup request, loading request) is more important than in
    traditional Java EE application. Good startup time improves user experience.

•   Minimize number of your application java library dependencies as much as
    possible. Make sure if all your libs are really needed. Otherwise it will slow
    your cold startup time down.

•   Don't use JSP if you are already using another Frontend framework

•   Using JSPs will add additional libraries into your lib directory that are used
    for processing of JSP.
    http://www.listry.com/blog/2010/03/google-app-engine-cold-start-tip-dont

•   Use Objectify over built-in JPA or JDO.
    http://www.listry.com/blog/2010/03/google-app-engine-cold-start-guide-for
                                   www.comvai.com
5. Prefer Google Guice as DI framework




•   It's simple, small in size and powerful library and you probably won't need
    more.




                                  www.comvai.com
6. Use GWT for your desktop like web
                app


•   GWT together with GAE offers lot of built-in technics to improve your
    web app performance. Built-in features coming as advice from the book
    High Performance Web Sites.

•   It's better to have only one framework for the UI even it means to build
    some components yourself. Among other things it means less dependencies
    and simplified upgrade process.




                                www.comvai.com
How to GWT


•   Use built-in optimization technics with help of GWT's ClientBundles.

•   ClientBundles and ImageResource makes using images more efficient.

•   CssResource for CSS minification, CSS image strips and much more, see
    docs for ClientBundles (DataResource, TextResource,
    ExternalTextResource).

•   Switch on minification and obfuscation of the Java-JavaScript compiler.




                                  www.comvai.com
How to GAE



•   Content Delivery Network CDN

•   Gzip compression

•   Memcache




                            www.comvai.com
7. Use GWT MVP pattern




•   It's not easy to work with but worth of time. GWT has built-in support for
    MVP pattern.




                                 www.comvai.com
Benefits

•   Well suited for large scale application.

•   Separation of functionality into components. Helps simplify UI unit testing.

•   Built-in browser history management. MVP is not concerned with browser
    history management, but Activities and Places may be used very well with
    MVP development.

•   Built-in event bus as a central point for app events.

•   Caching all of your code books via GWT event bus as a central pipe to go
    to the backend.


                                   www.comvai.com
8. Use Apache Wicket for website

•   The component based web framework. Version 1.5 or higher optimized for
    Google AppEngine

•   In Java ecosystem there is a lot of front-end frameworks thus to choose the
    right one depends on many varying factors. We like Apache Wicket because
    it's Java, feature rich component-oriented framework with good API. As
    version 1.5 it very well operates on App Engine. So it's up to you and your
    requirements but ones Apache Wicket is good fit for you we recommend it.

•   Add wicketstuff-gae-initializer dependency along side with wicket core
    dependencies

•   Alternative Play framework as it has specific module for App Engine.

                                 www.comvai.com
•   Visit http://www.comvai.com/google-app-engine-development and register
    yourself to get development of your Google AppEngine project's Proof of
    Concept for free.

•   Validate suitability of your project to be built on top of Google App Engine.




                                  www.comvai.com

More Related Content

Viewers also liked

Studiereis Beijing Ppt
Studiereis Beijing PptStudiereis Beijing Ppt
Studiereis Beijing Ppt
Petra_Jungjohann
 
I do mime and you guess what I´m doing
I do mime and you guess what I´m  doingI do mime and you guess what I´m  doing
I do mime and you guess what I´m doing
43650271
 
Ellis Patents VRT+04 Vulcan Stainless Steel Cable Cleats
Ellis Patents VRT+04 Vulcan Stainless Steel Cable CleatsEllis Patents VRT+04 Vulcan Stainless Steel Cable Cleats
Ellis Patents VRT+04 Vulcan Stainless Steel Cable Cleats
Thorne & Derrick International
 
Jacqueline smit
Jacqueline smitJacqueline smit
Jacqueline smit
Radiodays Europe
 
Project management week 4 for students
Project management week 4 for studentsProject management week 4 for students
Project management week 4 for students
Gaffar Rampage
 
Juice Wireless Blog
Juice Wireless BlogJuice Wireless Blog
Juice Wireless Blog
Ashley Garvey
 
Teens helping each other 2
Teens helping each other 2Teens helping each other 2
Teens helping each other 2
econroy
 
Tabla
TablaTabla
Tablamonse
 
Winterse foto’s
Winterse foto’sWinterse foto’s
Winterse foto’senricokolk
 
Digital natives rug
Digital natives rugDigital natives rug
Digital natives rug
FeringaJ
 
SAAS Discontinued_v2 express scripts
SAAS Discontinued_v2  express scriptsSAAS Discontinued_v2  express scripts
SAAS Discontinued_v2 express scripts
finance14
 
Caso florence cassez
Caso florence cassezCaso florence cassez
Caso florence cassez
Urisito
 
Cultural Competence
Cultural CompetenceCultural Competence
Cultural Competence
kutelemedicine
 
Web CRM One 2.0
Web CRM One 2.0Web CRM One 2.0
Web CRM One 2.0
Run Time Solutions
 
Ellis Patents VRT+10 Vulcan Stainless Steel Cable Cleats
Ellis Patents VRT+10 Vulcan Stainless Steel Cable CleatsEllis Patents VRT+10 Vulcan Stainless Steel Cable Cleats
Ellis Patents VRT+10 Vulcan Stainless Steel Cable Cleats
Thorne & Derrick International
 
Actor network manager - MoTIS June Project
Actor network manager - MoTIS June ProjectActor network manager - MoTIS June Project
Actor network manager - MoTIS June Project
Anastasya Azarova
 

Viewers also liked (16)

Studiereis Beijing Ppt
Studiereis Beijing PptStudiereis Beijing Ppt
Studiereis Beijing Ppt
 
I do mime and you guess what I´m doing
I do mime and you guess what I´m  doingI do mime and you guess what I´m  doing
I do mime and you guess what I´m doing
 
Ellis Patents VRT+04 Vulcan Stainless Steel Cable Cleats
Ellis Patents VRT+04 Vulcan Stainless Steel Cable CleatsEllis Patents VRT+04 Vulcan Stainless Steel Cable Cleats
Ellis Patents VRT+04 Vulcan Stainless Steel Cable Cleats
 
Jacqueline smit
Jacqueline smitJacqueline smit
Jacqueline smit
 
Project management week 4 for students
Project management week 4 for studentsProject management week 4 for students
Project management week 4 for students
 
Juice Wireless Blog
Juice Wireless BlogJuice Wireless Blog
Juice Wireless Blog
 
Teens helping each other 2
Teens helping each other 2Teens helping each other 2
Teens helping each other 2
 
Tabla
TablaTabla
Tabla
 
Winterse foto’s
Winterse foto’sWinterse foto’s
Winterse foto’s
 
Digital natives rug
Digital natives rugDigital natives rug
Digital natives rug
 
SAAS Discontinued_v2 express scripts
SAAS Discontinued_v2  express scriptsSAAS Discontinued_v2  express scripts
SAAS Discontinued_v2 express scripts
 
Caso florence cassez
Caso florence cassezCaso florence cassez
Caso florence cassez
 
Cultural Competence
Cultural CompetenceCultural Competence
Cultural Competence
 
Web CRM One 2.0
Web CRM One 2.0Web CRM One 2.0
Web CRM One 2.0
 
Ellis Patents VRT+10 Vulcan Stainless Steel Cable Cleats
Ellis Patents VRT+10 Vulcan Stainless Steel Cable CleatsEllis Patents VRT+10 Vulcan Stainless Steel Cable Cleats
Ellis Patents VRT+10 Vulcan Stainless Steel Cable Cleats
 
Actor network manager - MoTIS June Project
Actor network manager - MoTIS June ProjectActor network manager - MoTIS June Project
Actor network manager - MoTIS June Project
 

More from Aurel Medvegy

Web software development
Web software developmentWeb software development
Web software development
Aurel Medvegy
 
Web 2.0 development
Web 2.0 developmentWeb 2.0 development
Web 2.0 development
Aurel Medvegy
 
Make google app
Make google appMake google app
Make google app
Aurel Medvegy
 
Google webtools
Google webtoolsGoogle webtools
Google webtools
Aurel Medvegy
 
Google websites
Google websitesGoogle websites
Google websites
Aurel Medvegy
 
Google website applications
Google website applicationsGoogle website applications
Google website applications
Aurel Medvegy
 
Google web tools
Google web toolsGoogle web tools
Google web tools
Aurel Medvegy
 
Google web tools kit
Google web tools kitGoogle web tools kit
Google web tools kit
Aurel Medvegy
 
Google web software
Google web softwareGoogle web software
Google web software
Aurel Medvegy
 
Google web development
Google web developmentGoogle web development
Google web development
Aurel Medvegy
 
Google web code
Google web codeGoogle web code
Google web code
Aurel Medvegy
 
Google web 2.0
Google web 2.0Google web 2.0
Google web 2.0
Aurel Medvegy
 
Google sites development
Google sites developmentGoogle sites development
Google sites development
Aurel Medvegy
 
Google site development
Google site developmentGoogle site development
Google site development
Aurel Medvegy
 
Google development
Google developmentGoogle development
Google development
Aurel Medvegy
 
Google apps reseller
Google apps resellerGoogle apps reseller
Google apps reseller
Aurel Medvegy
 
Google apps development
Google apps developmentGoogle apps development
Google apps development
Aurel Medvegy
 
Google appps
Google apppsGoogle appps
Google appps
Aurel Medvegy
 
Google appengine
Google appengineGoogle appengine
Google appengine
Aurel Medvegy
 
Google appengine apps
Google appengine appsGoogle appengine apps
Google appengine apps
Aurel Medvegy
 

More from Aurel Medvegy (20)

Web software development
Web software developmentWeb software development
Web software development
 
Web 2.0 development
Web 2.0 developmentWeb 2.0 development
Web 2.0 development
 
Make google app
Make google appMake google app
Make google app
 
Google webtools
Google webtoolsGoogle webtools
Google webtools
 
Google websites
Google websitesGoogle websites
Google websites
 
Google website applications
Google website applicationsGoogle website applications
Google website applications
 
Google web tools
Google web toolsGoogle web tools
Google web tools
 
Google web tools kit
Google web tools kitGoogle web tools kit
Google web tools kit
 
Google web software
Google web softwareGoogle web software
Google web software
 
Google web development
Google web developmentGoogle web development
Google web development
 
Google web code
Google web codeGoogle web code
Google web code
 
Google web 2.0
Google web 2.0Google web 2.0
Google web 2.0
 
Google sites development
Google sites developmentGoogle sites development
Google sites development
 
Google site development
Google site developmentGoogle site development
Google site development
 
Google development
Google developmentGoogle development
Google development
 
Google apps reseller
Google apps resellerGoogle apps reseller
Google apps reseller
 
Google apps development
Google apps developmentGoogle apps development
Google apps development
 
Google appps
Google apppsGoogle appps
Google appps
 
Google appengine
Google appengineGoogle appengine
Google appengine
 
Google appengine apps
Google appengine appsGoogle appengine apps
Google appengine apps
 

Recently uploaded

Connector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectors
Connector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectorsConnector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectors
Connector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectors
DianaGray10
 
"Scaling RAG Applications to serve millions of users", Kevin Goedecke
"Scaling RAG Applications to serve millions of users",  Kevin Goedecke"Scaling RAG Applications to serve millions of users",  Kevin Goedecke
"Scaling RAG Applications to serve millions of users", Kevin Goedecke
Fwdays
 
ScyllaDB Tablets: Rethinking Replication
ScyllaDB Tablets: Rethinking ReplicationScyllaDB Tablets: Rethinking Replication
ScyllaDB Tablets: Rethinking Replication
ScyllaDB
 
Christine's Supplier Sourcing Presentaion.pptx
Christine's Supplier Sourcing Presentaion.pptxChristine's Supplier Sourcing Presentaion.pptx
Christine's Supplier Sourcing Presentaion.pptx
christinelarrosa
 
GNSS spoofing via SDR (Criptored Talks 2024)
GNSS spoofing via SDR (Criptored Talks 2024)GNSS spoofing via SDR (Criptored Talks 2024)
GNSS spoofing via SDR (Criptored Talks 2024)
Javier Junquera
 
QR Secure: A Hybrid Approach Using Machine Learning and Security Validation F...
QR Secure: A Hybrid Approach Using Machine Learning and Security Validation F...QR Secure: A Hybrid Approach Using Machine Learning and Security Validation F...
QR Secure: A Hybrid Approach Using Machine Learning and Security Validation F...
AlexanderRichford
 
What is an RPA CoE? Session 2 – CoE Roles
What is an RPA CoE?  Session 2 – CoE RolesWhat is an RPA CoE?  Session 2 – CoE Roles
What is an RPA CoE? Session 2 – CoE Roles
DianaGray10
 
Introducing BoxLang : A new JVM language for productivity and modularity!
Introducing BoxLang : A new JVM language for productivity and modularity!Introducing BoxLang : A new JVM language for productivity and modularity!
Introducing BoxLang : A new JVM language for productivity and modularity!
Ortus Solutions, Corp
 
QA or the Highway - Component Testing: Bridging the gap between frontend appl...
QA or the Highway - Component Testing: Bridging the gap between frontend appl...QA or the Highway - Component Testing: Bridging the gap between frontend appl...
QA or the Highway - Component Testing: Bridging the gap between frontend appl...
zjhamm304
 
What is an RPA CoE? Session 1 – CoE Vision
What is an RPA CoE?  Session 1 – CoE VisionWhat is an RPA CoE?  Session 1 – CoE Vision
What is an RPA CoE? Session 1 – CoE Vision
DianaGray10
 
Day 2 - Intro to UiPath Studio Fundamentals
Day 2 - Intro to UiPath Studio FundamentalsDay 2 - Intro to UiPath Studio Fundamentals
Day 2 - Intro to UiPath Studio Fundamentals
UiPathCommunity
 
Poznań ACE event - 19.06.2024 Team 24 Wrapup slidedeck
Poznań ACE event - 19.06.2024 Team 24 Wrapup slidedeckPoznań ACE event - 19.06.2024 Team 24 Wrapup slidedeck
Poznań ACE event - 19.06.2024 Team 24 Wrapup slidedeck
FilipTomaszewski5
 
"NATO Hackathon Winner: AI-Powered Drug Search", Taras Kloba
"NATO Hackathon Winner: AI-Powered Drug Search",  Taras Kloba"NATO Hackathon Winner: AI-Powered Drug Search",  Taras Kloba
"NATO Hackathon Winner: AI-Powered Drug Search", Taras Kloba
Fwdays
 
Biomedical Knowledge Graphs for Data Scientists and Bioinformaticians
Biomedical Knowledge Graphs for Data Scientists and BioinformaticiansBiomedical Knowledge Graphs for Data Scientists and Bioinformaticians
Biomedical Knowledge Graphs for Data Scientists and Bioinformaticians
Neo4j
 
JavaLand 2024: Application Development Green Masterplan
JavaLand 2024: Application Development Green MasterplanJavaLand 2024: Application Development Green Masterplan
JavaLand 2024: Application Development Green Masterplan
Miro Wengner
 
Principle of conventional tomography-Bibash Shahi ppt..pptx
Principle of conventional tomography-Bibash Shahi ppt..pptxPrinciple of conventional tomography-Bibash Shahi ppt..pptx
Principle of conventional tomography-Bibash Shahi ppt..pptx
BibashShahi
 
Y-Combinator seed pitch deck template PP
Y-Combinator seed pitch deck template PPY-Combinator seed pitch deck template PP
Y-Combinator seed pitch deck template PP
c5vrf27qcz
 
PRODUCT LISTING OPTIMIZATION PRESENTATION.pptx
PRODUCT LISTING OPTIMIZATION PRESENTATION.pptxPRODUCT LISTING OPTIMIZATION PRESENTATION.pptx
PRODUCT LISTING OPTIMIZATION PRESENTATION.pptx
christinelarrosa
 
Harnessing the Power of NLP and Knowledge Graphs for Opioid Research
Harnessing the Power of NLP and Knowledge Graphs for Opioid ResearchHarnessing the Power of NLP and Knowledge Graphs for Opioid Research
Harnessing the Power of NLP and Knowledge Graphs for Opioid Research
Neo4j
 
Dandelion Hashtable: beyond billion requests per second on a commodity server
Dandelion Hashtable: beyond billion requests per second on a commodity serverDandelion Hashtable: beyond billion requests per second on a commodity server
Dandelion Hashtable: beyond billion requests per second on a commodity server
Antonios Katsarakis
 

Recently uploaded (20)

Connector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectors
Connector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectorsConnector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectors
Connector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectors
 
"Scaling RAG Applications to serve millions of users", Kevin Goedecke
"Scaling RAG Applications to serve millions of users",  Kevin Goedecke"Scaling RAG Applications to serve millions of users",  Kevin Goedecke
"Scaling RAG Applications to serve millions of users", Kevin Goedecke
 
ScyllaDB Tablets: Rethinking Replication
ScyllaDB Tablets: Rethinking ReplicationScyllaDB Tablets: Rethinking Replication
ScyllaDB Tablets: Rethinking Replication
 
Christine's Supplier Sourcing Presentaion.pptx
Christine's Supplier Sourcing Presentaion.pptxChristine's Supplier Sourcing Presentaion.pptx
Christine's Supplier Sourcing Presentaion.pptx
 
GNSS spoofing via SDR (Criptored Talks 2024)
GNSS spoofing via SDR (Criptored Talks 2024)GNSS spoofing via SDR (Criptored Talks 2024)
GNSS spoofing via SDR (Criptored Talks 2024)
 
QR Secure: A Hybrid Approach Using Machine Learning and Security Validation F...
QR Secure: A Hybrid Approach Using Machine Learning and Security Validation F...QR Secure: A Hybrid Approach Using Machine Learning and Security Validation F...
QR Secure: A Hybrid Approach Using Machine Learning and Security Validation F...
 
What is an RPA CoE? Session 2 – CoE Roles
What is an RPA CoE?  Session 2 – CoE RolesWhat is an RPA CoE?  Session 2 – CoE Roles
What is an RPA CoE? Session 2 – CoE Roles
 
Introducing BoxLang : A new JVM language for productivity and modularity!
Introducing BoxLang : A new JVM language for productivity and modularity!Introducing BoxLang : A new JVM language for productivity and modularity!
Introducing BoxLang : A new JVM language for productivity and modularity!
 
QA or the Highway - Component Testing: Bridging the gap between frontend appl...
QA or the Highway - Component Testing: Bridging the gap between frontend appl...QA or the Highway - Component Testing: Bridging the gap between frontend appl...
QA or the Highway - Component Testing: Bridging the gap between frontend appl...
 
What is an RPA CoE? Session 1 – CoE Vision
What is an RPA CoE?  Session 1 – CoE VisionWhat is an RPA CoE?  Session 1 – CoE Vision
What is an RPA CoE? Session 1 – CoE Vision
 
Day 2 - Intro to UiPath Studio Fundamentals
Day 2 - Intro to UiPath Studio FundamentalsDay 2 - Intro to UiPath Studio Fundamentals
Day 2 - Intro to UiPath Studio Fundamentals
 
Poznań ACE event - 19.06.2024 Team 24 Wrapup slidedeck
Poznań ACE event - 19.06.2024 Team 24 Wrapup slidedeckPoznań ACE event - 19.06.2024 Team 24 Wrapup slidedeck
Poznań ACE event - 19.06.2024 Team 24 Wrapup slidedeck
 
"NATO Hackathon Winner: AI-Powered Drug Search", Taras Kloba
"NATO Hackathon Winner: AI-Powered Drug Search",  Taras Kloba"NATO Hackathon Winner: AI-Powered Drug Search",  Taras Kloba
"NATO Hackathon Winner: AI-Powered Drug Search", Taras Kloba
 
Biomedical Knowledge Graphs for Data Scientists and Bioinformaticians
Biomedical Knowledge Graphs for Data Scientists and BioinformaticiansBiomedical Knowledge Graphs for Data Scientists and Bioinformaticians
Biomedical Knowledge Graphs for Data Scientists and Bioinformaticians
 
JavaLand 2024: Application Development Green Masterplan
JavaLand 2024: Application Development Green MasterplanJavaLand 2024: Application Development Green Masterplan
JavaLand 2024: Application Development Green Masterplan
 
Principle of conventional tomography-Bibash Shahi ppt..pptx
Principle of conventional tomography-Bibash Shahi ppt..pptxPrinciple of conventional tomography-Bibash Shahi ppt..pptx
Principle of conventional tomography-Bibash Shahi ppt..pptx
 
Y-Combinator seed pitch deck template PP
Y-Combinator seed pitch deck template PPY-Combinator seed pitch deck template PP
Y-Combinator seed pitch deck template PP
 
PRODUCT LISTING OPTIMIZATION PRESENTATION.pptx
PRODUCT LISTING OPTIMIZATION PRESENTATION.pptxPRODUCT LISTING OPTIMIZATION PRESENTATION.pptx
PRODUCT LISTING OPTIMIZATION PRESENTATION.pptx
 
Harnessing the Power of NLP and Knowledge Graphs for Opioid Research
Harnessing the Power of NLP and Knowledge Graphs for Opioid ResearchHarnessing the Power of NLP and Knowledge Graphs for Opioid Research
Harnessing the Power of NLP and Knowledge Graphs for Opioid Research
 
Dandelion Hashtable: beyond billion requests per second on a commodity server
Dandelion Hashtable: beyond billion requests per second on a commodity serverDandelion Hashtable: beyond billion requests per second on a commodity server
Dandelion Hashtable: beyond billion requests per second on a commodity server
 

App engine applications

  • 1. 8 rules to build web app on top of Google AppEngine effectively Lessons learned www.comvai.com
  • 2. Google App Engine • Keep in mind Google AppEngine supports subset of Java EE specifications. Check at http://code.google.com/p/googleappengine/wiki/W www.comvai.com
  • 3. 1. Design Data model as simple as possible • The App Engine Datastore is not traditional relational SQL database and there are several important differences. • AppEngine datastore is schemaless. Entities of the same kind can have different properties. The application itself is responsible for ensuring that entities conform to it. • If you want to migrate your existing data model to App Engine you will probably need it to redesign. • Data-model consistency will be split to the data-model and application. • Check app engine datastore limitations to understand it. It gives you better overview regarding your future data-model design. http://code.google.com/appengine/articles/datastore/overview.html www.comvai.com
  • 4. How to • Use recommended High Replication Datastore HRD. • Use Objectify with JPA annotations over built-in JPA or JDO. • Prefer to use unowned relationships between entities. • Forget about count entities over filtered query result. Design your UI so that count is not being required. • If you need statistic calculations, do it on entity update. • Note: Building data model on top of built-in either JPA or JDO doesn't guarantee that application will be vendor independent because of different behavior of AppEngine datastore in some cases. Even it doesn't mean that's not possible to do so just requires understanding of AppEngine datastore behavior. www.comvai.com
  • 5. 2. Handle your data model via non default version of your GAE app • The AppEngine allows you to deploy more than one non default version of your application. Deploy specifically designed application to perform update of your data model only as a non default version to be independent from your main application release cycle. www.comvai.com
  • 6. 3. Price shields tips • Use Appstats out of the box tool to detect datastore bottleneck. Just plug in. It helps you to find the hidden unnecessary datastore operations that are dragging you down. • Use memcache. Datastore operations costs money and caching of "static" data could save you from using unnecessary datastore operations. • Use as many static files as possible. Static files are handled with high performance static front-end servers (CDN) which are highly optimized for this type of content. • See more http://www.gregtracy.com/revisiting-google-app-engines-pricing-changes www.comvai.com
  • 7. 4. Improve cold startup time • AppEngine instances starts quite often thus cold startup time (known as well as warmup request, loading request) is more important than in traditional Java EE application. Good startup time improves user experience. • Minimize number of your application java library dependencies as much as possible. Make sure if all your libs are really needed. Otherwise it will slow your cold startup time down. • Don't use JSP if you are already using another Frontend framework • Using JSPs will add additional libraries into your lib directory that are used for processing of JSP. http://www.listry.com/blog/2010/03/google-app-engine-cold-start-tip-dont • Use Objectify over built-in JPA or JDO. http://www.listry.com/blog/2010/03/google-app-engine-cold-start-guide-for www.comvai.com
  • 8. 5. Prefer Google Guice as DI framework • It's simple, small in size and powerful library and you probably won't need more. www.comvai.com
  • 9. 6. Use GWT for your desktop like web app • GWT together with GAE offers lot of built-in technics to improve your web app performance. Built-in features coming as advice from the book High Performance Web Sites. • It's better to have only one framework for the UI even it means to build some components yourself. Among other things it means less dependencies and simplified upgrade process. www.comvai.com
  • 10. How to GWT • Use built-in optimization technics with help of GWT's ClientBundles. • ClientBundles and ImageResource makes using images more efficient. • CssResource for CSS minification, CSS image strips and much more, see docs for ClientBundles (DataResource, TextResource, ExternalTextResource). • Switch on minification and obfuscation of the Java-JavaScript compiler. www.comvai.com
  • 11. How to GAE • Content Delivery Network CDN • Gzip compression • Memcache www.comvai.com
  • 12. 7. Use GWT MVP pattern • It's not easy to work with but worth of time. GWT has built-in support for MVP pattern. www.comvai.com
  • 13. Benefits • Well suited for large scale application. • Separation of functionality into components. Helps simplify UI unit testing. • Built-in browser history management. MVP is not concerned with browser history management, but Activities and Places may be used very well with MVP development. • Built-in event bus as a central point for app events. • Caching all of your code books via GWT event bus as a central pipe to go to the backend. www.comvai.com
  • 14. 8. Use Apache Wicket for website • The component based web framework. Version 1.5 or higher optimized for Google AppEngine • In Java ecosystem there is a lot of front-end frameworks thus to choose the right one depends on many varying factors. We like Apache Wicket because it's Java, feature rich component-oriented framework with good API. As version 1.5 it very well operates on App Engine. So it's up to you and your requirements but ones Apache Wicket is good fit for you we recommend it. • Add wicketstuff-gae-initializer dependency along side with wicket core dependencies • Alternative Play framework as it has specific module for App Engine. www.comvai.com
  • 15. Visit http://www.comvai.com/google-app-engine-development and register yourself to get development of your Google AppEngine project's Proof of Concept for free. • Validate suitability of your project to be built on top of Google App Engine. www.comvai.com