Information Technology Reference
In-Depth Information
4.1.1.2 Maintainability
Given the inevitability of change, software components must be designed
to support modification and extension over their lifetime. Maintainability
enables utilization of software components over time. Developers use well-
known software engineering techniques to achieve this goal. In addition to
producing well-written documents for the source code and for the software
itself, the software design and the strict usage of appropriate standards, best
practices, patterns, and naming conventions are crucial. Analysis, design,
and coding patterns help to develop a common language and encourage the
use of best practices and simpler, more intuitive ways of understanding and
maintaining applications.
4.1.1.3 Scalability
Enterprise applications are long-term investments and are meant to adapt
to changing business needs. One of these needs is the capability to scale
according to usage requirement. Scalability, in contrast to maintainability,
does not imply an actual change of the features of certain software but rather
addresses the need to sustain a running and most importantly usable system
in terms of growing or fluctuating number of users and corresponding traf-
fic of queries and reporting.
There are two major different techniques to achieve scalability: vertical
scaling and horizontal scaling. With vertical scaling, an existing system is
basically extended or updated to increase the capacity of existing hardware
or software adding more processing power or, for instance, data storage. In
contrast, horizontal scaling or clustering involves adding multiple entities
of hardware and software together to act as one single logical unit. Vertical
scaling is possible for most applications, whereas horizontal scaling may not
always be possible or efficient enough. Mixtures of these two approaches are
often referred to as diagonal scaling. Which of the aforementioned scaling
techniques eventually is best for an application depends on many different
factors, such as the programming language, architecture, deployed proto-
cols, message size and frequency, requirements on the deployment environ-
ment, throughput, responsiveness, availability, or the total cost of ownership.
As an example, consider a two-tier application with an old mainframe-based
database. Porting the database to another hardware system, changing the
entire database, or enhancing the existing database with clustering capabili-
ties would be very expensive. In this case, vertical scaling is a better choice
because it is less invasive than the horizontal approach and does not neces-
sitate any internal changes on the application. In case of a typical three-tier
application with a Web front-end and an application server and a database in
the back, horizontal scaling is more flexible. New nodes of the Web front-end
can be added dynamically as soon as the load increases, thus providing the
flexibility by allocating resources dynamically where needed.
Search WWH ::




Custom Search