No matter what your system does , be it insurance , banking , online travel booking or telecoms, the chances are it does the following things:
- Gets information from users over the web
- Does some business processing on that information
- Saves the information in a database.
At a conservative estimate , about 99% of Enterprise systems would fall into this category.
If so, why do you need an architect , when you can use our ‘one size fits all’ architecture diagram (below)?! Most non-trivial systems, regardless of the language they are written in (be it Java, .Net , or your language of choice) follow the pattern seen in this diagram.
There are 3 Pieces to the Solution:
- Web Browser (for the user / client).
- Web and Application Server - carry out business logic.
- Database Back End - to store data and ensure data integrity.
Within the Application Server (the middle bit above, which as Java Architects is the bit we are interested in), there are a further 3 tiers
- A Presentation tier (or layer), which is mainly about talking to the user (it gets and sends requests to the web browser).
- A Service layer , which is mainly about talking to back end such as databases, legacy systems (such as mainframes) and XML-Web services that we may use.
- A Business layer, the ‘meat’ of the sandwich, where the ‘Value add’ is in terms of business processing and validation.
For each of these layers , your priority in building them are slightly different.
- The Presentation layer is the bit the user sees. You want it to be fast and give a good impression to the client. Underneath, use a standard framework (link: pick your framework here) and then customize the look and feel.
- The Service layer you want to work fast and well (e.g. no data faults), but then then forget about. Unless things go wrong, no user is going to complement you on the quality of database persistence! Use standard libraries for the entire layer.
- Unless your company is a clone or franchise, the business layer in the system is going to be completely different. Aside from the user-interface , concentrate most of your project effort here as this is the core of what system does. We’ve written quite a bit about how to increase the value-add of the business layer (link to O’Reilly Technical Articles)
Do you agree? Would your ‘1-page-use-anywhere’ architecture be different?