With the constant growth of data, your systems will also need to grow. That is one of the definitions of scalability. Systems might be scaled up, down or out. Another definition might be the ability of your system to adapt to the current and future demands. With this demand, comes some details that you need to understand, that either they are involved with scalability or are options available to you.
Horizontal Scaling, Vertical Scaling, On-Premises and Cloud are some of the topics that are quite common when we talk about scalability and system’s elasticity. So, we decide to publish this article, to share with you some information about what horizontal and vertical scaling are, how they compare, how scaling applies to on-premises vs. cloud scaling, and when you should choose horizontal scaling or vertical scaling.
What is scalability?
First things first, the concept of scalability is based on the number of requests that an application can handle successfully and simultaneously. Of course, any application has a limit to its scalability. That happens once the application reaches a point at which it can no longer handle effectively any more simultaneous requests.
So, what do we do when this happens (when an application reaches its limits)? Well, usually an application reaches its limit when a critical hardware resource runs out! So, we “Scale” the resources. This can include any combination of adjustments to CPU, physical memory, hard disk and/or network bandwidth.
Then, we have the Horizontal Scaling and Vertical Scaling concepts. They are similar in what they both are involved, but when it comes to implementation and performance, there are differences between the two.
What is Horizontal Scaling?
Simply put, Horizontal Scaling (also known as scaling out) is the addition of additional machines to your infrastructure. If, for example, you are hosting an app in your server, and it no longer has the capacity to handle the amount of traffic generated, you can add a new server to handle the increase. In other words, Horizontal scaling means to add more physical machines, instead of adding resources and components.
What is Vertical Scaling?
In the other hand, Vertical Scaling (also known as scaling up) is the addition of resources to your system, for it to meet the current demand. In other words, Vertical Scaling keeps your existing infrastructure but adds more computing power to it giving it the ability to increase the current hardware or software capacity. One point to refer is that, by the obvious reasons, Vertical scaling is limited to the capacity of a single machine, so, there is an upper limit.
Horizontal vs Vertical Scaling
As we saw, the biggest difference between these scaling options is that, for vertical scaling, you add more power to your machine, being limited by hardware, while with horizontal scaling you add more machines to your infrastructure, adding complexity to the overall system architecture. You can choose either one, but they both have advantages and disadvantages…
The advantages and disadvantages of Horizontal Scaling
- Adding new machines to your infrastructure is easier than upgrading your current ones.
- Keeps downtime to a minimum. Since there is no need to switch off machines to upgrade them
- Better performance. By having various machines, more connection points are available, easing the traffic load on your server.
- Operating and maintaining multiple servers can be difficult, for their complexity.
- Excessive costs when upgrading.
The advantages and disadvantages of Vertical Scaling
- Lower costs. It will be cheaper to upgrade a server, than it is to buy a new one. Maintenance is also much cheaper since there is only one machine to work on.
- Simpler communication and faster response. Since there aren’t multiple machines, each doing specific work, it’s easier for all services to communicate with each other.
- By having only one server, the risk of anything failing and all data being lost is increased.
- There are limits to how much a machine can be upgraded.
Which one should I choose?
Simply put, there are no better or worse. As we’ve shown, there are multiple advantages and disadvantages to each model. To choose, you should consider what type of infrastructure your organization already has, the budget for the transition, the performance and costs associated with it (one vs multiple servers).
Welcome to Hive! A platform that allows horizontal scaling for Alfresco systems.
It’s a known fact that managing multiple smaller environments is more performant than having one large environment. Forget about those sleepless nights trying to rebuild your statistics or defragment your indexes. By replacing one big repository with several smaller ones, the HIVE can make Large Environments more responsive while spending less money. The HIVE allows the handling of zillions of documents, reducing some known problems on large Alfresco deployments.
And the best?! All processes happen in the backend. So, the user will always view it as a Single Big Repository. Compatible with all existing Alfresco clients including Share, ACA, ADW and REST API. The Hive head is the single point of entry so it can be seen as any standalone Alfresco server.
Download HIVE e-book!
If you’re struggling with your digital transformation, remember… you are not alone in this… Texter Blue is here to help you providing the best results! Make sure you read our news and articles and contact us.