The previous two architectural dimensions (infrastructure service dependencies and logical tiers) mostly concern logical aspects of architecture, namely which components are needed to interact in what way to deliver services to end users. Another equally important dimension of any deployed solution is the ability of the solution to meet quality of service requirements.
The quality of service dimension of solution architecture highlights the roles played by Java ES service quality components.
As Internet and e-commerce services have become more critical to business operations, the performance, availability, security, scalability, and serviceability of these services have become key quality of service requirements of large-scale, high-performance deployment architectures.
To design a successful software solution, you must establish relevant quality of service requirements and design an architecture that meets those requirements. A number of important service qualities are used to specify quality of service requirements. These service qualities are summarized in the following table.
Table 2–2 Service Qualities Impacting Solution Architecture
System Service Qualities |
Description |
---|---|
The measurement of response time and latency with respect to user load conditions. |
|
A measure of how often a system’s resources and services are accessible to end users (the uptime of a system). |
|
A complex combination of factors that describes the integrity of a system and its users. Security includes physical security of systems, network security, application and data security (authentication and authorization of users), as well as the secure transport of information. |
|
The ability to add capacity to a deployed system over time. Scalability typically involves adding resources to the system but should not require changes to the deployment architecture. |
|
The ability of a system to handle unusual peak load usage without additional resources. |
|
The ease by which a deployed system can be maintained, including monitoring the system, repairing problems that arise, and upgrading hardware and software components. |
The quality of service dimension strongly impacts a solution’s deployment architecture: how application components and infrastructure components are deployed in a physical environment.
The service qualities that affect deployment architecture are closely interrelated. Requirements for one system quality often affect the design for other service qualities. For example, higher levels of security might affect performance, which in turn might affect availability. Adding additional computers to address availability issues through redundancy often affects maintenance costs (serviceability).
Understanding how service qualities are interrelated and which trade-offs to make is key to designing deployment architectures that satisfy both business requirements and business constraints.
Several Java ES components are used principally to enhance the quality of services provided by system service components or distributed application components. These software components are often used in conjunction with hardware components such as load balancers and firewalls.
The Java ES service quality components, introduced in Service Quality Components, are summarized as follows:
Availability components. Provide near-continuous uptime of a deployed solution.
Access components. Provide secure Internet access to system services, and often provide a routing function as well.
Monitoring components. Provide real-time information about Java ES components.
The following table lists the most important Java ES service quality components from an architectural perspective with the system qualities they impact most.
Table 2–3 Service Quality Components and the System Qualities Impacted
Component |
System Qualities Impacted |
---|---|
High Availability Session Store |
Availability |
Monitoring Console |
Serviceability |
Security Scalability |
|
Sun Cluster |
Availability Scalability |
Sun Cluster Geographic Edition |
Availability Scalability |
Web Proxy Server |
Security Performance Scalability |
Sun Cluster software provides high availability and scalability services for Java ES components and for applications supported by Java ES infrastructure. A cluster is a set of loosely coupled computers that collectively provides a single client view of services, system resources, and data. Internally, the cluster uses redundant computers, interconnects, data storage, and network interfaces to provide high availability to cluster-based services and data.
Sun Cluster software continuously monitors the health of member nodes and other cluster resources. In case of failure, Sun Cluster software intervenes to initiate failover of the resources it monitors and uses the internal redundancy to provide near-continuous access to these resources.
Sun Cluster data service packages (sometimes referred to as Sun Cluster agents) are available for all Java ES system service components. You can also write agents for custom-developed application components.
Because of the control afforded by Sun Cluster software, it can also provide for scalable services. By leveraging a cluster’s global file system and the ability of multiple nodes in a cluster to run infrastructure or application services, increased demand on these services can be balanced among multiple concurrent instances of the services. When properly configured, Sun Cluster software can therefore provide for both high availability and scalability in a distributed enterprise application.
Because of the redundancy necessary to support Sun Cluster environments, inclusion of Sun Cluster in a solution substantially increases the number of computers and network links required in your physical environment.
Unlike the services provided by other Java ES components, Sun Cluster availability services are distributed peer-to-peer services. Sun Cluster software therefore needs to be installed on every computer in a cluster.
An extension to Sun Cluster software is provided by Sun Cluster Geographic Edition, which protects applications from unexpected disruptions using multiple clusters that are geographically separated and an infrastructure that replicates data between clusters.
Sun Cluster and Sun Cluster Geographic Edition are supported on SolarisTM Operating System (Solaris OS) only.