This document illustrates the solution EPAM worked out for such a subtle problem as making an application ready for the Cloud. Through the example of a standard J2SE application, we will show you the whole process from definition of bottlenecks through their elimination and up to assessment of the results.
The previous months have seen Cloud Computing become a major trend up to the point where even customers previously unaware of the Cloud Computing concept wish to host their applications in one of those.
However, this approach inevitably leads to the same problem over and over again. Having decided to move to the Cloud, customers take their existing applications, somehow deploy them in the Cloud... and no difference from simple virtual hosting is what they most commonly get as a result as their applications are most definitely not ready for the Cloud.
Moreover it is not uncommon that deploying applications designed without scalability in mind in the Cloud results in sufficient degradation of performance.
This is why we would like to make our application scalable, while avoiding any amendments to its code, or at least keeping them to a minimum; as every small change introduced to a code poses a big problem.
We have chosen an application being a content management system (CMS) that has been in development for quite a long time already. It has never been designed with scalability in mind and was intended to be deployed on a single server.
Addressing these problems directly requires defining problem areas. Our approach was first to break the solution architecture into logical layers and subsystem, then to carry out the analysis of each layer's capacity for horizontal scaling individually, and last evaluate possible predicaments of pulling horizontally scaled layer to operate together.
Having introduced the aforementioned changes, we moved on to comprehensive performance testing. This included running a considerable amount of tests supplying load on a single instance, than adding another instance and supplying the same load. The results showed significant reduction of response time.
The detailed and expanded version of this paper can be downloaded below.