Scalability to Sustainability

Expand All
Horizontal and Vertical Scaling

Scalability, is a vital component to any business in any industry. But what makes it’s so important that businesses need to consider this attribute in their IT infrastructure? Scalability refers to the capability abilities of a system, network, or process. Scalability differs from economies of scale, but it is a top priority for companies when deciding on investment decisions. It is essential to consider Scalability and is considered a valuable attribute to business because the advantage is the ease and attractive low cost of adjusting to size/workload. It is also important especially when picking the operating system since it can be a costly decision if one has to change the operating system due to due not enough scalability.

There are many different types of measurement for Scalability. The first one being administrative scalability which is the ability to increase the number of users or organizations to easily share a single distributed system. Functional scalability enhances the system by adding new functionality with minimum effort. With geographic scalability focuses on maintaining the current state of the system such as performance; regardless of the size of expansion. With any system it must be able to distribute the load easily to optimize its performance. Load scalability is the ability for a distribution system to easily expand and reduce the resource pool to accommodate according the weight for loads or number of inputs. As time goes on, new generations of components come out. With generation scalability, it refers to a systems flexibility to scale up in order to accommodate new updated generation of components and hardware.

From a financial standpoint, a scalable business model is a simple idea. Accountants and investors consider a model scalable if it increases revenues while decreasing the cost. This view also considers fixed costs and variable costs. Fixed costs are the costs that a company takes on regardless if they make profit or not and variable costs are the costs that the company takes on after a transaction. Economies of Scale in a scalable model means that a business’s variable costs decrease and the business expands. The relationship between cost of goods sold and revenue are also major components in scalability. Investors find companies that have very low cost of goods sold usually at least have an opportunity to have a scalable model, if not so already. Gross margin is the difference between revenue and cost-of-goods sold. This also demonstrates if a company’s model is scalable.

With scalability being applicable in many different aspects in the environment, there are numerous examples of how it is practically used and deployed. Operating systems are highly scalable. Linux is great example of this. Its credibly scalable due to upgrading and replacement of a number data structures in the core of the operating system to accommodate huge amounts of memory and hard disk drive capacity. A routing protocol is also considered to be scalable in regards to network size. Since a routing protocol entails the communication method between routers, breaking down information to allow them to select routes between nodes on the network. With the Domain Name System being a naming system for computer, services, and or any component connected to a private network or the internet. The nature of the Domain Name System is said to “scale well” due to its nature to efficiently work despite when all hosts on the network or internet are being served. Online transaction processing system also require scalability qualities. It can be easily scaled upward with the addition of new processors and storage without downtime.

Horizontal and Vertical Scaling

To utilize current resources as well as adding more and new resources, there are two broad categories for scaling: horizontal and vertical scaling. Scaling horizontally is the addition or removal of nodes within a system. An example of adding a node would be adding a new computer to a distributed software application. Scaling vertically refers to the addition or removal of resources within the actual node within the system. This can be anything from adding more CPUs to adding more memory for one machine. Virtual Machines can also fall under the category of vertically scaling due to its ability to provide more resources for the operating system and application modules to share. Scaling up is taking advantage and utilizing these resources. Application scalability falls under scaling vertically since it is oriented to performance improvement of applications within a scaled-up system.

Despite scalability being a great thing for businesses, there are some cons. With an increase in nodes/ computers also means increased oversight and an increase in management complexity. Which can also lead to a more complex programming layout. This can lead to some applications not working on the network.

In regards to data storage, scalability can be defined as the maximum storage cluster that provides 100% data consistency.Which is just one valid version of stored data within the entire cluster. Clusters also provide “lazy” redundancy by updating copies with a method known as eventually consistent. While this method of scaling out is preferred if responsiveness is preferred over consistency. This would be more suitable for web file hosting services. However, this would not be ideal and should be not be deployed for transaction oriented applications.

Horizontal and Vertical Scaling Click to enlarge

Like anything in life, there is always going to be the strong and the weak. However, in the context of performance computing, this can be slightly misleading. Strong scaling refers to the solution time and how it varies with the existing number of processors for fixed total for problem. Parallel codes are associated with strong scaling. While weak scaling refers to how the solution time varies with the number of processors for a fixed problem size per processor (reword). When the number of processors is increased then the system size also increases by the same number of units.

Horizontal and Vertical Scaling Click to enlarge

Another great example of the execution of scalability is Microsoft. With software being an established scalable business model as it provides a single image of the operating system to hardware vendors, and from there hardware vendors charge for the documentation and copies. This is a perfect example of Microsoft receiving revenue with zero cost-of-goods sold. This being the reason they hold almost 78% market share for desktop operating systems. Being a company with a scalable business model, and scalable systems is the primary reason for their high market share. This is a fine example of how scalability has a positive correlation with the percentage of market share.

Horizontal and Vertical Scaling

There are also indicators that strong data consistency is existing. One is the use of InfiniBand or Fibrechannel to avoid the degrading process that can potentially occur with an increasing cluster size along with the additional redundancy. Short cables are also another great indicator as it is a sign for lower signal runtime and less exposure to the external environment. Eventually consistency also has some indicators. One indicator being that the write performance increases with the number of connected devices. If the storage cluster is partitioned and everything remains responsive, then that is another eventually consistency indicator. This can potentially run the risk of having conflicting updates. Eventual Consistency is a model that is used to achieve high availability that informally guarantees that as long as no new updates are made to a given data item, all accesses to that item will eventually return to the last updated value.

Inconsistency can be tolerated, if it is for the right reasons. One reason to allow inconsistency is because it can improve read and write performance under high concurrent conditions. It is also acceptable due to its nature of handling partition cases where in most circumstance it will make that particular section useless. Accepting inconsistency ultimately depends on the client application. There are many viewpoints when looking at consistency. The first being from a developer’s standpoint; how they can look at data updates. The second viewpoint is form the server side; how these data updates flow through the system and can the system give these updates with 100% guarantee.