Why Railo kicks butt for ColdFusion based SaaS
There is a lot of debate around the relative merits of Railo v Adobe ColdFusion and each to his own with that debate. There is however one area where Railo is a clear winner at the moment ( not to say that Adobe won't catch up in the future), and that is in the area of having a CF engine to create a Software as a Service platform.
We found we had 4 major considerations for the CF application engine when creating a Software as Service platform
1. Scalability
We needed an archiecture that allowed us to deploy as many CF instances on a single server as possible to ensure our business model worked to allow lost cost and high performance, our SaaS service is based on the Amazon elastic cloud and we wanted to minimize the number of servers to make this work. Our ideal archiecture was to use Jboss and to create each web instance as a jboss WAR and to then to be able to monitor each WAR and to have unique admins for each web app. In the past we have used CF Sandboxing to manage individual CF applications but this is still one CF instance on one App Server instance, we couldn't give each client their own CF admin login and this ultimately lead to the type of restricted and locked down to the point of useless hosting arrangements many developers have expereienced with CF hosting. Railo has the ability to given each WAR / Client their own Railo Admin (eqivilent to CF Administrator), but to also have a centralised server admin for overall control. The great thing about the way you can do it in Railo is that you can use centralised application libraries meaning that each new web app has only a small memory / resource footprint, our expereince with CF had been that you couldn't run more than 5 or 6 CF instances on a single server before it started to create load issues, with Railo we have tested up to 1000 and still found the server coping well. Obviously this is based on a lot of smaller load sites but what we care about is how busy all the sites are on the server and the total load, using the WAR archiecture we can monitor each web app separately and instantly see if any apps are using heavy load and scale elastically as required. Another winner for Railo in the scalability test was the ability to easily cluster, with close integration with Jboss clustering and an integrated cluster scope, clustering is easier to setup and manager.
2. Security
If you are going to allow developers access to build applications in a shared hosting environment then security is a big concern, and one of the reasons so many ColdFusion developers have found it frustrating when looking at CF hosting as hosting companies have been forced to lock a lot of things down. As mentioned above Railo allows individual webs with their own administrators which are mapped to an app server WAR, this means you can easily lock down a war and the Railo security manager makes it easy to lock down file access to the WAR. You can also add exceptions to the security model to allow access to shared folders on the server, this was a feature we commissioned Railo to write for us and works really well. All up the security model in Railo with individual webs and administrators is considerably more flexible than the CF Sandboxing model with everything running on one instance. It also allows clients to control their own application level settings without having to involve us. Whilst you could have done this via an API with CF I think Adobe could learn a lot from the way Railo have done this.
3. Cost
If you look at the really successful SaaS based appliations available very few are built on commerial application servers, the biggest are built on PHP or Java such as facebook. Having had to put together business models on building SaaS application platforms then I know that using an open source platform has a lot of appeal as it reduces the licensing risks more than the cost. For example if you are on an underlying commerical platform and the vendor changes their pricing model then your whole business plan could fail, as much as Adobe have been good business partner of ours over the years they have been known to completely change their charging and product offering every couple of years and whilst this is manageable it is still risk. If you are going to deploy 300 servers then the underlying cost starts to add up, we currently run around 20 Amazon servers with the majority now running Railo and there is no denying that cost plays a part, especially given the benefits Railo offers in running the type of setup we are using. Whilst I like using open source products I still believe that there has to be a strong underlying business model for the product vendor, and that relying on services to pay the bills is a hard game to play. Unless Railo starts to expand their business model I am sure they will start to fall behind Adobe as they wont have the cash to reinvest back into product development. We're in that game and know exaclty how hard it can be but I'm sure Gert and his team are working on this. If Adobe CF had the scalability and security features of Railo I am sure that would overcome my Cost argument as these are critical requirements.
4. Updates
Working in the dynamic environment that is the web today, getting frequent updates to your underlying platform can be vital to keeping on top of the game. Again this is where Railo really has nailed it, whilst Adobe is without doubt better tested and tighter the easy updater from Railo is a game changer. As mentioned above we needed an update to the security features in Railo (we'll blog later on this) and commisioned the Railo team to build it. Once finished they gave us an update URL and we simply just updated our servers. With Adobe you're looking at updates of major functionaliy every couple of years and this can be a very long time for a SaaS platform.
In summary I'm not trying to compare Adobe CF to Railo from a coding side of things but from how they compare directly when used to build a Software as a Service platform. I know Adobe have announced they will support CF on Amazon Ec2 but this is just moving the single server CF model into a rentable cloud model, it doesn't solve the issues around building a SaaS platform. Our Railo port wasnt' a cake walk by any means, given the size of our application (smaller apps are certainly a cake walk to port), and going forward we still need to support both Adobe CF and Railo so have increased our release workload. If you are looking to build an SaaS platform and know CF (or PHP or Java or Ruby for that matter) , then you should seriously look at Railo.
Comments
@Jason You should join the Railo mailing list. There are lots of talented people willing to spend the time helping you configure Railo in infinite different configurations.
http://groups.google.com/group/railo
# Posted by: Paul Kukiel | 12 Sep 2009 | 01:28 AM
Thanks for the tip!
# Posted by: Jason Haritou | 12 Sep 2009 | 01:35 AM
I do agree with Jason, as much as I love Railo and the people behind it, buying a CF standard license and the click next.. next.. finish install is much MUCH less expensive than installing Railo. At least for us...
# Posted by: Tjarko Rikkerink | 12 Sep 2009 | 02:18 AM
The difference between the Standard instance on Adobe ColdFusion and Enterprise multiple install is like two different worlds. Multiple instances bring so many benefits and Railo provides that. Having said that, I have never used Railo in production, perhaps it is about time I at least tried. @Grant S, thanks for this post you have been a high quality CFML info source for a long time.
# Posted by: Mike Brunt | 12 Sep 2009 | 03:46 AM
This probably goes without saying, but there is something in me that requires me to rebut anyone who says "XXX is better than ColdFusion" regardless if it's PHP, RoR, .NET or a CFML clone.
1. Scalability - Flash Remoting in CF9 is 7-9x faster than CF 8. Rather than using the stock BlazeDS remoting (a generic Java approach), we overhauled the system specifically for ColdFusion. A Flex-based system like ZoomFlex would likely see huge performance and scalability gains on this point alone. We'll be releasing a performance brief on ColdFusion 9 shortly that I think will pleasantly surprise you.
2. Security - "Whilst you could have done this via an API with CF..." -- very true. I'm completely ready to be wrong on this point, but the industry seems to be trending away from shared hosting and towards VPS/Cloud hosting. HostMySite/Hosting.com is a good example. Last year a ColdFusion VPS costs about $100US, today they cost $65US. Assuming this trend continues (you can get a Linux AMI on Amazon for about $20/month)... then it would seem like wasted effort to further our JVM user sandboxing features we added in CF8 (which most companies elected not to use). Plus, it seems that most companies would prefer to setup/manage virtual servers, rather than giving a user a directory on a shared box (users prefer this too).
3. Cost - 20 CF servers on Amazon EC2 would only require 2 Enterprise licenses. I imagine that's a pretty small investment to make for the the foundation of your business. Especially when it means the 5th largest software company in the world is invested in your success. Not to mention there will be an hourly rate, so you can scale up/down without any upfront costs. Also, the CF AMIs are just what we're planning for CFCloud in the next couple months. By no means does it stop there... it's merely just the first step.
4. Updates - One thing I find that not many people realize is that when you buy support for ColdFusion, you get access to customized hot fixes and updates. It's not just about having someone on the line to debug your config or CFML problems. If you report an issue via support and it's a bug in ColdFusion... the CF engineering team fixes it right away and issues you a patch. Of course, we can't support new features in this manner. As you can imagine, with 12k companies using ColdFusion worldwide, it would be impossible to support new features at an individual level. This is definitely one place where a small company like Railo with a small market can out perform Adobe.
As far as CF being able to reach out to a central server for updates, it's something we looked very seriously at for CF9, however it was a major security concern for many of our government customers. This turned out to be one of the motivating factors for the creation of the Server Manger, a desktop-based tool that separated admin/config of a CF instance from the instance itself. It's probably a safe bet to expect that Server Manager v2 will solve this update issue (and more).
@Grant - I know you've had your issues with Adobe AU(NZ) in the past. We've heard that loud and clear and I'm hoping you'll find our announcement at cf.objective(ANZ) will help address those concerns.
- Adam ColdFusion Product Manager
# Posted by: Adam Lehman | 12 Sep 2009 | 04:02 AM
Hi Adam,
Fair points in your reply but the essence of what I am talking about is how to build an elastic Software as a Service platform, not how to deploy CF on VPS servers. The key is how to build an elastic system that will scale easily and also best utilize the hardward you are deploying on. When you sign up as a Salesforce or Google Apps client you don't get your own VPS, you get put into a resource pool based on the request to your account and the traffic going through it etc. This is where we believe the Railo architecture to be superior as it allows multiple CF web apps on one server with centralized control that can be easily clustered. With the Railo model you are getting maximum value out of every server you are deploying on and can monitor each web app as each one goes through its own J2EE servlet giving maximum control, not to mention Railo has a very small memory footprint on the server to start with. With ColdFusion at the moment you are limited to very few instances per server from a resources viewpoint and you have to use Sandboxing to control access. Believe me that if ColdFusion allowed us to do what we needed we would have continued using it ( as we already had the code and had servers setup with Sandboxing etc.), and would have written a blog about the value of it, but it doesn't at the moment and Railo does. Adobe ColdFusion is an awesome technology and I am nothing but an Advocate having based my business on it for the last 10 years, but at the same time we have to move with the times with regards to deploying a SaaS model and I do believe Railo is the better technology stack for doing that right now, especially for the issues we are trying to solve.
It's possible there is only a small market in the CF community who want to deploy on an elastic SaaS model but speaking to a number of people at CFUnited I got the impression this might not be the case. Maybe CFObjective Aus is a good place for me to demonstrate what I'm talking about and for you to show the alternative from the Adobe viewpoint?
Cheers
Grant
# Posted by: Grant Straker | 13 Sep 2009 | 05:10 PM










I was wondering how much time you invested in configuring your Railo installation?
We've recently been looking into using Railo for all our CF development but after fighting with the program (trying to get it to work with Apache on our uniquely configured systems) we decided to give up and just buy another license for Adobe CF. Basically, the time and money we were investing in trying to get Railo to work, could have been better used in just buying another CF license.
I love the idea of Railo. I just don't think it's easy enough to configure to become a mainstream CFML product.
# Posted by: Jason Haritou | 12 Sep 2009 | 01:15 AM