• Save
Avoiding Java EE Application Design Traps to Achieve Effective Use of Cloud Computing
Upcoming SlideShare
Loading in...5
×
 

Avoiding Java EE Application Design Traps to Achieve Effective Use of Cloud Computing

on

  • 641 views

Cloud computing and the Java EE platform have evolved to provide a runtime environment for Java EE applications with minimal architectural interference. This evolution is addressing issues from the ...

Cloud computing and the Java EE platform have evolved to provide a runtime environment for Java EE applications with minimal architectural interference. This evolution is addressing issues from the application server and cloud infrastructure point of view. However, design decisions and best practices for the conception of an architecture can influence the choice of a cloud environment. This session presents some tips and tricks for avoiding the traps that prevent effective use of a cloud infrastructure during development of a typical Java EE application. Each tip and trick is evaluated in terms of its impact on the performance, scalability, distribution, elasticity, and cost of some clouds on the market.

Statistics

Views

Total Views
641
Slideshare-icon Views on SlideShare
641
Embed Views
0

Actions

Likes
2
Downloads
0
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

CC Attribution-NonCommercial LicenseCC Attribution-NonCommercial License

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

    Avoiding Java EE Application Design Traps to Achieve Effective Use of Cloud Computing Avoiding Java EE Application Design Traps to Achieve Effective Use of Cloud Computing Presentation Transcript

    • 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
    • Agenda• Motivation• Challenges when deploying Java EE on cloud computing• Some tips & tricks• Some evaluated Java PaaS• Java EE adapter for cloud services
    • Objective“Provide the java developers and architects withsome ‘food for thoughts’ to help them to design a better Java EE application”
    • Agenda• Motivation• Challenges when deploying Java EE on cloud computing• Some tips & tricks• Some evaluated Java PaaS• Java EE adapter for cloud services
    • 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
    • Agenda• Motivation• Challenges when deploying Java EE on cloud computing• Some tips & tricks• Some evaluated Java PaaS• Java EE adapter for cloud services
    • Java EE in the Cloud
    • Java EE in the Cloud Operational System Iaas
    • Java EE App Server JVM Operational SystemIaas
    • Java EE App Server JVMPaas Operational SystemIaas
    • Java EE Application Java EE App Server JVMPaas Operational SystemIaas
    • Java EE ServicesPersistence Java EE ApplicationMessagingTransaction Java EE App Server Security Resource JVM Cache PaasComponent Operational System Iaas
    • 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
    • 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
    • Evaluated PaaS
    • Challenges• Elasticity• Deployment model• Support to Java EE full stack• Proprietary services• Resource handling
    • Load BalancerVirtual Machine
    • Load BalancerVirtual Machine
    • Load BalancerVirtual Machine
    • Load BalancerVirtual Machine
    • 1000 users Load BalancerVirtual Machine 100 users per VM
    • 500 users Load BalancerVirtual Machine 50 users per VM
    • 100 users Load BalancerVirtual Machine 10 users per VM
    • 100 users Load BalancerVirtual Machine 100 users in a VM
    • 100 users Load BalancerVirtual Machine 100 users in a VM
    • Agenda• Motivation• Challenges when deploying Java EE on cloud computing• Some tips & tricks• Some evaluated Java PaaS• Java EE adapter for cloud services
    • Typical JavaEE Application
    • 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
    • Elasticity
    • 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
    • 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
    • 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
    • Elasticity Challenges• State management• Application startup time• Communication complexity• Resource discovery
    • State management• Design for stateless services • Use stateless EJB• REST. • JAX-RS.• JSF features. • Client state saving. • Preemptive navigation (bookmarkable URLs).
    • 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.
    • 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.
    • 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.
    • 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
    • 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
    • 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
    • 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
    • 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
    • Resource discovery• Let resource management to the container. • Resource location became transparent to application by using CDI.• Use load balancers to access internal resources.
    • 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
    • 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
    • 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
    • Agenda• Motivation• Challenges when deploying Java EE on cloud computing• Some tips & tricks• Some evaluated Java PaaS• Java EE adapter for cloud services
    • 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
    • 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"
    • Agenda• Motivation• Challenges when deploying Java EE on cloud computing• Some tips & tricks• Some evaluated Java PaaS• Java EE adapter for cloud services
    • 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
    • Thank you!• Alberto Lemos (Dr. Spock) @drspockbr http://about.me/drspockbr• Danival T. Calegari @danivaltc danivaltc@gmail.com