Saturday, 19 October 2013

Scalability

Scalability

Scalability of an application is particularly important for large enterprise Portals deployments where individual server cannot support the anticipated load. In such cases, the Portal provides the capability to cluster multiple instances of the application. This can be achieved by either installing multiple instances of the Portal on a single server with a large number of CPUs and having each instance run in a separate Java Virtual Machine (JVM) or installing single instances of the Portal on separate servers or finally, a combination of both. 

Vertical Scalability is defined as the Scalability of an application as additional CPU's are added to the same server. On the other hand, Horizontal Scalability is defined as Scalability of an application as additional servers are added to the environment

If Portal to be deployed on a server with more than 4 CPU's, some testing should be done to determine the optimal performance of the application in this situation. For Example, on an 8 CPU server there may be some performance improvements by running two instances of the Portal. The reasons for this are primarily related to the manner in which the operating system, application server and JVM handles the scheduling of threads across a large number of CPU's. This is also subjected to change as subsequent versions JVM's are released to market. In addition careful tuning of the application server is required to ensure that the load on a single instance can be most effectively supported (e.g., WebSphere Web Container Thread Pool Parameters). Consequently, when scaling the Portal vertically (above 4 CPU's), some performance testing should be carried out to determine the optimal deployment of the application

For Horizontal Scalability, the only limitation on the Scalability of the Portal will most likely be from the network or database perspective (the database is shared resource between all instances of the Portal in a particular cluster). Any other system component that is shared by all Portal instances (e.g, LDAP Directory server) can potentially create a bottleneck and prevent further scaling of the application

With several Portal instances running in a clustered environment that it is important to ensure that the required Portal network throughput is below 70% and maximum network bandwidth available at peak periods (i.e., maximum of 8 MB/sec on a 100 MB/sec network). Network throughput levels above this will impact average response times for end users during these periods. If this is the case, it is recommended to distribute the Portal instances onto different network segments over a 1 Gb/sec backbone

Similarly in a large Portal clustered deployment, it should be ensure that the database resources at peak periods can adequately support the number of instances in the cluster. Database CPU utilization of above 75% at peak periods can greatly impact the Portal performance depending on the types of queries being executed at that time

With these caveats in mind, it is recommended that the Scalability of the Portal be handled horizontally rather than vertically if the number of Production CPUs is more than 4. Horizontal Scalability provides the best Scalability and also has additional advantages of fail over and redundancy in an enterprise deployment. The only significant drawback to achieving Scalability in this way is the cost and maintenance overhead

2 comments: