This is the second installment in our weekly technical blog series about Enterprise Content Transformation, titled: What Enterprises Need. The series kicked off with an overview of the reasons your organization needs an ECT platform. This post discusses the importance of scalability when investing in business applications.
First, let’s agree on what Scalability is. According to Webster’s Dictionary, scalability is how well a solution to some problem will work when the size of the problem increases.
When it comes to business applications, scalability can be accommodated to a limited degree by increasing the investment in the hardware that it runs on. A faster processor, more memory, and faster disk access can provide some relief, but is limited to the maximum capacity of available hardware.
To be truly scalable, a business application must be able to operate on multiple servers. As demand for the business application grows, the enterprise can add additional servers to meet that demand. In most cases, however, each new server only provides a percentage of performance of the original server. This is due to the overhead of managing the multiple server and the demand that is placed on them.
If a single server is able to process 100 units of work, then it would be expected that two servers would be able to process 200 units of work. Unfortunately, the effort to manage the distribution of work can consume a portion of each server’s capability, so in most cases, additional servers means an increase to the overall overhead, and thus a diminished increase in overall capacity with each additional server.
A common consideration for overhead is 10% of capacity per server. Assuming 100 units of work per day for the first server, with a 10% overhead for each additional server, the overall capacity of 10 server is 550 units, or only 55% of the expected capacity.
By reducing the overhead associated with managing multiple servers, or by removing the responsibility of this management from the servers to a dedicated management server, it’s possible to achieve much more efficient scalability.
In the next example, we take a business application which is designed for enterprise scalability and, using the same numbers but with an overhead of only .2%, we realize an overall capacity of 991 units per work day for 10 nodes, achieving 99.1% of the expected capacity.
In the case of Enterprise Content Transformation, an architecture that supports low-overhead scalability is a must-have. Content Transformation is very CPU and disk-intensive, often requiring multiple servers to meet high-volume requirements while accommodating tight Service Level Agreements, or to provide High Availability, Fault Tolerance and supporting Disaster Recovery plans.
Adlib’s architecture is designed for high scalability, meaning it is a simple process to add additional servers, and the overhead for managing the load across servers is minimal, achieving perfect linear scalability.
When deploying multiple servers for Fault Tolerance and High-Availability, there is also the added benefit of deploying in an Active-Active fashion. It is common practice to utilize a fail-over cluster approach where you have a Active/Inactive deployment, where one server is in production and use, and if it fails, then the backup server will take its place. This approach has a number of disadvantages:
- Backup hardware is rarely (if ever) utilized – meaning an inefficient use of available resources
- The mechanism for switching needs to be periodically tested to ensure that if a failure were to occur, the service will continue to be available
With Adlib, the architecture permits an Active/Active deployment, meaning that both the primary and secondary servers are always in use. The benefits: Capacity is effectively doubled, and the mechanism to distribute the load across the available resources is constantly utilized, making is simple to apply patches and OS updates to one server while the other continues to function normally. (No special provisions or switching needs to take place)
When investing in business applications, it is important to consider the scalability of the application:
- What is the long-term strategy for this technology in your enterprise, and is there a feasible plan for increasing the capacity and capability of this investment as you grow?
- Or are you going to need to replace the technology and find one that grows with you?
- Or even worse, will you need to invest more and more into a technology that will provide you with less per dollar with each investment?