Java Web Programming Using Cloud Platform: Module 10
Upcoming SlideShare
Loading in...5
×
 

Java Web Programming Using Cloud Platform: Module 10

on

  • 641 views

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

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

Statistics

Views

Total Views
641
Views on SlideShare
641
Embed Views
0

Actions

Likes
1
Downloads
29
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Java Web Programming Using Cloud Platform: Module 10 Java Web Programming Using Cloud Platform: Module 10 Presentation Transcript

    • Module 10: Java Cloud Platform Dr.Thanachart NumnondaDr.Thanisa Kruawaisayawan www.imcinstitute.com 18-22 February 2013
    • Objectives What is Cloud Computing? What is Google App Engine? Google App Engine for Java Google App Engine Development cycle Heroku Introduction 2
    • What is Cloud Computing? 3
    • 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
    • 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
    • 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 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
    • 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, on- demand, via multitenancy — meaning a single instance of the software runs on the provider’s infrastructure and serves multiple client organizations. 9
    • 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
    • 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
    • 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
    • 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
    • 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 Red Hat OpenShift 17
    • 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 data centers. It is cloud computing technology which virtualizes applications across multiple servers and data centers. 21
    • 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
    • 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
    • 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 36
    • 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) JDO/JPA for Datastore API JSR 107 for Memcache API javax.mail for Mail API javax.net.URLConnection for URLFetch API 38
    • Java Standards on GAE 39
    • 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
    • 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
    • GAE Datastore 42
    • 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
    • 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
    • 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
    • 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
    • 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
    • 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
    • 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
    • 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
    • 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
    • Images API Manipulation of images Transformation of images Changing image formats 52
    • 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 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
    • 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
    • Google Plugin for Eclipse 57
    • Development Environment Development Server Application lifecycle management Eclipse/NetBeans plugins / Firefox plugin (GWT) 58
    • 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 multiple version of the application at the same time Your app lives at – <app_id>.appspot.com or – Custom domain with Google Apps 62
    • Running your app on Google http://<version>.<appid>.appspot.com/some/path 63
    • 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
    • GAE Dashboard 65
    • 66
    • Heroku Platform as a Service for professional apps developers Forget servers Run anything See everything Trust & Managed 67
    • Forget Servers Agile deployment for Ruby, Node.js, Clojure, Java, Python, and Scala. 68
    • 69
    • 70
    • 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
    • Thank you thanachart@imcinstitute.comwww.facebook.com/imcinstitute www.imcinstitute.com 72