Scale Up versus Scale Out

  • We use terms like Scale Up and Scale Out often today, but not everyone is used to these terms, especially if they are used to the SMB space where scaling is often not really a thing (mostly because scale up happens transparently through generational upgrades without any planning involved making it generally ignored.)

    Scale Up or Vertical Scaling can be thought of as the traditional approach to scaling and simply refers to "making the system bigger." This can apply to storage, compute, application design, etc. It's not a technology specific concept.

    Some common examples of scaling up or vertically would be adding faster or more CPUs to a single host, adding additional RAM, growing a RAID array, giving more resources to a single VM, etc. It's about taking what you have and making it bigger, faster or more capable.

    Scaling Out or Horizontal Scaling is a less traditional and more modern approach to scaling and refers to adding more "sibling" systems to handle additional scaling needs. Instead of making an individual system bigger, we add more systems. Examples of this are Gluster or Exablox in storage, adding more virutalization host servers or creating a second VM rather than enlarging the first.

    Both approaches have value and, of course, can be used together (building larger systems, but also more of them.) In construction terms, scaling up means moving to larger single buildings, scale out means building more buildings such as in a campus design. In most cases, scaling out is more flexible and can go farther. But scaling up, as long as it is within reason, is normally easier and more efficient.