Thursday, February 22, 2007

java Architecture tutorial

Common Architectures Scalability: Scalability is the ability to economically support the required quality of service as the load increases. Two types: Vertical and Horizontal Vertical: Achieved by adding capacity (memory, CPUs, etc.) to existing servers. Requires few to no changes to the architecture of a system. Increases: Capacity, Manageability Decreases: Reliability, Availability (single failure is more likely to lead to system failure) Vertical scalability is usually cheaper than horizontal scalability. J2EE supports vertical scaling because of automatic lifecycle management. Adding more capacity to a server allows it to manage more components (EJBs, etc.). Horizontal: Achieved by adding servers to the system. Increases the complexity of the system architecture. Increases: Reliability, Availability, Capacity, Performance (depends on load balancing), Flexibility Decreases: Manageability (more elements in the physical architecture) J2EE supports horizontal scaling because the container and server handle clustering and load balancing. Availability and reliability are obtained through scalability. Scalability affects capacity. The more scalable Next topic
manageability costs.
Maintainability How related is this to Flexibility? Flexibility is the ability to change the architecture to meet new requirements in a cost-efficient manner. A flexible system should be more maintainable in the face of changes to the environment and/or to the application itself. While maintainability is somewhat related to availability, there are specific issues that need to be considered when deploying a topology that is maintainable. In fact some maintainability factors are at cross purposes to availability. For instance, ease of maintainability would dictate that one minimize the number of application server instances in order to facilitate online software upgrades. Taken to the extreme, this would result in a single application server instance, which of course would not provide a high availability solution. In many cases it is also possible that a single application server instance would not provide the required. Flexibility improves: Availability, Reliability, Scalability Flexibility slightly decreases: Performance, Manageability Flexibility is achieved via code that can be distributed across servers with load balancing that prevents one system from being overburdened. The use of a multi-tier architecture also helps achieve flexibility. Reliability The ability to ensure the integrity and consistency of the application and all of its transactions. You increase reliability through the use of horizontal scalability, i.e., by adding more servers. This only works up to a certain point, though. When you increase reliability you increase availability. Next Page
Throughput, while related to performance, more precisely involves the creation of some number of
application server instances (clones) in order to increase the number of concurrent transactions that can be accommodated. As with performance, the application server instances can be added through vertical and/or horizontal scaling.