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.
Avoiding Java EE Application Design Traps to Achieve Effective Use of Cloud Computing
1. Avoiding Java EE
Application Design Traps
to achieve effective use of cloud computing
Alberto 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 with
some ‘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
12. Java EE Services
Persistence
Java EE Application
Messaging
Transaction
Java EE App Server
Security
Resource JVM
Cache Paas
Component
Operational System
Iaas
13. Java EE Services
Cloud Services
Persistence Persistence
Java EE Application
Messaging Messaging
Transaction Monitoring
Java EE App Server
Security Security
Resource JVM NoSQL
Cache Paas
Storage
Component ...
Operational System
Iaas
14. Java EE Services
Cloud Services
Persistence Persistence
JPA Java EE Application
Messaging Messaging
JMS
Transaction Monitoring
JTA Java EE App Server
Security Security
JAAS
Resource JVM NoSQL
JNDI
Cache Paas
Storage
Component ...
EJB Operational System non-std API
Iaas
21. 1000 users
Load Balancer
Virtual Machine 100 users per VM
22. 500 users
Load Balancer
Virtual Machine 50 users per VM
23. 100 users
Load Balancer
Virtual Machine 10 users per VM
24. 100 users
Load Balancer
Virtual Machine 100 users in a VM
25. 100 users
Load Balancer
Virtual 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
29. Database A
Java EE Application
Database Server 1
Java EE Server
Database B
App 1 App 2 Database C
Application Server X Application Server Y Database Server 2
32. Database A
Java EE Application
Database Server 1
Java EE Server
Database B
App 1 App 2 Database C
Application Server X Application Server Y Database Server 2
33. 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 C
Application Server X Application Server Y Database Server 1 Database Server 2
34. 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 C
Application Server X Application Server Y Database Server 1 Database Server 2
36. State management
• Design for stateless services
• Use stateless EJB
• REST.
• JAX-RS.
• JSF features.
• Client state saving.
• Preemptive navigation (bookmarkable URLs).
37. 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.
38. 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.
39. 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.
40. 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 C
Application Server X Application Server Y 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 Server
Message Service
App 1 App 2
Application Server X Application Server Y
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
Database A Database B Database C
Database Server 1 Database Server 2
43. 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
Zone 01 Zone 02
Database A Database B Database C
Database Server 1 Database Server 2
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 - 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 S02
Zone 01 Zone 02
45. Resource discovery
• Let resource management to the container.
• Resource location became transparent to
application by using CDI.
• Use load balancers to access internal
resources.
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
DB A DB B DB C DB A DB B DB C
Database Server I Database Server 2 Database Server 3 Database Server 4
47. 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 C
Database Server I Database Server 2 Database Server 3 Database Server 4
48. 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 C
Database Server I Database Server 2 Database Server 3 Database Server 4
49. Agenda
• Motivation
• Challenges when deploying
Java EE on cloud computing
• Some tips & tricks
• Some evaluated Java PaaS
• Java EE adapter for cloud
services
51. 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"
52. Agenda
• Motivation
• Challenges when deploying
Java EE on cloud computing
• Some tips & tricks
• Some evaluated Java PaaS
• Java EE adapter for cloud
services
53. 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
54. Thank you!
• Alberto Lemos (Dr. Spock)
@drspockbr
http://about.me/drspockbr
• Danival T. Calegari
@danivaltc
danivaltc@gmail.com