I'm working with Java EE since 2008 and i have a good overview of java technologies and options thanks to these experience years and to the SCWCD and SCBCD i took this year.
Since i'd like to be a software architect or a better software engineer i'm planning to take SCEA to have a better understand design solutions with Java EE platform. My question is: How much hardware, application server and features like clusters and load-balacing configuration do i need to know to pass in SCEA or to be a software architect?
I had always been a developer so i never get in contact with this kind of design/solution.
I would say that you need to know conceptually what these things do, and why you would choose them. In the case of application server clusters, it's also good to have a look at the kinds of services that they offer. I recommend not to go crazy: Look at the standard options.
So let me try to explain that a little bit.
Things like load balancers and application clusters are used to address performance issues/requirements. You need to understand that a load balancer is used to distribute traffic across multiple servers in a cluster, so that you can handle more load than a single server could handle. But then you should be aware that if traffic from one user is distributed over multiple servers, for example, the user should have the same shopping cart independently of which web server is handling any particular request. So you need to address the question how each web-server knows about the contents of this users' shopping cart. This is where services of clusters come into play. Take the most standard EJB container, which is Glassfish, and have a read through the Glassfish cluster documentation. Then you will find that Glassfish clusters offer a service called session replication, which could be a solution to the problem of the user's shopping cart.
My colleagues say there are more up-to-date books on this topic, but I think they're probably bragging and jealous. :-)
SCJP 1.4 -- SCJD Java 2 -- OCM JEA 5
Joined: Dec 06, 2011
Thanks for the answer, I'll take a look on these topics.
One last question, how do you measure what hardware do you need to deploy some system?
Joined: Dec 13, 2008
Good question. I'm afraid that the answer is simple: You don't know how many servers to deploy. Even if you read the book I recommended above, it will tell you to deploy a proof of concept (a small scale version of the real system), and *measure* the performance. Then you calculate the number of servers from there.
Of course that's not feasible for SCEA/OCMJEA. So all you have is gut feeling, but you should try to work out the numbers. For example, maybe your feeling is that a server can handle 50 users before maxing out the CPU. How many page loads and how many HTTP requests per second id thay, considering your performance requirements? Does the number seem to make some sense?
This is a difficult one. If anyone has a better answer, I'd love to hear it!
As per my understanding, we do not have any specified methods to measure the hardware specification for a particular application. It depends on so many parameters, like network, type of server , server capabilities, ......
Before finalizing the hardware, We need to finalize the request rate for a certain period of time and number of users are going to use the system. Configure the Hardware which should support double the measured requests rate and users.
Based on problems faced earlier and previous experience with server configurations, Architects/senior people can conclude hardware configurations. After initial assumptions, we need to start with hardware configurations and test the applications. If hardware is not supporting then keep on increase/double hardware configurations and test util application reaches the stable state and needed requirements.