These are some (old) notes on my experience with looking for an easy Grails hosting solution. This is a continuation of this post where I explored Heroku for Grails hosting.
Wikipedia defines Cloud Foundry as
“Cloud Foundry is an open source cloud computing platform as a service (PaaS) software developed by VMware released under the terms of the Apache License 2.0. It is primarily written in Ruby. The source and development community for this software is available at cloudfoundry.org”
Cloud Foundry is also a hosted service provided by VMWare, the principal company behind the Cloud Foundry platform. In addition to VMWare, several companies provide hosting services.
How does Cloud Foundry stack up against my original requirements?
Free or cheap to get started
No vendor lock-in. If I want to move to another provider, no code changes necessary
The Cloud Foundry platform is open source (Apache License 2.0), and there are multiple providers as I previously noted, so check.
Ability to scale up the number of instances and amount of memory easily
Instances can be scaled up on-demand via their VMC command line utility.
Minimal effort to set up a Grails application
Cloud Foundry has excellent Grails support. Not surprising considering VMWare is behing both Grails and Cloud Foundry. The Cloud Foundry Grails plugin makes it easy to deploy, update, and overall manage your Cloud Foundry-based Grails application. This post is a good getting started guide.
Support for MySQL or PostgreSQL, and MongoDB
All of these are supported by Cloud Foundry as services. The getting started guide lists the available services (see left menu).
Cloud Foundry supports HTTPS out of the box, but it sounds like that terminates at their load balancer, so communication between the load balancer and your instance is unencrypted. Not a big deal for me, at least when starting out. Other providers like appfog may more fully support SSL.
Another interesting point on Cloud Foundry is that you can run your own instance of Cloud Foundry via Micro Cloud Foundry and VMWare. Looks like it’s also possible to run it on VirtualBox
I deployed my Grails 1.4 based app to cloudfoundry.com, using the MySQL and MongoDB services. It pretty much worked as advertised and was a breeze to get started with. I had to increase my instance’s memory limit from the default 512MB, but that was easy to do via VMC.
I also ran into this problem with Grails and Spring Security on Cloud Foundry. The solution of adding the following to BuildConfig.groovy worked for me.
I was running with Grails 1.4, so the latest Grails 2.* may not have this problem.