I would appreciate advice on technical choices for a large web application.

Application Server: Sun Java System Application Server Platform 8.2

JDK: J2EE 1.4

Database platform: Oracle 9i

I am currently in the middle of designing a large, not enterprise, web application.

At this point, I have the requirements, ERDs, UML diagrams, several initial JavaBeans and POJOs contributed from other developers. So, planning is going well...

This is a customer service application to manage customer accounts.

I have the following sections, each section are several applications, except for the main app, which is one application:

Option Maintenance - manages data used within the main app.

System Maintenance - manages data used within the main app.

Client Maintenance - manages data used within the main app.

Event Log Browser - a historical events viewer of events in the main app.

Transaction Browser - similar to Event Log Browser with transaction data.

Admin. Maintenace - manages users of the application.

Customer Management - main app.

A user will authenicate into the main app and based on authorization, a user main also see all or specific management sections and browsers.

I need advice on the best way to approach this in terms of making technical choices?

I understand the MVC pattern, so my original though would be to use the framework within JSF. FacesServlet, etc...

Again, this isn't an enterprise application by any means, but it does need to be able to scale. In later phases, when asked to add another application - I don't want to look back and say "why did I do this?"

I just want to make sure I am making good technology choices based on known requirements.

Thanks,

--Todd

[1741 byte] By [jtp512a] at [2007-10-2 17:30:24]
# 1

Not sure why you think this doesn't qualify as an enterprise application. But any ways.

Have you scaled the usage? Do you know how many users will use it in the first month and three years from now?

What does the average user do? What does the unaverage user do?

Are there any priority customers (like 50% of the companies business comes from one customer)? If so then it would be a really good idea to find out what they want and what they want to do.

What is the liability and security context? In other words what happens if some kid gets access to an account?

What are the future directions that the software might grow? What resources will it need? How will it be tested? How 'perfect' must it be when it goes live?

How much time do you have to do it?

jschella at 2007-7-13 18:47:15 > top of Java-index,Other Topics,Patterns & OO Design...
# 2

jschell: Thank you for the questions, these help a lot.

Q: Have you scaled the usage? Do you know how many users will use it in the first month and three years from now?

Yes, it is figured that we'll start with twelve users, with an increase of about one or two new users per year, not very much at all.

Q: What does the average user do? What does the unaverage user do?

The average user will only use the Customer Management - main app. They will be logged in throughout the day managing accounts based on any customers calling in.

Another average user will use the Browser based applications to check daily transactions, however this is usually towards mid-morning and in the evening.

An unaverage user will use the Maintenance based applications to set-up the data or make any changes. The Maintenance based applications will be rarely used after set-up.

Q: Are there any priority customers (like 50% of the companies business comes from one customer)? If so then it would be a really good idea to find out what they want and what they want to do.

Not really priority customers, but priority call times. Most calls happened between 6:30AM - 10:00AM CST. During that time, the Customer Management - main app will be used by all twelve users.

Q: What is the liability and security context? In other words what happens if some kid gets access to an account?

This is an internal application, hosted inside a DMZ. A user must authenticate (log in) to use the application.

What I have yet to deal with is how do I force authentication if a user tries to obtain access to an application through their browser history or even by typing in a URL... That's another topic in itself.

Any transactions with in the Customer Management - main app, will be logged - in which these logs can be view by the Transaction Browser.

Q: What are the future directions that the software might grow? What resources will it need? How will it be tested? How 'perfect' must it be when it goes live?

The only known growth for the software would be adding additional report viewers or monitor features to help track customer transactions.

Hardware resources, the application be hosted on a SunOS 5.8 Generic_117350-02 sun4u sparc SUNW,Sun-Fire-880. There are 8 Sun Sparc 900Mhz chips.

Testing will occur in phases at the development stage, then it will go through a full QA stage performed by the QA Department.

At minimum, the Customer Management - main app and Transaction Browser must be "perfect".

Q: How much time do you have to do it?

I have three months.

jtp512a at 2007-7-13 18:47:15 > top of Java-index,Other Topics,Patterns & OO Design...
# 3

Excluding the reporting part that you mentioned it sounds like a very small volume server.

You need to size the reports to verify that they will not take more than seconds to run. What is the technology used to produce the report itself? From a database? Just display an existing file? Access Crystal Reports? Etc?

If you attempt to use technologies that you are not familar with then you are going to end up adding quite a bit of risk. You certainly don't want to add a variety of new ones.

Depending on the security requirements and the complexity of the screens (presuming the reports are not significant) then you could certainly add one.

Keep in mind that you are really unlikely to produce an ideal implementation of a new technology though.

jschella at 2007-7-13 18:47:15 > top of Java-index,Other Topics,Patterns & OO Design...
# 4
Too bad you're short on time, otherwise this would be a nice project to learn Spring with. When you use Spring you'll never look back and say "why did I do this?" http://www.springframework.org/ http://www.springframework.org/bookreview
LumpyNosea at 2007-7-13 18:47:15 > top of Java-index,Other Topics,Patterns & OO Design...
# 5

LumpyNose: I had started to look at Spring, however what I ran into was a lack of good information. The books published by Wrox and Manning Press, really didn't give the detail that I was looking for.

I am using JSF for this project, I am comfortable with JSF at this point.

Thanks,

--Todd

jtp512a at 2007-7-13 18:47:15 > top of Java-index,Other Topics,Patterns & OO Design...