Your SlideShare is downloading. ×
JavaOne 2012 - BOF7955 ­ Avoiding Java EE Application Design Traps to Achieve Effective Use of Cloud Computing
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

JavaOne 2012 - BOF7955 ­ Avoiding Java EE Application Design Traps to Achieve Effective Use of Cloud Computing

165
views

Published on

JavaOne BOF session with Alberto Lemos (@drspockbr) about what developers have to consider while creating applications suitable to cloud.

JavaOne BOF session with Alberto Lemos (@drspockbr) about what developers have to consider while creating applications suitable to cloud.


0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
165
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
5
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide
  • \n
  • \n
  • * Discuss some ideas of how to design a typical Java EE application\n* It’s not the definitive guide to the development of a Java EE application\n* Show some conclusions from a study about a typical Java EE application running on a cloud computing environment sold as a platform.\n
  • \n
  • \n
  • \n
  • Step 1: If we install Java EE in a cloud environment we could start with an IaaS, where we have total control on what’s installed.\nStep 2: Then, we can install an Java EE application server\nStep 4: and sell it as a PaaS.\nStep 5: Then, install a Java EE application. It seems that Java EE is an excellent way to implement a PaaS model despite of some gaps to be solve at the Java EE 8.\nStep 6: Because, Java EE provides a set of standard services. It means a set of standard APIs for:\n * Relational Persistence via JPA\n * Asynchronous messaging via JMS (it deserves improvements - as planned by Java EE 7 spec)\n * Transaction via JTA\n * Security via JAAS (it’s another service that deserves improvements)\n * Resource Handling and location via JNDI\n * Distributed cache (it’ll be addressed by a spec from the Java EE 7)\n * Component modeling via EJB\n * and other services\nStep 7: But, all cloud computing providers provide a set of services. For instance:\n * Relational persistence (usually via MySQL, PostgreSQL ...)\n * Messaging\n * Monitoring service\n * Security (priv/pub key, SSL, certificates, ...)\n * NoSQL persistence\n * Storage service\n * and other services\nSome Java EE services match with cloud services. But, the major problem with a service that matches:\nStep 8: the major part of the cloud providers provides non-standard APIs to access their services.\n
  • Step 1: If we install Java EE in a cloud environment we could start with an IaaS, where we have total control on what’s installed.\nStep 2: Then, we can install an Java EE application server\nStep 4: and sell it as a PaaS.\nStep 5: Then, install a Java EE application. It seems that Java EE is an excellent way to implement a PaaS model despite of some gaps to be solve at the Java EE 8.\nStep 6: Because, Java EE provides a set of standard services. It means a set of standard APIs for:\n * Relational Persistence via JPA\n * Asynchronous messaging via JMS (it deserves improvements - as planned by Java EE 7 spec)\n * Transaction via JTA\n * Security via JAAS (it’s another service that deserves improvements)\n * Resource Handling and location via JNDI\n * Distributed cache (it’ll be addressed by a spec from the Java EE 7)\n * Component modeling via EJB\n * and other services\nStep 7: But, all cloud computing providers provide a set of services. For instance:\n * Relational persistence (usually via MySQL, PostgreSQL ...)\n * Messaging\n * Monitoring service\n * Security (priv/pub key, SSL, certificates, ...)\n * NoSQL persistence\n * Storage service\n * and other services\nSome Java EE services match with cloud services. But, the major problem with a service that matches:\nStep 8: the major part of the cloud providers provides non-standard APIs to access their services.\n
  • Step 1: If we install Java EE in a cloud environment we could start with an IaaS, where we have total control on what’s installed.\nStep 2: Then, we can install an Java EE application server\nStep 4: and sell it as a PaaS.\nStep 5: Then, install a Java EE application. It seems that Java EE is an excellent way to implement a PaaS model despite of some gaps to be solve at the Java EE 8.\nStep 6: Because, Java EE provides a set of standard services. It means a set of standard APIs for:\n * Relational Persistence via JPA\n * Asynchronous messaging via JMS (it deserves improvements - as planned by Java EE 7 spec)\n * Transaction via JTA\n * Security via JAAS (it’s another service that deserves improvements)\n * Resource Handling and location via JNDI\n * Distributed cache (it’ll be addressed by a spec from the Java EE 7)\n * Component modeling via EJB\n * and other services\nStep 7: But, all cloud computing providers provide a set of services. For instance:\n * Relational persistence (usually via MySQL, PostgreSQL ...)\n * Messaging\n * Monitoring service\n * Security (priv/pub key, SSL, certificates, ...)\n * NoSQL persistence\n * Storage service\n * and other services\nSome Java EE services match with cloud services. But, the major problem with a service that matches:\nStep 8: the major part of the cloud providers provides non-standard APIs to access their services.\n
  • Step 1: If we install Java EE in a cloud environment we could start with an IaaS, where we have total control on what’s installed.\nStep 2: Then, we can install an Java EE application server\nStep 4: and sell it as a PaaS.\nStep 5: Then, install a Java EE application. It seems that Java EE is an excellent way to implement a PaaS model despite of some gaps to be solve at the Java EE 8.\nStep 6: Because, Java EE provides a set of standard services. It means a set of standard APIs for:\n * Relational Persistence via JPA\n * Asynchronous messaging via JMS (it deserves improvements - as planned by Java EE 7 spec)\n * Transaction via JTA\n * Security via JAAS (it’s another service that deserves improvements)\n * Resource Handling and location via JNDI\n * Distributed cache (it’ll be addressed by a spec from the Java EE 7)\n * Component modeling via EJB\n * and other services\nStep 7: But, all cloud computing providers provide a set of services. For instance:\n * Relational persistence (usually via MySQL, PostgreSQL ...)\n * Messaging\n * Monitoring service\n * Security (priv/pub key, SSL, certificates, ...)\n * NoSQL persistence\n * Storage service\n * and other services\nSome Java EE services match with cloud services. But, the major problem with a service that matches:\nStep 8: the major part of the cloud providers provides non-standard APIs to access their services.\n
  • Step 1: If we install Java EE in a cloud environment we could start with an IaaS, where we have total control on what’s installed.\nStep 2: Then, we can install an Java EE application server\nStep 4: and sell it as a PaaS.\nStep 5: Then, install a Java EE application. It seems that Java EE is an excellent way to implement a PaaS model despite of some gaps to be solve at the Java EE 8.\nStep 6: Because, Java EE provides a set of standard services. It means a set of standard APIs for:\n * Relational Persistence via JPA\n * Asynchronous messaging via JMS (it deserves improvements - as planned by Java EE 7 spec)\n * Transaction via JTA\n * Security via JAAS (it’s another service that deserves improvements)\n * Resource Handling and location via JNDI\n * Distributed cache (it’ll be addressed by a spec from the Java EE 7)\n * Component modeling via EJB\n * and other services\nStep 7: But, all cloud computing providers provide a set of services. For instance:\n * Relational persistence (usually via MySQL, PostgreSQL ...)\n * Messaging\n * Monitoring service\n * Security (priv/pub key, SSL, certificates, ...)\n * NoSQL persistence\n * Storage service\n * and other services\nSome Java EE services match with cloud services. But, the major problem with a service that matches:\nStep 8: the major part of the cloud providers provides non-standard APIs to access their services.\n
  • Step 1: If we install Java EE in a cloud environment we could start with an IaaS, where we have total control on what’s installed.\nStep 2: Then, we can install an Java EE application server\nStep 4: and sell it as a PaaS.\nStep 5: Then, install a Java EE application. It seems that Java EE is an excellent way to implement a PaaS model despite of some gaps to be solve at the Java EE 8.\nStep 6: Because, Java EE provides a set of standard services. It means a set of standard APIs for:\n * Relational Persistence via JPA\n * Asynchronous messaging via JMS (it deserves improvements - as planned by Java EE 7 spec)\n * Transaction via JTA\n * Security via JAAS (it’s another service that deserves improvements)\n * Resource Handling and location via JNDI\n * Distributed cache (it’ll be addressed by a spec from the Java EE 7)\n * Component modeling via EJB\n * and other services\nStep 7: But, all cloud computing providers provide a set of services. For instance:\n * Relational persistence (usually via MySQL, PostgreSQL ...)\n * Messaging\n * Monitoring service\n * Security (priv/pub key, SSL, certificates, ...)\n * NoSQL persistence\n * Storage service\n * and other services\nSome Java EE services match with cloud services. But, the major problem with a service that matches:\nStep 8: the major part of the cloud providers provides non-standard APIs to access their services.\n
  • Step 1: If we install Java EE in a cloud environment we could start with an IaaS, where we have total control on what’s installed.\nStep 2: Then, we can install an Java EE application server\nStep 4: and sell it as a PaaS.\nStep 5: Then, install a Java EE application. It seems that Java EE is an excellent way to implement a PaaS model despite of some gaps to be solve at the Java EE 8.\nStep 6: Because, Java EE provides a set of standard services. It means a set of standard APIs for:\n * Relational Persistence via JPA\n * Asynchronous messaging via JMS (it deserves improvements - as planned by Java EE 7 spec)\n * Transaction via JTA\n * Security via JAAS (it’s another service that deserves improvements)\n * Resource Handling and location via JNDI\n * Distributed cache (it’ll be addressed by a spec from the Java EE 7)\n * Component modeling via EJB\n * and other services\nStep 7: But, all cloud computing providers provide a set of services. For instance:\n * Relational persistence (usually via MySQL, PostgreSQL ...)\n * Messaging\n * Monitoring service\n * Security (priv/pub key, SSL, certificates, ...)\n * NoSQL persistence\n * Storage service\n * and other services\nSome Java EE services match with cloud services. But, the major problem with a service that matches:\nStep 8: the major part of the cloud providers provides non-standard APIs to access their services.\n
  • Step 1: If we install Java EE in a cloud environment we could start with an IaaS, where we have total control on what’s installed.\nStep 2: Then, we can install an Java EE application server\nStep 4: and sell it as a PaaS.\nStep 5: Then, install a Java EE application. It seems that Java EE is an excellent way to implement a PaaS model despite of some gaps to be solve at the Java EE 8.\nStep 6: Because, Java EE provides a set of standard services. It means a set of standard APIs for:\n * Relational Persistence via JPA\n * Asynchronous messaging via JMS (it deserves improvements - as planned by Java EE 7 spec)\n * Transaction via JTA\n * Security via JAAS (it’s another service that deserves improvements)\n * Resource Handling and location via JNDI\n * Distributed cache (it’ll be addressed by a spec from the Java EE 7)\n * Component modeling via EJB\n * and other services\nStep 7: But, all cloud computing providers provide a set of services. For instance:\n * Relational persistence (usually via MySQL, PostgreSQL ...)\n * Messaging\n * Monitoring service\n * Security (priv/pub key, SSL, certificates, ...)\n * NoSQL persistence\n * Storage service\n * and other services\nSome Java EE services match with cloud services. But, the major problem with a service that matches:\nStep 8: the major part of the cloud providers provides non-standard APIs to access their services.\n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • Typical JavaEE Application\n- One or more databases\n- Integration with one or more applications\n\n
  • Typical JavaEE Application\n- One or more databases\n- Integration with one or more applications\n\n
  • Typical JavaEE Application\n- One or more databases\n- Integration with one or more applications\n\n
  • \n
  • \n
  • \n
  • Elasticity\n- Vertical scaling\n * To increase computer power by adding more servers.\n * Release servers as the load is reduced.\n * Load balancer to users to reach new instances\n * Load balancer to application reach required resources\n\n
  • Elasticity\n- Vertical scaling\n * To increase computer power by adding more servers.\n * Release servers as the load is reduced.\n * Load balancer to users to reach new instances\n * Load balancer to application reach required resources\n\n
  • Elasticity\n- Vertical scaling\n * To increase computer power by adding more servers.\n * Release servers as the load is reduced.\n * Load balancer to users to reach new instances\n * Load balancer to application reach required resources\n\n
  • Elasticity\n- Vertical scaling\n * To increase computer power by adding more servers.\n * Release servers as the load is reduced.\n * Load balancer to users to reach new instances\n * Load balancer to application reach required resources\n\n
  • Elasticity\n- Vertical scaling\n * To increase computer power by adding more servers.\n * Release servers as the load is reduced.\n * Load balancer to users to reach new instances\n * Load balancer to application reach required resources\n\n
  • Elasticity\n- Vertical scaling\n * To increase computer power by adding more servers.\n * Release servers as the load is reduced.\n * Load balancer to users to reach new instances\n * Load balancer to application reach required resources\n\n
  • Elasticity\n- Vertical scaling\n * To increase computer power by adding more servers.\n * Release servers as the load is reduced.\n * Load balancer to users to reach new instances\n * Load balancer to application reach required resources\n\n
  • Elasticity\n- Vertical scaling\n * To increase computer power by adding more servers.\n * Release servers as the load is reduced.\n * Load balancer to users to reach new instances\n * Load balancer to application reach required resources\n\n
  • Elasticity\n- Vertical scaling\n * To increase computer power by adding more servers.\n * Release servers as the load is reduced.\n * Load balancer to users to reach new instances\n * Load balancer to application reach required resources\n\n
  • Elasticity\n- Vertical scaling\n * To increase computer power by adding more servers.\n * Release servers as the load is reduced.\n * Load balancer to users to reach new instances\n * Load balancer to application reach required resources\n\n
  • Elasticity\n- Vertical scaling\n * To increase computer power by adding more servers.\n * Release servers as the load is reduced.\n * Load balancer to users to reach new instances\n * Load balancer to application reach required resources\n\n
  • Elasticity\n- Vertical scaling\n * To increase computer power by adding more servers.\n * Release servers as the load is reduced.\n * Load balancer to users to reach new instances\n * Load balancer to application reach required resources\n\n
  • Elasticity\n- Vertical scaling\n * To increase computer power by adding more servers.\n * Release servers as the load is reduced.\n * Load balancer to users to reach new instances\n * Load balancer to application reach required resources\n\n
  • Elasticity\n- Vertical scaling\n * To increase computer power by adding more servers.\n * Release servers as the load is reduced.\n * Load balancer to users to reach new instances\n * Load balancer to application reach required resources\n\n
  • Elasticity\n- Vertical scaling\n * To increase computer power by adding more servers.\n * Release servers as the load is reduced.\n * Load balancer to users to reach new instances\n * Load balancer to application reach required resources\n\n
  • Elasticity\n- Vertical scaling\n * To increase computer power by adding more servers.\n * Release servers as the load is reduced.\n * Load balancer to users to reach new instances\n * Load balancer to application reach required resources\n\n
  • Traps for Elasticity\n* State management\n - Session replication introduces communication costs (both computational and money)\n* Application footprint\n - Applications with a huge footprint leads to slower startup time\n* Communication complexity\n - The communication with other applications will increase complexity as new instances are added to the cloud.\n* Resource discovery\n - As new database or application instances are added to the cloud, the application must be able to use the new resources.\n
  • State management tips\n- Stateless services led to better fault tolerance, load balancing and instance removal.\n- Distributed cache solution is well suitable to cloud\n * JSR 107 (JCache) is planned to Java EE 7\n * Vendor lock-in\n- REST principles put the state in the client\n- JSF allows storing the component state in client. Beware of increased network traffic.\n
  • \n
  • \n
  • - Idempotent services provide less control on the sender side. In failover situations, just resend the messages.\n
  • Elasticity\n- Vertical scaling\n * To increase computer power by adding more servers.\n * Release servers as the load is reduced.\n * Load balancer to users to reach new instances\n * Load balancer to application reach required resources\n\n
  • Elasticity\n- Vertical scaling\n * To increase computer power by adding more servers.\n * Release servers as the load is reduced.\n * Load balancer to users to reach new instances\n * Load balancer to application reach required resources\n\n
  • Elasticity\n- Vertical scaling\n * To increase computer power by adding more servers.\n * Release servers as the load is reduced.\n * Load balancer to users to reach new instances\n * Load balancer to application reach required resources\n\n
  • Elasticity\n- Vertical scaling\n * To increase computer power by adding more servers.\n * Release servers as the load is reduced.\n * Load balancer to users to reach new instances\n * Load balancer to application reach required resources\n\n
  • Elasticity\n- Vertical scaling\n * To increase computer power by adding more servers.\n * Release servers as the load is reduced.\n * Load balancer to users to reach new instances\n * Load balancer to application reach required resources\n\n
  • \n
  • Elasticity\n- Vertical scaling\n * To increase computer power by adding more servers.\n * Release servers as the load is reduced.\n * Load balancer to users to reach new instances\n * Load balancer to application reach required resources\n\n
  • Elasticity\n- Vertical scaling\n * To increase computer power by adding more servers.\n * Release servers as the load is reduced.\n * Load balancer to users to reach new instances\n * Load balancer to application reach required resources\n\n
  • Elasticity\n- Vertical scaling\n * To increase computer power by adding more servers.\n * Release servers as the load is reduced.\n * Load balancer to users to reach new instances\n * Load balancer to application reach required resources\n\n
  • Elasticity\n- Vertical scaling\n * To increase computer power by adding more servers.\n * Release servers as the load is reduced.\n * Load balancer to users to reach new instances\n * Load balancer to application reach required resources\n\n
  • Elasticity\n- Vertical scaling\n * To increase computer power by adding more servers.\n * Release servers as the load is reduced.\n * Load balancer to users to reach new instances\n * Load balancer to application reach required resources\n\n
  • Elasticity\n- Vertical scaling\n * To increase computer power by adding more servers.\n * Release servers as the load is reduced.\n * Load balancer to users to reach new instances\n * Load balancer to application reach required resources\n\n
  • Elasticity\n- Vertical scaling\n * To increase computer power by adding more servers.\n * Release servers as the load is reduced.\n * Load balancer to users to reach new instances\n * Load balancer to application reach required resources\n\n
  • Elasticity\n- Vertical scaling\n * To increase computer power by adding more servers.\n * Release servers as the load is reduced.\n * Load balancer to users to reach new instances\n * Load balancer to application reach required resources\n\n
  • Elasticity\n- Vertical scaling\n * To increase computer power by adding more servers.\n * Release servers as the load is reduced.\n * Load balancer to users to reach new instances\n * Load balancer to application reach required resources\n\n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • Transcript

    • 1. Avoiding Java EEApplication Design Traps to achieve effective use of cloud computingAlberto Lemos (Dr. Spock) Danival Taffarel Calegari Senior Software Architect MATERA Systems Architect SpockNET Globalcode Instructor
    • 2. Agenda• Motivation• Challenges when deploying Java EE on cloud computing• Some tips & tricks• Some evaluated Java PaaS• Java EE adapter for cloud services
    • 3. Objective“Provide the java developers and architects withsome ‘food for thoughts’ to help them to design a better Java EE application”
    • 4. Agenda• Motivation• Challenges when deploying Java EE on cloud computing• Some tips & tricks• Some evaluated Java PaaS• Java EE adapter for cloud services
    • 5. Motivation• How cloud computing can affect the architecture or the code of a Java EE application?• Some Java EE cloud key features are focused on to provide a PaaS model to the Application Servers• No new features to provide the programming model with cloud features
    • 6. Agenda• Motivation• Challenges when deploying Java EE on cloud computing• Some tips & tricks• Some evaluated Java PaaS• Java EE adapter for cloud services
    • 7. Java EE in the Cloud
    • 8. Java EE in the Cloud Operational System Iaas
    • 9. Java EE App Server JVM Operational SystemIaas
    • 10. Java EE App Server JVMPaas Operational SystemIaas
    • 11. Java EE Application Java EE App Server JVMPaas Operational SystemIaas
    • 12. Java EE ServicesPersistence Java EE ApplicationMessagingTransaction Java EE App Server Security Resource JVM Cache PaasComponent Operational System Iaas
    • 13. Java EE Services Cloud ServicesPersistence Persistence Java EE ApplicationMessaging MessagingTransaction Monitoring Java EE App Server Security Security Resource JVM NoSQL Cache Paas StorageComponent ... Operational System Iaas
    • 14. Java EE Services Cloud ServicesPersistence Persistence JPA Java EE ApplicationMessaging Messaging JMSTransaction Monitoring JTA Java EE App Server Security Security JAAS Resource JVM NoSQL JNDI Cache Paas StorageComponent ... EJB Operational System non-std API Iaas
    • 15. Evaluated PaaS
    • 16. Challenges• Elasticity• Deployment model• Support to Java EE full stack• Proprietary services• Resource handling
    • 17. Load BalancerVirtual Machine
    • 18. Load BalancerVirtual Machine
    • 19. Load BalancerVirtual Machine
    • 20. Load BalancerVirtual Machine
    • 21. 1000 users Load BalancerVirtual Machine 100 users per VM
    • 22. 500 users Load BalancerVirtual Machine 50 users per VM
    • 23. 100 users Load BalancerVirtual Machine 10 users per VM
    • 24. 100 users Load BalancerVirtual Machine 100 users in a VM
    • 25. 100 users Load BalancerVirtual Machine 100 users in a VM
    • 26. Agenda• Motivation• Challenges when deploying Java EE on cloud computing• Some tips & tricks• Some evaluated Java PaaS• Java EE adapter for cloud services
    • 27. Typical JavaEE Application
    • 28. Database A Java EE Application Database Server 1Java EE Server Database B App 1 App 2 Database CApplication Server X Application Server Y Database Server 2
    • 29. Elasticity
    • 30. Database A Java EE Application Database Server 1Java EE Server Database B App 1 App 2 Database CApplication Server X Application Server Y Database Server 2
    • 31. Load Balancer Load Balancer Server Java EE Application Java EE Application Java EE Application Java EE Application Java EE Server Java EE Server Java EE Server Java EE Server App 1 App 2 Database A Database B Database CApplication Server X Application Server Y Database Server 1 Database Server 2
    • 32. Load Balancer Load Balancer Server Java EE Application Java EE Application Java EE Application Java EE Application Java EE Server Java EE Server Java EE Server Java EE Server App 1 App 2 Database A Database B Database CApplication Server X Application Server Y Database Server 1 Database Server 2
    • 33. Elasticity Challenges• State management• Application startup time• Communication complexity• Resource discovery
    • 34. State management• Design for stateless services • Use stateless EJB• REST. • JAX-RS.• JSF features. • Client state saving. • Preemptive navigation (bookmarkable URLs).
    • 35. State management• Store state in a distributed cache solution • Memcached, Infinispan, Oracle Coherence, etc. • JSR 107 (JCache) planned to Java EE 7. • Setup carefully the distributed cache to avoid high cost on data transfer over the network.
    • 36. Application startup time• Reduce the application footprint. • Put static resources in separate deployment units. • Static resources may be available in a content delivery service.• Lazy load resources as much as possible.
    • 37. Communication complexity• Decouple applications by using asynchronous messaging.• Create atomic idempotent services.• Keep dynamic data closer to the compute and static data closer to the end-user. • Consider to create database shards.
    • 38. Load Balancer Load Balancer Server Java EE Application Java EE Application Java EE Application Java EE Application Java EE Server Java EE Server Java EE Server Java EE Server App 1 App 2 Database A Database B Database CApplication Server X Application Server Y Database Server 1 Database Server 2
    • 39. Load Balancer Load Balancer Server Java EE Application Java EE Application Java EE Application Java EE ApplicationJava EE Server Java EE Server Java EE Server Java EE Server Message Service App 1 App 2 Application Server X Application Server Y
    • 40. Load Balancer Load Balancer Server Java EE Application Java EE Application Java EE Application Java EE ApplicationJava EE Server Java EE Server Java EE Server Java EE Server Database A Database B Database C Database Server 1 Database Server 2
    • 41. Load Balancer Load Balancer Server Java EE Application Java EE Application Java EE Application Java EE Application Java EE Server Java EE Server Java EE Server Java EE ServerZone 01 Zone 02 Database A Database B Database C Database Server 1 Database Server 2
    • 42. Load Balancer Load Balancer Server Java EE Application Java EE Application Java EE Application Java EE Application Java EE Server Java EE Server Java EE Server Java EE Server DB A - S01 DB B - S01 DB C - S01 DB A - S02 DB B - S02 DB C - S02 Database Server 1 S01 Database Server 2 S01 Database Server 1 S02 Database Server 2 S02Zone 01 Zone 02
    • 43. Resource discovery• Let resource management to the container. • Resource location became transparent to application by using CDI.• Use load balancers to access internal resources.
    • 44. Load Balancer Load Balancer Server Java EE Application Java EE Application Java EE Application Java EE Application Java EE Server Java EE Server Java EE Server Java EE Server DB A DB B DB C DB A DB B DB CDatabase Server I Database Server 2 Database Server 3 Database Server 4
    • 45. Load Balancer Load Balancer Server Java EE Application Java EE Application Java EE Application Java EE Application Java EE Server Java EE Server Java EE Server Java EE Server Load Balancer DB A DB B DB C DB A DB B DB CDatabase Server I Database Server 2 Database Server 3 Database Server 4
    • 46. Load Balancer Load Balancer Server Java EE Application Java EE Application Java EE Application Java EE Application Java EE Server Java EE Server Java EE Server Java EE Server Load Balancer DB A DB B DB C DB A DB B DB CDatabase Server I Database Server 2 Database Server 3 Database Server 4
    • 47. Agenda• Motivation• Challenges when deploying Java EE on cloud computing• Some tips & tricks• Some evaluated Java PaaS• Java EE adapter for cloud services
    • 48. Some evaluated Java PaaS Java EE full Standard Non-std APIs/ Distributed Supported App PaaS stack Deployment Services Cache ServersAWS Beanstalk Tomcat 6/7Oracle Cloud WebLogic Openshift JBossAS 6/7 Tomcat 6/7 - Cloudbees Glassfish 3 Heroku Tomcat 7 Jetty 6 - Tomcat 6/7 Jelastic - Glassfish 3Cloud Foundry Tomcat 7 OCT/12 GAE Jetty
    • 49. Last tips!• Prefer a cloud provider that provides the Java EE full stack.• Use CDI to support a business component model in a Java EE application deployed on a Web Container based cloud provider (Paas)• Avoid proprietary cloud services to avoid "cloud provider lock-in"
    • 50. Agenda• Motivation• Challenges when deploying Java EE on cloud computing• Some tips & tricks• Some evaluated Java PaaS• Java EE adapter for cloud services
    • 51. A vision of the future! Java EE Application • Glassfish for Amazon Web Services Java EE Application • Glassfish for Oracle Java EE Services Cloud Cloud Adapter • Application Servers for IaaS environment Cloud Services Cloud Provider
    • 52. Thank you!• Alberto Lemos (Dr. Spock) @drspockbr http://about.me/drspockbr• Danival T. Calegari @danivaltc danivaltc@gmail.com

    ×