When any distributed system development basic components needs to be consider are Scalability, Efficiency, Reliability, Manageability and Availability.
Scalability means system can be scaled in processing, network grow or memory capabilities increased or number of systems may increase as per demand.
Horizontal Scaling: Adding more systems/devices, it can be changed dynamically without reboot or interrupting current service.
Vertical Scaling: Adding more power like adding CPU's, RAM, Memory to existing system/devices, It may required to reboot or stop the service for upgrade time.