Note that there are some explanatory texts on larger screens.

plurals
  1. POAmazon Cloud configuration for Java EE web app with MySQL
    text
    copied!<p>In my work I need to move some existing Enterprise Java applications to AWS. I have gone through many pages on aws.amazon.com and also googled enough. Also, I have tried to go through all the related questions at stackoverflow. All these things made many things clear, however, I am still having some confusion. Here is our application structure:</p> <ol> <li>It is a Spring based application which uses Spring MVC as its presentation layer and plain Java Interfaces and Classes for handling business and data logic.</li> <li>MySQL is used for persistence.</li> </ol> <p>So, the application architecture is simple enough. However, the catch is that we need to deploy many instances of this application. This count is currently 15 and can go beyond 30. One more point is that all these instances share a common database.</p> <p>Now here is what we need to achieve by moving to AWS:</p> <ol> <li>Higher fault tolerance for the application. Recently we faced a server/power failure in dedicated hosting causing some hours of down time.</li> <li>Higher performance for all instance of the application in terms of response time and throughput.</li> <li>Higher fault tolerance for MySQL. Application instances went down on one of our servers recently due to some hardware(Hard Drive) which basically caused MySQL to stop unexpectedly. The whole file system on the hard drive went read only causing malfunctioning of the application instances hosted on that server.</li> <li>Obviously reducing the total cost and overhead of infrastructure management.</li> </ol> <p>As far as I am able to understand AWS infrastructure till now, here is what we would need in AWS for our setup:</p> <ol> <li>4 instances, each hosting about 10 application instances, of some EBS based LINUX AMI with Tomcat and MySQL installed on that.</li> <li>I am guessing that we would also need 1 instance for fault tolerance for each of those 4 instances totaling 8 instance in all.</li> <li>All of the server instances would have about 160GB of EBS.</li> <li>4 Elastic IPs</li> <li>4 Elastic Load Balancers</li> <li>Other stuff like snapshot etc</li> </ol> <p>Now here are my questions:</p> <ol> <li><p>Do I really need to have that extra server instance(for fault tolerance) for each main server instance, considering the face that EBS are automatically backed up by AWS and they would provide new EBS with same data in case of hardware failure?</p></li> <li><p>How would I share database among all server instances (4x2) in above scenario? One option I am seeing is to implement MySQL clustering among those server instance. Lets say, the MySQL cluster would contain 1 Management Node, 3 SQL nodes and 4 Data Nodes. However, in this case maintaining the cluster would be an additional overhead for us and this may not be accepted as we would like get rid of infrastructure management.</p></li> <li><p>Do I need to have RDS instead for database and remove MySQL instances from all server isntances (4x2)? If yes, would I need to buy RDS instances in addition to EC2 instances (I think, if I need to buy separate instances for RDS then cost of total infrastructure would increase at least by 75%.) or the RDS instances also gives compute units for application development thus reducing the total number of instances for application deployment?</p></li> <li><p>In case of RDS implementation, does one really need EBS based EC2 instances? If we can some how remove EBS requirement from EC2 instances with RDS instances in place, we can reduce the total cost.</p></li> </ol> <p>Any help would be appreciated and please let me know if I am not clear to specify my problem and need more clarification for any point.</p>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload