Topic: The Modularity of Codes and The Scalability of The Systems
Topic: The Modularity of Codes and The Scalability of The Systems
Modularity in Computer Science is related to the fact that a code is composed of parts known
as modules, whose programming technique is known as structured design. This concept is
based on the ability of a system to be studied, seen and understood as the union of several
parts that interact with each other in order to solve a problem or achieve a goal. Each of
these parts in which the system is divided is called a module. Ideally, a module should be
able to meet the conditions of black box, ie, be independent of the rest of the modules and
communicate with them (with all or only one part) through some inputs and outputs well
defined.
Through these modules, complex and tedious tasks such as a closed block are avoided,
moving to other simpler ones and from this methodology to the solution. This technique is
also called as top-down design or theory of divide and conquer (top - down). In summary,
through this strategy we will work with sub-problems that will be solved individually and at
the end will be integrated as a whole, in case that a module needs another one, these can
communicate through a communication interface that must also be well defined.
Another very important issue in relation to the design of computer systems is what is known
as Scalability. This can be defined as the capacity of adaptation and response of a system
with respect to its performance as the number of users of the system increases significantly.
Scalability is a critical factor in the growth of a system. If a system aims to grow in the number
of users while maintaining its current performance, it has to evaluate two possible options:
With a more powerful hardware or with a better combination of hardware and software. In
this sense it is possible to distinguish two types of scalability, vertical and horizontal:
Concept related to scaling up, adding more resources to a single particular node within a
system, such as adding memory or a faster hard drive to a computer, in other words it means
migrating the entire system to new hardware more powerful and efficient than the current
one. The idea is that applications running under the old hardware architecture do not suffer
from the migration and that the impact on the code is minimal.
Horizontal Scalability
Figure 1. Difference between vertical and horizontal scalability (Image taken from Erik Rivera, Pycon
Latam).