Site icon Shine Technologies

Into the Cloud: Moving Large-Scale Java EE Apps onto EC2 & RDS

Shine Technologies has recently completed a proof-of-concept migrating the hosting of two of its enterprise products into the cloud – specifically, Amazon Web Services (AWS).

This post is aimed at technical managers interested in leveraging cloud technologies to provide new and powerful options to both existing and new clients of established products. We’ll first give a quick overview the products, and then explain why hosting them in the cloud is beneficial for us. We’ll then finish off with a couple of things we’ve learnt whilst getting our products going in the cloud.

Product architecture

NBV and NBM are two of Shine’s products for the energy industry, and are installed on various client sites throughout Australia. They have a three-tier architecture based on Java software and an Oracle database.

Users interact with the system via a desktop client application that is also written in Java. This client uses Enterprise Java Beans over the Java Remote Method Invocation (RMI) Protocol to communicate with the server. The client is designed so that most queries are sent to the server and executed in the background, with the results returned in pages to the client when they are ready.

The applications also do resource-intensive batch processing of large data files uploaded directly to the server, and produce output files that can be downloaded from the server.

Hosting

Originally, NBV and NBM were built to be hosted on dedicated machines installed within each customer’s organization and administered by their staff. The application server and database tiers run on physical servers, and the client runs on staff desktop machines.

When migrating to the cloud, the application server and database tiers are installed on virtual servers, with the client still running on staff desktop machines that connect to the servers in the same way. These two approaches are demonstrated in the following diagram:

From this diagram, we see that an Amazon EC2 instance is used for the application server, which is a virtual server with full root access on which to install the Java-based software. Furthermore, an Amazon RDS instance is used for the database, which provides a virtual server with a pre-prepared Oracle installation on which to create the schema.

First impressions after installing the system were that the internet connection to the cloud has low-enough latency and high-enough bandwidth to perform the operations required by the client desktop operation with low performance impact. Furthermore, load testing determined that, whilst batch throughput was lower than the performance of the dedicated hardware set up on-site (which uses a native operating system and local SCSI disk arrays), it was still acceptable for our customer’s needs.

Benefits achieved

We see a number of benefits of having the option to host our products in the cloud:

Issues and limitations

It’s worth noting that there were a couple of issues that we did encounter during our migration to the cloud:

Conclusion

The migration to the cloud has been relatively straightforward for our product. The product architecture has been largely compatible with cloud hosting, with only minor modifications. The cloud provides great flexibility in terms of provisioning hardware and provides new options for running enterprise applications, and a good platform for continuous deployment.

Exit mobile version