Tuesday, June 15, 2010

Redefining Scalability

Scalability matters to enterprise software. Enterprises have usually much more complex requirements than consumers or small businesses and so there are different expectations on enterprise software and scalability is always right up there with security, reliability, and customizability. The idea of scalability is that the deployment needs to be able to grow as the enterprise growths. Surprisingly, that is not always the case for enterprise software as sometimes, scalability is an afterthought for the vendor.
Scalability has been traditionally defined as the ability to grow the deployment in size without any degradation in performance. The growth could be measured as:
  • number of users,
  • amount of transactions, or
  • volume of data.
The growth in one or more of these metrics can put tremendous pressure on the system performance and only well scalable systems can cope with such growth.
That said, scalability has to consider additional factors besides the performance metrics. No, I am not suggesting that performance doesn’t matter. Au contraire! With trends such as mobility, process automation, and relentless data growth, performance matters a lot. But other things matter too:

1. Distributed environments
Enterprises operate often in multiple locations and working in a geographically distributed environment requires the ability to preserve user proximity to data for performance, while maintaining data consistency and integrity. That’s easier said than done and only scalable systems can do it well enough to support tens or even hundreds of locations.

2. Leverage
Deploying enterprise software is inherently expensive, due to its complexity, integration with other enterprise systems, customization, and the above mentioned performance requirements. Because of this cost, the system scalability improves with economies of scale. Basically, the deployment becomes more cost effective when it can be used for more applications. Similar classes of applications can share a significant portion of their infrastructure for multiple use cases. This kind of leverage is a characteristic of a scalable system.

3. Downward Scaling
While most scalability concerns deal with performance growth, modern applications need to be able to also scale down easily when the performance is not required. High volume of people, transactions, or data usually comes in peaks and provisioning a system for the peak is exceedingly expensive. The only economic solution is to have multiple systems share the resources via a grid or virtual environment. But any software that hogs the resources and does not share them well with other applications is simply not scalable.

4. Customization
No two enterprises are the same. There may be similarities across industries or geographies but enterprises are like living organisms and every single one of them is different. Therefore, any software deployment – on premises or in the cloud – requires some degree of customization that adapts the software to the needs of the organization. This customization may include adaptation of the user experience, definition of the data model, integration with other systems, etc. As the organization growths in any dimension, the amount of customization often grows as well. The degree to which any software makes such customization possible and easy is also an aspect of scalability.

Enterprise software needs to be scalable but scalability is not all just about performance.

No comments:

Post a Comment