Even after 12 years of developing enterprise ColdFusion applications, I’m still amazed that I hear statements like this. I recently left a job where I helped to build a highly scalable application for the financial industry using CF. Our team used EXTjs, MySql, and Railo as the CF parser. I am still ‘invested’ in this project, and so I was talking with the COO yesterday and he mentioned that there was another developer they were talking with who said … ‘Coldfusion is not scalable’. No explanation given… just that it wasn’t scalable. I was actually a bit irritated, and so I asked the COO to just ask him ‘Why?’.
The enterprise versions of Adobe Coldfusion, Railo, and OpenBlueDragon all come with built in clustering using J2EE session management. Adobe’s version 9 comes with Hibernate support built-in… and Railo is soon to follow suit. Companies like Etrade, NASA, GoldLeaf, Caterpillar… all use ColdFusion. All of the parsers support enterprise DBMs like Oracle, MSSQL, Postgres, and MySql. All of the parsers come with a form of memory caching.
My only ‘guess’ is that he’s possibly talking about it not being financially scalable. Perhaps he doesn’t know that there are now 3 different open source CF parsers available? (openBlueDragon, Railo, Smith) Part of the reason why MySpace moved away from Coldfusion was primarily a licensing issue. Adobe ColdFusion licenses are not cheap, but they are justifiable. Even if he was talking about a financial scalability issue due to licensing… it’s just something that you build into your business model on the front end to make sure that you have the money available either through investment or financing.
Either way, we had already addressed the financial scalability issue by choosing Railo as the parser, and I built in my own clustered session management using in memory sessions backed up by persistent sessions in MySql. Combined with sticky sessions in Apache, a front end load balancer and simple MySql replication, and you have a pretty solid HA setup. It’s not J2EE, but it worked. We were also planning on rolling it into the cloud when we released it into production, and so those MySql servers would have had up to 32GB of RAM and 8 processor cores available to each of them (vertical scalability), with the web servers being horizontally scalable as much as needed. Down the road we could have always moved to MySql Clustering when it was actually needed, giving us true horizontal scalability. I’d say that’s pretty scalable.
My point is that it really is not the language that makes an application scalable. Certain tools can make it easier (Enterprise CF vs. Standard) … but it is really dependent on how the application is designed in the first place. Most of the HA scalability issues can (and should) be mitigated to the network and operating system layers rather than handling them within the application layer anyhow. Saying ‘Coldfusion is not scalable’ seems to me to be a real misunderstanding of how highly available applications are really built.