Running JEE applications on Amazon EC2

Home

News: Running JEE applications on Amazon EC2

  1. Running JEE applications on Amazon EC2 (9 messages)

    Chris Richardson has posted "Running JEE applications on Amazon EC2: deploying to 20 machines with no money down," documenting EC2Deploy, a groovy framework (written in Groovy) that can launch MySQL, Apache httpd, a set of Tomcat instances, and JMeter, as well as deploying web applications to Amazon's Elastic Compute Cloud (EC2). The benefit here is that one gets as much computational power as desired, on demand, for ten cents (US) per 20 CPU hours. The framework isn't ready for public consumption yet, but the idea is fascinating: if you want to deploy to a cluster of servers, all you have to do is create a cloud and use them - and you'll be billed only for the CPU time you use. There's even more to the concept: you can use EC2 to run cluster instances for Terracotta DSO, GigaSpaces, and (presumably) others as well; this means that with SLA monitoring, you can guarantee computational resources for a cluster. EC2 has had the capabilities for this for a while (a Terracotta post detailing the use of EC2 appeared February 2007) but we're seeing more and more momentum in this area, as more tools show up to aid the process. Thanks, Chris! Resources

    Threaded Messages (9)

  2. We've been doing EC2 deployments for our QA and DEV environments for a while now. Though IMO it's ready for production, there are some issues with deploying it for such purposes I'll describe shortly. We basically created a home grown configuration framework that allows us to set up custom server profiles and store them in S3. We then can bring up any instance by specifying a profile or a chain of profiles that we want in the user data that's allowed to be specified while starting an image. We can basically specify that we want 20 servers started with a particular profile and they are up in less then 5 minutes. Another way of doing it would be to actually build your server and then create an AMI (image) which will start, but we needed something more flexible, so our framework builds the servers on the fly and you can mix and match profiles. Profiles are scripted in ruby or bash. Now, production wise, although I think EC2 is ready for prime time, there is a scalability issue (though not with EC2). EC2 only allows you to scale your app servers, but scaling app servers without scaling your database would eventually create a DB IO bottleneck. Unfortunately there aren't many products out there that allow seamless horizontal scalability of your database. MySql only has a master/slave replication utility. Oracle has a cluster product, but my understanding is that it's not dynamic, meaning a cluster cannot handle network partition issues and dynamic partition joins. Which is an issue, because you're left with a pretty much static configuration. There are cluster file system products out there like PolyServe, etc..., but I think all of those suffer from not being able to transparently run in a cloud environment seamlessly. Ilya
  3. C-JDBC?[ Go to top ]

    I've never used it for a production system, but C-JDBC might be a possibility for introducing database scalability on EC2. http://c-jdbc.objectweb.org/
  4. Re: C-JDBC?[ Go to top ]

    I've never used it for a production system, but C-JDBC might be a possibility for introducing database scalability on EC2.

    http://c-jdbc.objectweb.org/
    This sounds interesting, but docs are not very descriptive of the architecture. How does it handle replication consistency? If it's using 2PC, same issues apply as I explained in another post. http://www.theserverside.com/news/thread.tss?thread_id=48000#244898 2PC really wasn't designed as a scalable replication protocol, though it's an inefficient algorithm for replication. Also, it's algorithm is also not applicable in most scenarios where WAN replication can cause network partitions and how those are handled. Another issue arrises from dynamic node configuration. Ilya
  5. Detach from the Database[ Go to top ]

    This sounds interesting, but docs are not very descriptive of the architecture. How does it handle replication consistency? If it's using 2PC, same issues apply as I explained in another post.

    http://www.theserverside.com/news/thread.tss?thread_id=48000#244898

    2PC really wasn't designed as a scalable replication protocol, though it's an inefficient algorithm for replication. Also, it's algorithm is also not applicable in most scenarios where WAN replication can cause network partitions and how those are handled. Another issue arrises from dynamic node configuration.

    Ilya
    The reference to Terracotta and Gigaspaces in Joe's original post was really to suggest that you can cache the DB in the cluster, or, better yet, disconnect certain classes of objects and associated workflow from the DB altogether. Check out this online training session: http://feeds.feedburner.com/~r/TerracottaVideoPodcasts/~3/147146202/i=tcvideo%252Fonline_training%252Fterracotta_hibernate%252FTerracottaHibernate.mov (it is part of our free Terracotta online training series: http://www.terracotta.org/confluence/display/orgsite/Online+Training) The video explains how Hibernate used in conjunction with Terracotta. It is like 40 minutes long or something, so the synopsis is that you can get objects from Hibernate's factory then use them as POJOs that are shared and durable across EC2 instances via Terracotta. It boosts app read / write performance by >10X, and might be a way fwd w/o a clustered DB. --Ari
  6. [...] there aren't many products out there that allow seamless horizontal scalability of your database. MySql only has a master/slave replication utility [...]
    I believe mysql cluster (http://www.mysql.com/products/database/cluster/ - a real clustering solution) covers that requirement pretty well. Don't know much about how dynamical the cluster setup is but - looking at the docs - seems simple enough, at least. There is also Sequoia Database Clustering (http://sequoia.continuent.org/ - another nice piece of OS software worth looking at) that fits perfectly in this picture. Am I missing something in your point? Regards, Raffaele
  7. PS: Sequoia is the new name of the C-JDBC project (that I see has been mentioned while I was writing my previous answer)
  8. We use EC2 for testing large Coherence grids. It's easier (and cheaper) than buying / configuring / maintaining the hardware, and it's certainly easier than the red tape ;-) Peace, Cameron Purdy Oracle Coherence: Data Grid for Java and .NET
  9. We've used EC2 and S3 the last 12 months and we love it! We use it as a test environment, a build environment and an R&D environment. The ability to provision hardware if and when you need it without trying to piggy back on already overloaded hardware is priceless. The one thing that is holding us back from putting a 'real' application up there is the fact that the service is still in beta and does not have any documented SLAs. This is a stumbling block, but one that we hope will be removed early this year. We have a number of blog entries discussing various topics that might be useful to anyone looking to make use of EC2 e.g. remote desktop using Gnome, access LAN resources over SSH etc. DSI's Amazon EC2 Blog Jay
  10. Go here for the details: http://chris-richardson.blog-city.com/ec2deploy_and_the_cloud_tools_maven_plugin_are_now_available.htm