Scalable Architectures
Vertical and Horizontal Scalability
Vertical scaling means that you scale up the system by deploying the software on a computer with higher capacity than the computer it is currently deployed on.
- The new computer may have a faster CPU, more memory, faster and larger hard disk, faster memory bus etc. than the current computer.

Horizontal scaling means that you scale up the system by adding more computers with your software deployed on.
- The added computers typically have about the same capacity as the current computers the system is running on, or whatever capacity you would get for the same money at the time of purchase (computers tend to get more powerful for the same money over time).

Architecture Scalability Requirements
Task Parallelization
Parallelization of tasks can be done at several levels:
- Distributing separate tasks onto separate computers.
- Distributing separate tasks onto separate CPUs on the same computer.
- Distributing separate tasks onto separate threads on the same CPU.

- Executing multiple different applications on the same computer, possible using the same CPU or using different CPUs is referred to as "multitasking".
- Distributing tasks inside the same application to different threads is referred to as "multithreading".