Module 10:   Java Cloud Platform Dr.Thanachart NumnondaDr.Thanisa Kruawaisayawan   www.imcinstitute.com   18-22 February 2...
Objectives    What is Cloud Computing?    What is Google App Engine?    Google App Engine for Java    Google App Engin...
What is Cloud Computing?                           3
Cloud Computing : Definition               (Wikipedia)Cloud Computing is Internet-based computing, whereby shared resource...
Cloud Computing Characteristics    Massive, abstracted infrastructure    Dynamic allocation, scaling, movement of    app...
Grid to Cloud Evolution                          6
Web 2.0 & Cloud Computing    Web 2.0 concentrates on the private user and clouds    are decscendents of data centers whic...
ISP to Cloud Evolution                         8
Software as a Service (SaaS)    SaaS is at the highest layer and features a    complete application offered as a service,...
Platform as a Service (PaaS)    The middle layer, or PaaS, is the encapsulation of    a development environment abstracti...
Infrastructure as a Service (IaaS)    IaaS is at the lowest layer and is a means of    delivering basic storage and compu...
12
Deployment Model    Public Cloud: provider refers to the cloud    platform that targets any types of customers.    Priva...
IaaS & PaaS: Developers Perspectives      IaaS normally provides up to O/S level as your      choice; for example Amazon ...
Setting Up App in IaaSSource:http://acloudyplace.com/2012/01/comparing-iaas-and-paas-a-developers-perspective/   15
Setting Up App in PaaSSource:http://acloudyplace.com/2012/01/comparing-iaas-and-paas-a-developers-perspective/   16
PaaS for Java    Amazon Elastic Beanstalk    CloudBees    Cloud Foundry    Google App Engine    Heroku for Java    R...
PaaS for Java: Comparison                            18
PaaS for Java: Comparison                            19
What is Google App Engine?                             20
Google App Engine : Definition              (Wikipedia)It is a platform for hosting web applications in Google-  managed d...
Google App Engine    Running your web application in Google    infrastructure    Support different runtime environments...
Hosting Java web apps traditionally     Not so popular except enterprise     High rates as compared to PHP hosting     ...
You end up with all this                           24
25
Google Datacenters at Dallas, Oregon                                       26
GAE Architecture                   27
GAE Physical Deployment Diagram                                  28
Architecture : Application Server                                    29
Distributed web hosting platform                                   30
Distributed Datastore                        31
Distributed memcache                       32
Specialized services                       33
Google Apps + your apps                          34
Google App Engine for Java                             35
GAE/J    Was released on April 08 with Python support.    Java included on August 09                                     ...
App Engine for Java : One YearSource: What’s Hot in Java for App Engine Google Con 2010   37
GAE Java Runtime Environment    Java 6 VM    Servlet 2.5 Container    HTTP Session support (need to enable explicitly)...
Java Standards on GAE                        39
Services by App Engine    Memcache API – high performance in-memory    key-value cache    Datastore – database storage a...
Limitations    Programming Model : Application runs in    sandbox and can not    –   Write to file system    –   Make arb...
GAE Datastore                42
GAE Datastore    Storing data and manipulation    Based on Bigtable    Bigtable is proprietary and hidden from the app ...
User Service : Google Accounts    Google Accounts are encouraged as the preferred    authentication mechanism for App Eng...
User API : Exampleimport com.google.appengine.api.users.*; import com.google.appengine.api.users.*;UserService userService...
URLFetch API      Invoking external URLs from your application      over HTTP and HTTPs    import java.net.*;     import ...
Mail API         Send emails on the behalf of app administrator to         the Google account use.         You can not r...
Memcache Service    Distributed in memory cache, better than    DataStore    Key-value pair mapping    Configurable exp...
Memcache API : Exampleimport static java.util.Collections.emptyMap; import static java.util.Collections.emptyMap;import ja...
Task Queues API    Perform background processes by inserting tasks into    queues.    Instructions need to be mention in...
Cron Jobs    Up to 20 scheduled tasks per app    Cron jobs (scheduled tasks) supported in cron.xml    in WEB-INF dir   ...
Images API    Manipulation of images    Transformation of images    Changing image formats                             ...
GAE Development Cycle                        53
GAE Development Cycle                        54
Getting Started    The application owner must have a Google    Account to get the tools regardless of language.    Use J...
Software Development Kit    App Engine SDK     – Includes web server (Jetty)     – Emulates all the GAE services    SDK ...
Google Plugin for Eclipse                            57
Development Environment    Development Server    Application lifecycle     management    Eclipse/NetBeans    plugins / ...
Google Plugin for Eclipse                            59
Development Server    http://localhost:8888                            60
Development Server Admin Console        http://localhost:8888/_ah/admin                                          61
Deployment Environment    Application is deployed as .war which contains.    Deployment is integrated in IDE    Deploy ...
Running your app on Google http://<version>.<appid>.appspot.com/some/path                                                 ...
Managing Applications    Administration Console     http://appengine.google.com/a/yourdomain.com    Application Dashboar...
GAE Dashboard                65
66
Heroku    Platform as a Service for professional    apps developers    Forget servers    Run anything    See everythin...
Forget Servers    Agile deployment for Ruby, Node.js, Clojure,    Java, Python, and Scala.                               ...
69
70
Resources    Google App Engine at a glance, Stefan Christoph    Developing Java Based Web Applications in    Google App...
Thank you thanachart@imcinstitute.comwww.facebook.com/imcinstitute    www.imcinstitute.com                                72
Upcoming SlideShare
Loading in …5
×

Java Web Programming Using Cloud Platform: Module 10

799 views

Published on

Java Web Programming Using Cloud Platform Training 18-22 Feb 2013 Module 10: Google App Engine and Heroku

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
799
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
45
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Java Web Programming Using Cloud Platform: Module 10

  1. 1. Module 10: Java Cloud Platform Dr.Thanachart NumnondaDr.Thanisa Kruawaisayawan www.imcinstitute.com 18-22 February 2013
  2. 2. Objectives What is Cloud Computing? What is Google App Engine? Google App Engine for Java Google App Engine Development cycle Heroku Introduction 2
  3. 3. What is Cloud Computing? 3
  4. 4. Cloud Computing : Definition (Wikipedia)Cloud Computing is Internet-based computing, whereby shared resources, software, and information are provided to computers and other devices on demand, like the electricity grid. 4
  5. 5. Cloud Computing Characteristics Massive, abstracted infrastructure Dynamic allocation, scaling, movement of applications Pay per use No long-term commitments OS, application architecture independent No hardware or software to install 5
  6. 6. Grid to Cloud Evolution 6
  7. 7. Web 2.0 & Cloud Computing Web 2.0 concentrates on the private user and clouds are decscendents of data centers which services the enterprise. Web 2.0 promotes SaaS. Web 2.0 needs massive scaling technologies. User centric Web 2.0 companies (Twitter, Slideshare) are relying on Cloud Services. 7
  8. 8. ISP to Cloud Evolution 8
  9. 9. Software as a Service (SaaS) SaaS is at the highest layer and features a complete application offered as a service, on- demand, via multitenancy — meaning a single instance of the software runs on the provider’s infrastructure and serves multiple client organizations. 9
  10. 10. Platform as a Service (PaaS) The middle layer, or PaaS, is the encapsulation of a development environment abstraction and the packaging of a payload of services PaaS offerings can provide for every phase of software development and testing, or they can be specialized around a particular area, such as content management 10
  11. 11. Infrastructure as a Service (IaaS) IaaS is at the lowest layer and is a means of delivering basic storage and compute capabilities as standardized services over the network. Servers, storage systems, switches,routers, and other systems are pooled (through virtualization technology, for example) to handle specific types of workloads — from batch processing to server/storage augmentation during peak loads. 11
  12. 12. 12
  13. 13. Deployment Model Public Cloud: provider refers to the cloud platform that targets any types of customers. Private Cloud: infrastructure that’s hosted internally, targeting specific customers or sometimes exclusively within an organization. Hybrid Cloud: the combination of public and private clouds, or sometimes on-premise services. 13
  14. 14. IaaS & PaaS: Developers Perspectives IaaS normally provides up to O/S level as your choice; for example Amazon Web Services (AWS) offers several types of Operating Systems such as Windows Server, Linux SUSE, and Linux Red Hat. Developer need to install own middleware, database, etc. PaaS, given that the database server, VM, and web server VM are readily provisioned, 14
  15. 15. Setting Up App in IaaSSource:http://acloudyplace.com/2012/01/comparing-iaas-and-paas-a-developers-perspective/ 15
  16. 16. Setting Up App in PaaSSource:http://acloudyplace.com/2012/01/comparing-iaas-and-paas-a-developers-perspective/ 16
  17. 17. PaaS for Java Amazon Elastic Beanstalk CloudBees Cloud Foundry Google App Engine Heroku for Java Red Hat OpenShift 17
  18. 18. PaaS for Java: Comparison 18
  19. 19. PaaS for Java: Comparison 19
  20. 20. What is Google App Engine? 20
  21. 21. Google App Engine : Definition (Wikipedia)It is a platform for hosting web applications in Google- managed data centers. It is cloud computing technology which virtualizes applications across multiple servers and data centers. 21
  22. 22. Google App Engine Running your web application in Google infrastructure Support different runtime environments Java (JRE 6 with limitation, Servlet 2.5, JDO, JPA) Python (2.5.2) Apps run in sandbox. Automatic scaling and load balancing No server restart, no network issues 22
  23. 23. Hosting Java web apps traditionally Not so popular except enterprise High rates as compared to PHP hosting Shared Tomcat instance among users Restrictions on any time deployments due to shared server Dedicated hosts works fine but they are costly 23
  24. 24. You end up with all this 24
  25. 25. 25
  26. 26. Google Datacenters at Dallas, Oregon 26
  27. 27. GAE Architecture 27
  28. 28. GAE Physical Deployment Diagram 28
  29. 29. Architecture : Application Server 29
  30. 30. Distributed web hosting platform 30
  31. 31. Distributed Datastore 31
  32. 32. Distributed memcache 32
  33. 33. Specialized services 33
  34. 34. Google Apps + your apps 34
  35. 35. Google App Engine for Java 35
  36. 36. GAE/J Was released on April 08 with Python support. Java included on August 09 36
  37. 37. App Engine for Java : One YearSource: What’s Hot in Java for App Engine Google Con 2010 37
  38. 38. GAE Java Runtime Environment Java 6 VM Servlet 2.5 Container HTTP Session support (need to enable explicitly) JDO/JPA for Datastore API JSR 107 for Memcache API javax.mail for Mail API javax.net.URLConnection for URLFetch API 38
  39. 39. Java Standards on GAE 39
  40. 40. Services by App Engine Memcache API – high performance in-memory key-value cache Datastore – database storage and operations URLFetch – invoking external URLs Mail – sending mail from your application Task Queues – for invoking background processes Images – for image manipulation Cron Jobs – scheduled tasks on defined time User Accounts – using Google accounts for authentication 40
  41. 41. Limitations Programming Model : Application runs in sandbox and can not – Write to file system – Make arbitrary network connections – Use multiple threads/processes – Perform long-lasting processing – Permissions – Know about other instances/applications Quotas (Requests, In/Out bandwidth, CPU time, API calls) 41
  42. 42. GAE Datastore 42
  43. 43. GAE Datastore Storing data and manipulation Based on Bigtable Bigtable is proprietary and hidden from the app developers Not a relational database (No SQL) GQL (Google Query Language) to query Stores data as entities Distribution, replication, load balancing behind the scene Need to use JDO/JPA 43
  44. 44. User Service : Google Accounts Google Accounts are encouraged as the preferred authentication mechanism for App Engine – It assumes that all users have a Google Account – Google authentication for private domains isn’t available yet Access to Google account data -> email, id The Development Server simulates Google Accounts Access constraints based on roles 44
  45. 45. User API : Exampleimport com.google.appengine.api.users.*; import com.google.appengine.api.users.*;UserService userService == UserServiceFactory.getUserService(); UserService userService UserServiceFactory.getUserService();User user == userService.getCurrentUser(); User user userService.getCurrentUser();String navBar; String navBar;if (user == null) {{ if (user == null) navBar == "<p>Welcome! <a href="" ++ userService.createLoginURL("/") navBar "<p>Welcome! <a href="" userService.createLoginURL("/") +"">Sign in or register</a> to customize.</p>"; +"">Sign in or register</a> to customize.</p>";}} else {{ else navBar == "<p>Welcome, "" ++ user.getEmail() ++ "! You can <a href="" navBar "<p>Welcome, user.getEmail() "! You can <a href="" +userService.createLogoutURL("/") +"">sign out</a>.</p>"; +userService.createLogoutURL("/") +"">sign out</a>.</p>";}} 45
  46. 46. URLFetch API Invoking external URLs from your application over HTTP and HTTPs import java.net.*; import java.net.*; import java.io.*; import java.io.*; URL url == new URL("htp://..."); URL url new URL("htp://..."); InputStream inp == new InputStreamReader(url.openStream()); InputStream inp new InputStreamReader(url.openStream()); BufferedReader reader == new BufferedReader(inp); BufferedReader reader new BufferedReader(inp); String line; String line; while ((line == reader.readLine()) != null) {{ while ((line reader.readLine()) != null) //do something //do something }} reader.close(); reader.close(); 46
  47. 47. Mail API Send emails on the behalf of app administrator to the Google account use. You can not receive emails import javax.mail.*; import javax.mail.*; Session session == Session.getDefaultInstance(new Properties(), null); Session session Session.getDefaultInstance(new Properties(), null); InternetAddress admins == new InternetAddress("admins"); InternetAddress admins new InternetAddress("admins"); Message msg == new MimeMessage(session); Message msg new MimeMessage(session); msg.setFrom(admins); msg.setFrom(admins); msg.addRecipient(Message.RecipientType.TO, admins); msg.addRecipient(Message.RecipientType.TO, admins); msg.setSubject("subject"); msg.setSubject("subject"); msg.setText("text"); msg.setText("text"); Transport.send(msg); Transport.send(msg); 47
  48. 48. Memcache Service Distributed in memory cache, better than DataStore Key-value pair mapping Configurable expiration time but Unreliable might be vanished at any time Supported Interfaces : – JACHE (JSR 107: JCACHE – Java Temporary Caching API) – The Low-Level Memcache API 48
  49. 49. Memcache API : Exampleimport static java.util.Collections.emptyMap; import static java.util.Collections.emptyMap;import javax.cache.*; import javax.cache.*;CacheFactory cacheFactory == CacheManager.getInstance().getCacheFactory(); CacheFactory cacheFactory CacheManager.getInstance().getCacheFactory();Cache cache == cacheFactory.createCache(emptyMap()); Cache cache cacheFactory.createCache(emptyMap());cache.put(key, value); cache.put(key, value);cache.get(key); cache.get(key); 49
  50. 50. Task Queues API Perform background processes by inserting tasks into queues. Instructions need to be mention in file queue.xml, in the WEB-INF/ dir import com.google.appengine.api.labs.taskqueue.Queue; import com.google.appengine.api.labs.taskqueue.Queue; import com.google.appengine.api.labs.taskqueue.QueueFactory; import com.google.appengine.api.labs.taskqueue.QueueFactory; import com.google.appengine.api.labs.taskqueue.TaskOptions; import com.google.appengine.api.labs.taskqueue.TaskOptions; // ... // ... TaskOptions taskOptions == TaskOptions taskOptions TaskOptions.Builder.url("/send_invitation_task") TaskOptions.Builder.url("/send_invitation_task") .param("address", "juliet@example.com") .param("address", "juliet@example.com") .param("firstname", "Juliet"); .param("firstname", "Juliet"); Queue queue == QueueFactory.getDefaultQueue(); Queue queue QueueFactory.getDefaultQueue(); queue.add(taskOptions); queue.add(taskOptions); 50
  51. 51. Cron Jobs Up to 20 scheduled tasks per app Cron jobs (scheduled tasks) supported in cron.xml in WEB-INF dir Schedule instructions contain Englis-like format <?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?> <cronentries> <cronentries> <cron> <cron> <url>/listbooks</url> <url>/listbooks</url> <description>Repopulate the cache every day at <description>Repopulate the cache every day at 5am</description> 5am</description> <schedule>every day 05:00</schedule> <schedule>every day 05:00</schedule> </cron> </cron> </cronentries> </cronentries> 51
  52. 52. Images API Manipulation of images Transformation of images Changing image formats 52
  53. 53. GAE Development Cycle 53
  54. 54. GAE Development Cycle 54
  55. 55. Getting Started The application owner must have a Google Account to get the tools regardless of language. Use Java 6 for development. Eclipse and Netbeans have official plugins. Both SDKs ship with a Development Web Server that runs locally and provides a sandbox almost identical to the real run-time. 55
  56. 56. Software Development Kit App Engine SDK – Includes web server (Jetty) – Emulates all the GAE services SDK includes an upload tool to deploy app to GAE Command line tools included. 56
  57. 57. Google Plugin for Eclipse 57
  58. 58. Development Environment Development Server Application lifecycle management Eclipse/NetBeans plugins / Firefox plugin (GWT) 58
  59. 59. Google Plugin for Eclipse 59
  60. 60. Development Server http://localhost:8888 60
  61. 61. Development Server Admin Console http://localhost:8888/_ah/admin 61
  62. 62. Deployment Environment Application is deployed as .war which contains. Deployment is integrated in IDE Deploy multiple version of the application at the same time Your app lives at – <app_id>.appspot.com or – Custom domain with Google Apps 62
  63. 63. Running your app on Google http://<version>.<appid>.appspot.com/some/path 63
  64. 64. Managing Applications Administration Console http://appengine.google.com/a/yourdomain.com Application Dashboard Multiple application versions Analyzing log files (including admin) Analyzing resource usage 64
  65. 65. GAE Dashboard 65
  66. 66. 66
  67. 67. Heroku Platform as a Service for professional apps developers Forget servers Run anything See everything Trust & Managed 67
  68. 68. Forget Servers Agile deployment for Ruby, Node.js, Clojure, Java, Python, and Scala. 68
  69. 69. 69
  70. 70. 70
  71. 71. Resources Google App Engine at a glance, Stefan Christoph Developing Java Based Web Applications in Google App Engine, Tahir Akram, Dec. 2009 Google App Engine, Patrick Chanezon, Mar 2010 71
  72. 72. Thank you thanachart@imcinstitute.comwww.facebook.com/imcinstitute www.imcinstitute.com 72

×