Scalability
- Scalability
- the quality factor
representing the degree of easiness with which a
business enterprise,
system,
application, or
component
can be modified to increase its existing capacities
As illustrated in the preceding figure, Scalability is part of the following inheritance hierarchy:
The typical responsibilities of scalability are to:
- Model the ease with which an enterprise, application, or component can be modified to increase its existing capacities.
- Support the analysis and specification of
scalability requirements.
- Provide a foundation for evaluating the quality of an architecture.
Scalability is typically decomposed into the following aggregation hierarchy of subfactors:
Scalability is typically measured in terms of the:
- Average effort (i.e., person-time) to scale up in a specific way a specific amount.
- Average cost to scale up in a specific way a specific amount.
- Average calendar time needed to scale up in a specific way a specific amount.
Typical mechanisms for implementing scalability include:
- Increasing the amount of hardware components and subcomponents:
- Additional servers.
- Additional CPUs per server.
- Additional RAM per server.
- Additional storage libraries.
- Additional ports.
- Load balancing software components or hardware components (a.k.a, layer 3–7 network switches)
allocating work to clusters of servers (e.g., web server
clusters, application server clusters, directory server clusters, database server clusters).
- Scaling up (a.k.a., upgrading) current components and subcomponents by increasing:
- CPU power.
- RAM chip size.
- Harddisk capacity.
- Storage library capacity.
- The capacity of removable storage such as disks and tape cartradges.
- Network performance by upgrading the media (e.g., replacing copper wire with fiber optics) and network
connectivity devices (e.g., upgrading routers).
- Performance tuning:
- Reconfigurating/optimizing databases.
- Identifying bottlenecks, and then redesigning and reimplementing the associated software components.
The following guidelines have been found to be useful when producing scalability requirements:
- Scalability is to developers what capacity is to users.
- Scalability requirements may specify the future ability
to handle more simultaneous users or interactions, or to
store more information in its databases.
- Scalability requirements should be tagged with future
planned releases of the system, application, or component.