Java in the Auto-Scaling Cloud

Amazon Web Services provides a way to auto-scale your resources as demand and volume increases or decreases.  You define the conditions through Amazon CloudWatch to schedule scaling and you can receive notifications  via Amazon Simple Notification Service.  You can also replace unhealthy instances automatically. AWS offers a range of application and database offerings.    Microsoft’s Azure Cloud has also recently offered auto-scaling to the Azure Cloud.  Azure offers application-and database-centric offerings (SQL Server, BizTalk Server, vanilla Widows and Linux VMs).
JavaCloud7There are a number of other noteworthy cloud offerings including Joyent which offers some unique features that make them highly interesting from a high-multi-tenancy angle.Let’s look at one of Amazon’s offering – Elastic Beanstalk.  You can get a good idea of what transpires when you read the Dr. Dobb’s walkthrough :
And another excellent, step-by-step on auto-scaling :
One, unique and interesting class of cloud products that have emerged from the Java-space focuses around auto-scaling and rapid configuration and installation.
One such cloud offering, Jelastic, offers a cloud where you can choose your software stack and set the limits of auto-scaling.  If you are not familiar with auto-scaling – it allows you to run and (automatically) scale your Java or PHP application depending on load volumes – with no code changes.  This offering is tailored to Java and PHP.  Jelastic offers a web hosting cloud features that automatically installs and interconnects your server instances with your software.  The software stack choices offer Java-based servlet and application engines (Tomcat, GlassFish and Jetty) or PHP app servers (Apache, NGINX) and SQL database servers (MariaDB, PostgreSL, MySQL) or NoSQL databases (MongoDB, CouchDB) as welll as memcached.  You simply upload your application packages and choose your environment. It also offers version roll-back to a previously installed package should you have discover coding errors.   Jelastic allows automatic vertical scaling which increases (RAM and CPU) provided to a web server as application load grows. As well as reducing resources as the load goes down.  Jelastic also provides auto-scaling of application servers and balancing them across compute nodes.  It supports a number of features and JVM-based languages such as Clojure, ColdFusion, JRuby, Groovy and Scala as well as Java itself.  It also supports PHP (5.3 and 5.4).

Another, Java-oriented cloud offering is CloudBees.  It offers an approach to develop and build Java applications within the CloudBees cloud and if you choose to, you can deploy them to other clouds as well.

It get’s more interesting, companies like Heroku, offer a way to focus on coding features and not focusing on infrastructure aspects while at the same time being able to use existing cloud services.  These solutions can sit on top of a cloud, like AWS. What Heroku provides is a suite of add-ons that would normally concern the development team – but Heroku removes those concerns by simply and transparently doing a lot of the work for those teams.  It allows rapidly putting new features into production.  Heroku offers it’s own dyno (lightweight container) scaling with add-ons like Adept Scale.  All of this sounds pretty ideal, but recently the complexity part of all of this caught up with reality.  The company, Rap Genius, encountered issues with the way Heroku distributed requests.  Though this has less to do with auto-scaling – it is interesting and pertinent never-the-less. Rap Genius offers a cautionary tale on the complexity of modern web and cloud environments. There is an interesting response to this in an interview with the Heroku’s general manager.Java applications servers have been changing to accommodate the elasticity of  PaaS environments.  GlassFish is a good example of one such Java EE application server which is incorporating PaaS features in it. There is an excellent talk from JavaOne 2011, Clusters in the Cloud : Dynamically Scaling Application Server Clusters with the Cloud which you can view :
At JavaOne 2011, Arun Gupta provided a wonderful exposition of GlassFish PaaS services. You can view the aspects of the lab and view the talk here :
In a nice late 2012 blog, there is a nice write-up where  you can discover more about GlassFish in a PaaS environment.
We can see that All of these solutions, are interesting if you care about scalability and rapid time to develop and deploy.

clojureiconGo to more posts on clojure or that are clojure-related at