SlideShare a Scribd company logo
GOOGLE APP ENGINE FOR THE
       ENTERPRISE

         Kayode Odeyemi
         Technical Architect, Opevel



       Cloud Camp Lagos, 2011

              May 28th, 2011
The Cloud

1. Convenience
       Pay for what you use

2. On-Demand network access
       Use as much as you need, whenever you need

3. Minimal management effort
       Don’t have to build your own infrastructure
Cloud Computing – As seen by Gartner
WHAT IS GOOGLE APP ENGINE?


•   Google’s own infrastructure for running web applications
•   The P (Platform) of Cloud Computing.
•   App Engine is HTTP Server, but does not serve HTML
•   Host web services for integration
•   Consume other web services
•   Various authentication options: Oauth, Google Account

So, Google App Engine falls under PaaS of Cloud Computing
WHY GOOGLE APP ENGINE?



• Easy to build

• Easy to maintain

• Easy to Scale
HOW DOES IT WORK?


• Build

• Push

• Never worry about scalability
HOW DOES IT WORK?


• Build

   – Download SDK
   – Of Java, Python or GO Runtime
   – Build with dev tools such as GPE (Eclipse plugin), Netbeans,
     AppLauncher
HOW DOES IT WORK?


• Push

   – Deploy easily with simple commands
      ./appengine-java-sdk/bin/appcfg.sh update myapp/war

   – Administer in Administration console (App Engine
     Dashboard)
HOW DOES IT WORK?


• Scalability

   – Automatic performance improvements as traffic on your
     app increases
      See more in GAE Dashboard

   – Automatic instance creation to handle load as well as
     distribution of resources
      CPU, Bandwidth, Quota, Memory

   – Fault Tolerance
PERFORMANCE & SCALABILITY


• Built with scalability as top priority
• Memcache
   – Distributed RAM cache
   – Heavily dependent on mecache size allocated. The more the merrier
INTEGRATION




  Authenticati                          Google    Google
      on
                 OpenSocial   XMPP
                                         Apps    Data APIs




                 Facebook      GEO     YouTube
    Django                                        AJAX
                    API       (Maps)     API
APPLICATION ENVIRONMENT – BUILDING BLOCKS

• Java Runtime

• Python Runtime

• GO Runtime

• Datastore

• Suite of APIs to do common stuffs

   –   URL Fetch
   –   Mail
   –   Memcache
   –   Image Manipulation
   –   Channel
   –   Blobstore
APPLICATION ENVIRONMENT – BUILDING BLOCKS

JAVA
Same technologies / APIs you are used to
KNOW HOW YOUR APP IS DOING – PLATFORM MANAGEMENT

PYTHON

• Communicates via CGI protocol
• Supports Django
• Supports Python 2.5+


  Datastore   Memcache    URL Fetch          Mail   Blobstore


    CGI          CGI        CGI              CGI      CGI


                         Google App Engine
DATASTORE – OBJECT PERSISTENCE

• Built on BigTable
• Non-relational database management system
• Consistent read and write even in a distributed network



                            Storage 2


      Storage 1                                   Storage 3
ADMINISTERING YOUR APP – The Admin Console

•   Create a new application

•   View request and error logs and analyze traffic

•   Browse your application's datastore and manage indexes

•   Administer your datastore

•   View your application's instances

•   Manage task queues, allowing for viewing, deleting or running individual tasks
    immediately

•   Test new versions of your application and switch the version that your users see
ADMINISTERING YOUR DATASTORE
URL Fetch

• Consume external resources with your app
• Supports HTTP & HTTPS



String message = URLEncoder.encode("my message", "UTF-8");

           try {
               URL url = new
   URL("http://www.example.com/comment");
               HttpURLConnection connection =
   (HttpURLConnection) url.openConnection();
               connection.setDoOutput(true);
               connection.setRequestMethod("POST");
URL Fetch – Write and return response to client

            OutputStreamWriter writer = new
   OutputStreamWriter(connection.getOutputStream());
               writer.write("message=" + message);
               writer.close();

               if (connection.getResponseCode() ==
   HttpURLConnection.HTTP_OK) {
                   // OK
               } else {
                   // Server returned HTTP error code.
               }
           } catch (MalformedURLException e) {
               // ...
           } catch (IOException e) {
               // ...
           }

Note: Not all java.io classes are supported in app engine. Check whitelisted JRE
   classes
Mail

• Send mail using JavaMail or Low level API

try {
               Message msg = new MimeMessage(session);
               msg.setFrom(new
  InternetAddress("admin@example.com", "Example.com Admin"));
               msg.addRecipient(Message.RecipientType.TO,
                                new
  InternetAddress("user@example.com", "Mr. User"));
               msg.setSubject("Your Example.com account has been
  activated");
               msg.setText(msgBody);
               Transport.send(msg);

          } catch (AddressException e) {
              // ...
          } catch (MessagingException e) {
Memcache

• Distributed in-memory data-cache

• Improve performance

• You don’t have to always persist storage in datastore. Some stuffs can be
  stored in-memory


// A reference to the cache service
private final Cache cache = new Cache(MemcacheServiceFactory
    .getMemcacheService());
Channel API

• Communicate between your application and Google Servers
  asynchronously.

• Very useful to chat room apps, collaborative apps
Blobstore

• Serve large data objects
• Insert / Retrieve / Edit, in bulk
• Flexible
    – Direct access to blob data in memory
• Fast access to blob data
    – 5MB in ~ 2s



// Simple servlet to create the actual upload url
String uploadurl =
    blobstoreservice.createUploadUrl(“/Upload”);


// Called after upload
Map<String, Blobkey> blobkeys =
   blobstoreservice.getUploadedBlobs(req);
Google App Engine for Business

• Enterprise Application Management
    – Centralized domain console
• Enterprise reliability and support
    – 99.9% Service Level Agreement
    – Enterprise support
• Hosted SQL
    – Relational SQL database in the cloud
• SSL on your domain
• Extremely secure by default
    – Integrated Single Sign-on
• Pricing that makes sense
    – Apps cost $8 per user, up to $1000 max per month (Pre-IO2011 Pricing)
ONLINE REFERENCES

Get Started with App Engine
http://code.google.com/appengine

Get the SDK and build cool stuffs
http://code.google.com/appengine/downloads.html

Google Apps for Business
http://code.google.com/appengine/business/

BigTable
http://labs.google.com/papers/bigtable.html

Google I/O 2011
http://www.google.com/events/io/2011/index-live.html

Introduction to Google Cloud Platform Technologies by Chris Schalk – Google Developer Advocate
http://goo.gl/zmxvF

Sample projects
http://goo.gl/djgMS
Questions

• Website      - http://opevel.com

• Twitter : @opevel @googledevtools #gwt @charyorde

• Opevel Services

   – Google App Deployment

   – Custom Application Development on Google App Engine

   – Integration services with legacy systems

More Related Content

PDF
Gaelyk - SpringOne2GX - 2010 - Guillaume Laforge
PDF
Advanced moduledevelopment d6_slideshare
PPTX
SenchaCon 2016: The Modern Toolchain - Ross Gerbasi
PPTX
SenchaCon 2016: A Look Ahead: Survey Next-Gen Modern Browser APIs - Shikhir S...
PPTX
Break out of The Box - Part 2
PPTX
Building and Managing Projects with Maven
PPTX
Building and managing java projects with maven part-III
PDF
AD102 - Break out of the Box
Gaelyk - SpringOne2GX - 2010 - Guillaume Laforge
Advanced moduledevelopment d6_slideshare
SenchaCon 2016: The Modern Toolchain - Ross Gerbasi
SenchaCon 2016: A Look Ahead: Survey Next-Gen Modern Browser APIs - Shikhir S...
Break out of The Box - Part 2
Building and Managing Projects with Maven
Building and managing java projects with maven part-III
AD102 - Break out of the Box

What's hot (20)

PPTX
IBM Connect 2016 - Break out of the Box
PPT
DSpace UI Prototype Challenge: Spring Boot + Thymeleaf
PDF
JavaScript Service Worker Design Patterns for Better User Experience
PPTX
SenchaCon 2016: Learn the Top 10 Best ES2015 Features - Lee Boonstra
PPTX
SenchaCon 2016: Building a Faceted Catalog of Video Game Assets Using Ext JS ...
PDF
Build Amazing Add-ons for Atlassian JIRA and Confluence
KEY
modern module development - Ken Barber 2012 Edinburgh Puppet Camp
PDF
Node.js and couchbase Full Stack JSON - Munich NoSQL
PDF
Here Be Dragons - Debugging WordPress
PPT
JSP Part 2
PDF
COScheduler
PDF
Java EE 7, what's in it for me?
PPTX
WordCamp Ann Arbor 2015 Introduction to Backbone + WP REST API
PPTX
SenchaCon 2016: Building Enterprise Ext JS Apps with Mavenized Sencha Cmd - F...
PDF
Choosing a Javascript Framework
PPT
Build Your Own CMS with Apache Sling
PDF
Finally, Professional Frontend Dev with ReactJS, WebPack & Symfony (Symfony C...
PDF
Aad Versteden | State-of-the-art web applications fuelled by Linked Data awar...
KEY
Exciting JavaScript - Part II
PDF
Padrino - the Godfather of Sinatra
IBM Connect 2016 - Break out of the Box
DSpace UI Prototype Challenge: Spring Boot + Thymeleaf
JavaScript Service Worker Design Patterns for Better User Experience
SenchaCon 2016: Learn the Top 10 Best ES2015 Features - Lee Boonstra
SenchaCon 2016: Building a Faceted Catalog of Video Game Assets Using Ext JS ...
Build Amazing Add-ons for Atlassian JIRA and Confluence
modern module development - Ken Barber 2012 Edinburgh Puppet Camp
Node.js and couchbase Full Stack JSON - Munich NoSQL
Here Be Dragons - Debugging WordPress
JSP Part 2
COScheduler
Java EE 7, what's in it for me?
WordCamp Ann Arbor 2015 Introduction to Backbone + WP REST API
SenchaCon 2016: Building Enterprise Ext JS Apps with Mavenized Sencha Cmd - F...
Choosing a Javascript Framework
Build Your Own CMS with Apache Sling
Finally, Professional Frontend Dev with ReactJS, WebPack & Symfony (Symfony C...
Aad Versteden | State-of-the-art web applications fuelled by Linked Data awar...
Exciting JavaScript - Part II
Padrino - the Godfather of Sinatra
Ad

Viewers also liked (14)

PDF
Top 10 preso
PDF
Showcasing drupal
PDF
Opevel social-enterprise-platform osep-google_apps_slideshare
PDF
Interoperability betweendrupalandgoogleapps
PDF
Practical Groovy Domain-Specific Languages - Guillaume Laforge - Usi 2009
PDF
Whats New In Groovy 1.6?
PDF
Groovy to infinity and beyond - SpringOne2GX - 2010 - Guillaume Laforge
PDF
Groovy 2 and beyond
PDF
Groovy workshop à Mix-IT 2013
PDF
Lift off with Groovy 2 at JavaOne 2013
PDF
Les nouveautés de Groovy 2 -- Mix-IT 2013
PDF
Visual Design with Data
PDF
3 Things Every Sales Team Needs to Be Thinking About in 2017
PDF
How to Become a Thought Leader in Your Niche
Top 10 preso
Showcasing drupal
Opevel social-enterprise-platform osep-google_apps_slideshare
Interoperability betweendrupalandgoogleapps
Practical Groovy Domain-Specific Languages - Guillaume Laforge - Usi 2009
Whats New In Groovy 1.6?
Groovy to infinity and beyond - SpringOne2GX - 2010 - Guillaume Laforge
Groovy 2 and beyond
Groovy workshop à Mix-IT 2013
Lift off with Groovy 2 at JavaOne 2013
Les nouveautés de Groovy 2 -- Mix-IT 2013
Visual Design with Data
3 Things Every Sales Team Needs to Be Thinking About in 2017
How to Become a Thought Leader in Your Niche
Ad

Similar to Google app-engine-cloudcamplagos2011 (20)

PDF
Google App Engine
PPTX
CloudPlatforms-Cloud PLatforms evaluation
PDF
Appscale at CLOUDCOMP '09
PPT
Developing Java Web Applications In Google App Engine
PPTX
Azure App Services
PPTX
Cloud Platforms for Java
PDF
Java Web Programming on Google Cloud Platform [1/3] : Google App Engine
PDF
Google App Engine for Java
PPT
Google App Engine - Overview #1
PDF
Google App Engine At A Glance
PPTX
Connecting Xamarin Apps with IBM Worklight in Bluemix
 
PDF
Google App Engine
PPT
Google App Engine for Java
PDF
IBM Think Session 8598 Domino and JavaScript Development MasterClass
PPTX
Google appenginejava.ppt
PDF
Beginning MEAN Stack
PPTX
Google App Engine
PPTX
What's New in .Net 4.5
PDF
Monitoring a Kubernetes-backed microservice architecture with Prometheus
PDF
Cannibalising The Google App Engine
Google App Engine
CloudPlatforms-Cloud PLatforms evaluation
Appscale at CLOUDCOMP '09
Developing Java Web Applications In Google App Engine
Azure App Services
Cloud Platforms for Java
Java Web Programming on Google Cloud Platform [1/3] : Google App Engine
Google App Engine for Java
Google App Engine - Overview #1
Google App Engine At A Glance
Connecting Xamarin Apps with IBM Worklight in Bluemix
 
Google App Engine
Google App Engine for Java
IBM Think Session 8598 Domino and JavaScript Development MasterClass
Google appenginejava.ppt
Beginning MEAN Stack
Google App Engine
What's New in .Net 4.5
Monitoring a Kubernetes-backed microservice architecture with Prometheus
Cannibalising The Google App Engine

Recently uploaded (20)

PPTX
Programs and apps: productivity, graphics, security and other tools
PDF
Building Integrated photovoltaic BIPV_UPV.pdf
DOCX
The AUB Centre for AI in Media Proposal.docx
PDF
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PDF
Network Security Unit 5.pdf for BCA BBA.
PDF
Encapsulation theory and applications.pdf
PDF
KodekX | Application Modernization Development
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PPTX
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
PDF
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PDF
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
PPTX
Cloud computing and distributed systems.
PDF
MIND Revenue Release Quarter 2 2025 Press Release
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PDF
The Rise and Fall of 3GPP – Time for a Sabbatical?
PPTX
Digital-Transformation-Roadmap-for-Companies.pptx
PPTX
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
Programs and apps: productivity, graphics, security and other tools
Building Integrated photovoltaic BIPV_UPV.pdf
The AUB Centre for AI in Media Proposal.docx
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
Reach Out and Touch Someone: Haptics and Empathic Computing
Network Security Unit 5.pdf for BCA BBA.
Encapsulation theory and applications.pdf
KodekX | Application Modernization Development
Per capita expenditure prediction using model stacking based on satellite ima...
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
Cloud computing and distributed systems.
MIND Revenue Release Quarter 2 2025 Press Release
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
The Rise and Fall of 3GPP – Time for a Sabbatical?
Digital-Transformation-Roadmap-for-Companies.pptx
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
Agricultural_Statistics_at_a_Glance_2022_0.pdf

Google app-engine-cloudcamplagos2011

  • 1. GOOGLE APP ENGINE FOR THE ENTERPRISE Kayode Odeyemi Technical Architect, Opevel Cloud Camp Lagos, 2011 May 28th, 2011
  • 2. The Cloud 1. Convenience Pay for what you use 2. On-Demand network access Use as much as you need, whenever you need 3. Minimal management effort Don’t have to build your own infrastructure
  • 3. Cloud Computing – As seen by Gartner
  • 4. WHAT IS GOOGLE APP ENGINE? • Google’s own infrastructure for running web applications • The P (Platform) of Cloud Computing. • App Engine is HTTP Server, but does not serve HTML • Host web services for integration • Consume other web services • Various authentication options: Oauth, Google Account So, Google App Engine falls under PaaS of Cloud Computing
  • 5. WHY GOOGLE APP ENGINE? • Easy to build • Easy to maintain • Easy to Scale
  • 6. HOW DOES IT WORK? • Build • Push • Never worry about scalability
  • 7. HOW DOES IT WORK? • Build – Download SDK – Of Java, Python or GO Runtime – Build with dev tools such as GPE (Eclipse plugin), Netbeans, AppLauncher
  • 8. HOW DOES IT WORK? • Push – Deploy easily with simple commands ./appengine-java-sdk/bin/appcfg.sh update myapp/war – Administer in Administration console (App Engine Dashboard)
  • 9. HOW DOES IT WORK? • Scalability – Automatic performance improvements as traffic on your app increases See more in GAE Dashboard – Automatic instance creation to handle load as well as distribution of resources CPU, Bandwidth, Quota, Memory – Fault Tolerance
  • 10. PERFORMANCE & SCALABILITY • Built with scalability as top priority • Memcache – Distributed RAM cache – Heavily dependent on mecache size allocated. The more the merrier
  • 11. INTEGRATION Authenticati Google Google on OpenSocial XMPP Apps Data APIs Facebook GEO YouTube Django AJAX API (Maps) API
  • 12. APPLICATION ENVIRONMENT – BUILDING BLOCKS • Java Runtime • Python Runtime • GO Runtime • Datastore • Suite of APIs to do common stuffs – URL Fetch – Mail – Memcache – Image Manipulation – Channel – Blobstore
  • 13. APPLICATION ENVIRONMENT – BUILDING BLOCKS JAVA Same technologies / APIs you are used to
  • 14. KNOW HOW YOUR APP IS DOING – PLATFORM MANAGEMENT PYTHON • Communicates via CGI protocol • Supports Django • Supports Python 2.5+ Datastore Memcache URL Fetch Mail Blobstore CGI CGI CGI CGI CGI Google App Engine
  • 15. DATASTORE – OBJECT PERSISTENCE • Built on BigTable • Non-relational database management system • Consistent read and write even in a distributed network Storage 2 Storage 1 Storage 3
  • 16. ADMINISTERING YOUR APP – The Admin Console • Create a new application • View request and error logs and analyze traffic • Browse your application's datastore and manage indexes • Administer your datastore • View your application's instances • Manage task queues, allowing for viewing, deleting or running individual tasks immediately • Test new versions of your application and switch the version that your users see
  • 18. URL Fetch • Consume external resources with your app • Supports HTTP & HTTPS String message = URLEncoder.encode("my message", "UTF-8"); try { URL url = new URL("http://www.example.com/comment"); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setDoOutput(true); connection.setRequestMethod("POST");
  • 19. URL Fetch – Write and return response to client OutputStreamWriter writer = new OutputStreamWriter(connection.getOutputStream()); writer.write("message=" + message); writer.close(); if (connection.getResponseCode() == HttpURLConnection.HTTP_OK) { // OK } else { // Server returned HTTP error code. } } catch (MalformedURLException e) { // ... } catch (IOException e) { // ... } Note: Not all java.io classes are supported in app engine. Check whitelisted JRE classes
  • 20. Mail • Send mail using JavaMail or Low level API try { Message msg = new MimeMessage(session); msg.setFrom(new InternetAddress("admin@example.com", "Example.com Admin")); msg.addRecipient(Message.RecipientType.TO, new InternetAddress("user@example.com", "Mr. User")); msg.setSubject("Your Example.com account has been activated"); msg.setText(msgBody); Transport.send(msg); } catch (AddressException e) { // ... } catch (MessagingException e) {
  • 21. Memcache • Distributed in-memory data-cache • Improve performance • You don’t have to always persist storage in datastore. Some stuffs can be stored in-memory // A reference to the cache service private final Cache cache = new Cache(MemcacheServiceFactory .getMemcacheService());
  • 22. Channel API • Communicate between your application and Google Servers asynchronously. • Very useful to chat room apps, collaborative apps
  • 23. Blobstore • Serve large data objects • Insert / Retrieve / Edit, in bulk • Flexible – Direct access to blob data in memory • Fast access to blob data – 5MB in ~ 2s // Simple servlet to create the actual upload url String uploadurl = blobstoreservice.createUploadUrl(“/Upload”); // Called after upload Map<String, Blobkey> blobkeys = blobstoreservice.getUploadedBlobs(req);
  • 24. Google App Engine for Business • Enterprise Application Management – Centralized domain console • Enterprise reliability and support – 99.9% Service Level Agreement – Enterprise support • Hosted SQL – Relational SQL database in the cloud • SSL on your domain • Extremely secure by default – Integrated Single Sign-on • Pricing that makes sense – Apps cost $8 per user, up to $1000 max per month (Pre-IO2011 Pricing)
  • 25. ONLINE REFERENCES Get Started with App Engine http://code.google.com/appengine Get the SDK and build cool stuffs http://code.google.com/appengine/downloads.html Google Apps for Business http://code.google.com/appengine/business/ BigTable http://labs.google.com/papers/bigtable.html Google I/O 2011 http://www.google.com/events/io/2011/index-live.html Introduction to Google Cloud Platform Technologies by Chris Schalk – Google Developer Advocate http://goo.gl/zmxvF Sample projects http://goo.gl/djgMS
  • 26. Questions • Website - http://opevel.com • Twitter : @opevel @googledevtools #gwt @charyorde • Opevel Services – Google App Deployment – Custom Application Development on Google App Engine – Integration services with legacy systems