Check out our Angular Book Series.

Running ColdFusion in the Cloud? I don't get it!

I started this a a response to a post on Sean Corfield's blog; but decided the topic was worthy enough to write my own post about.

I've heard people speak about wanting to run an application server in the cloud. I gotta admit; I just don't get it.

How would one run an application server in the cloud? Why would one want to run an application server in the cloud? Perhaps better a question is how do we define 'cloud'?

When we talk about storage in the cloud--such as S3--the files are still sitting on some storage device that is remote to me. I can use APIs or [more commonly I suspect] a program to access that data.

How exactly does an application server fit into that model? My web server is a physical machine somewhere on the west coast. It routinely backs itself up to the development server in my office; a physical machine on the east coast. Does that make my dev server a part of the cloud?

It seems to me that any instance of ColdFusion running a CFC w/ a remote method call could be construed as part of the cloud. But, that instance of CF is still running on some physical server somewhere. Why should this have/need different licensing rules?

Can someone enlighten me to what people want exactly? What exactly is the use case for something like this; and how is it different than the 'traditional' hosting model which includes renting server space?

Comments (Comment Moderation is enabled. Your comment will not appear until approved.)
Oscar Arevalo's Gravatar I may be wrong too, but what I understand from being in the 'cloud' is that it is all about horizontal scalability.

Let's say you deploy your CF application to a traditional shared hosting, if your application starts getting some serious load you would need to scale maybe to a VPS, when that's not enough you then move to a dedicated server; if load keeps getting higher, then you need to think about clusters and load balancers, and then start adding more and more nodes to meet your demand. Now, doing this yourself is no easy task (and not cheap either), and also, what happens when the load on your apps decreases? or if you only have a high demand on only a peak hour during the day? then you would be stuck with a lot of expensive hardware and networking infrastructure.

Being "in the cloud" gives you the flexibility to expand and contract your infrastructure on demand. When load is high you add more nodes, when load is low you contract to fewer nodes. And you only pay for what you use at any given time.

# Posted By Oscar Arevalo | 12/8/08 12:10 PM
Matt Woodward's Gravatar I responded to your comment on my blog as well, but to comment about licensing, the big thing is that currently most licenses are on a "per server" (or perhaps per CPU) basis. So if I'm paying for a license, and say I'm running a server on Amazon EC2, that license will cover *one instance* of my EC2 server. If I need more capacity, and I fire up another instance of my server, my existing license does not cover that new server instance. And if the software in question is a stickler for having a unique license key as opposed to having some sort of "one license, pay by usage" model, then you can't even do on-demand scaling without dealing with the licenses ahead of time.

To me when you look at how cloud computing works, traditional license models don't really work anymore since this has brought up rather fundamental questions about what it means to be a server, etc.

Of course if you use software that has no license fees, you don't need to worry about any of this, hence the huge predominance of open source solutions in the cloud space.
# Posted By Matt Woodward | 12/8/08 12:10 PM
Jeffry Houser's Gravatar Oscar,

That's a very overt description. "cloud is all about scalability". It echos Matt's sentiments [which were posted on his blog].

I don't understand how these services offer such scalability; as such 'm still having trouble modifying my world view.
# Posted By Jeffry Houser | 12/8/08 1:28 PM
David's Gravatar To add somewhat to Oscars point, I think if you add the benefits/features of virtualization, you can achieve the scalability Oscar talks about. Lets take a practical example:

I want enterprise failover response to go with my enterprise level CF and SQL server technology. Using VM, I can take a snap shot of both physical servers, their install bases, code, settings, etc and deploy them to the "cloud" for possible future use. Many licenses (and I believe CF and SQL Server are amongst them) will allow this, as long as the virtual servers are not activated - that is to say, we have no licensing issues at this point. I could also instruct my VM's to be a complete refresh of my production servers on a regular basis (say, every few hours)

Now, something happens to my primary hardware, or the hosting facility itself - I simply instruct my firewall to divert traffic from the physical servers to the virtual ones (my technician assures me this can be done automatically!)

Now, what have I got? Complete backup solution without having to purchase additional hardware, additional rackspace at the hosting facility (thats expensive, by the way) and extra enterprise licenses for the physical servers (required under most licensing situations, as the actual server will be activated - turned on).

Cloud computing does offer the potential (I said potential, as I haven't studied this in detail myself, yet) to cut down on server and physical hosting costs. It also has the potential to ease management issues, when combined with VM technology.

That's the way I see it. I'm sure there are plenty of holes in the theory, but it may be a good start.


# Posted By David | 12/8/08 1:45 PM
Craig Kaminsky's Gravatar I, too, am working through this new world view. As of now, the primary benefit I see from Cloud services lie in our (developers) ability to more easily scale your server resources than traditional models of hosting.

For example, I have a play site on Aptana's Cloud service. From a control panel in my IDE (Eclipse with the Aptana Studio Plugin), I can monitor my site's performance and control the services I am using. If I find that the 256MB of RAM I "allocated" for the site, selected when I deployed to the Cloud, is insufficient, I can move a slider to the right, upping the RAM to 512MB or 1GB. My site now has more RAM available instantly. There is no waiting for server managers or hosting companies to install additional RAM and reboot the server (or move you from a shared server to a VPS or what-have-you).

In terms of controlling services, this is where it seems to get pretty interesting (from what I understand!). I can check server-sdie services that I want to use (MySQL, Jaxer, PHP, etc.). I can change these at any time. The benefit here is with something like OpenBD or Railo, a CFML application server could be one of the services available in a Cloud. You could then, when deploying your application/site, choose to use a CFML engine. This is where Matt's comments about licensing come into play. Wouldn't really work with Adobe's CFML product as it stands now (1 license per CPU/Server).

I don't know what will come of it but Aptana has been working on adding Ruby/Rails to their Cloud and took a survey where Java, Python and CFML were the other application servers developers wanted in the Cloud offerings. I would love to have that option (CF) when I go to deploy a site, that's for sure!
# Posted By Craig Kaminsky | 12/8/08 1:53 PM
Sean Corfield's Gravatar To Matt's comment, a lot of software is licensed per CPU or CPU group, e.g., Adobe ColdFusion, and on Amazon EC2, you have no idea how many physical CPUs are in the box on which you are running so you have no idea how many licenses you need.

In general, cloud computing is about "outsourcing" your data center so that you can handle usage in a more scalable manner without infrastructure costs. If traffic goes up, I can just fire up more EC2 instances while traffic is high and power them down when traffic drops again. I can run perhaps one "server" overnight and two "servers" during the day - without having to pay for physical boxes and space and all the overheads of the inactive server at night. I pay for what I use and gain tremendous flexibility in terms of expanding and contracting to match demand.
# Posted By Sean Corfield | 12/8/08 2:16 PM
Adam Lehman's Gravatar There seems to be a general opinion that Adobe ColdFusion isn't permitted in the cloud (EC2) because of it's current licensing model. However, there are a number of people running Adobe ColdFusion on EC2 at this very moment. Some with and some without permission. At Adobe we realize that the EULA for 8.01 doesn't specifically address cloud computing and we're not actively trying to prevent/charge anyone who does. If you are interested in running CF in the cloud (or already are), I'd love to chat with you about how we might make the EULA more "cloud friendly" for Centaur (aka CF9).
# Posted By Adam Lehman | 12/8/08 2:33 PM
David's Gravatar I'd love to be a part of that conversation Adam - I'll send you an email to follow up, or you can reach me at domalley at medifit dot com


# Posted By David | 12/8/08 2:39 PM
Brock Baxter's Gravatar Honestly, I haven't seen much from Adobe in the way of discussing cloud computing and coldfusion. That tells me it's probably not something I need to worry about, and I think Adam would agree with me maybe it's something you need with INFERIOR technologies but I think you can rest assured that if adobe isn't worried about it you shouldn't be either.
# Posted By Brock Baxter | 12/8/08 2:41 PM
Jason The Saj's Gravatar "Why would one want to run an application server in the cloud? Perhaps better a question is how do we define 'cloud'? "

I believe the set up we've experimented with is to run a load balancer, and then a couple application server instances. Were the load balancer to detect a higher than normal load. It can replicate another application server instance.

In this case, the web server are virtual machines hosted on say the Amazon cloud. As needed, new instances of the server are replicated. So that on the fly replication is the issue.

Maybe a license model that gives you a scalability block (ie: 1-5, 5-10, 10-20, up to 50) might be beneficial. To me, I think they should offer the following. Temporary licenses. In otherwords, allow you to have a license, but allow it to spawn three temporary licenses (good for 30 days just like installing a trial edition). This would give you enough time to either acquire new licenses or for a Slashdot style peak to subside.

I think this would be a good model for Cloud Licensing.
# Posted By Jason The Saj | 12/8/08 5:30 PM
Sean Corfield's Gravatar I'd like to see a usage-based model. If a regular Amazon EC2 instance costs X per hour, an Adobe ColdFusion-enabled instance would cost X+Y per hour. The only issue is that for my usage, I need the instance very specifically configured for the JBoss / Hibernate / Spring infrastructure we have and would want to run CFML on top of that. But for most CFers, a simple per hour charge for a pre-configured instance should work very well
# Posted By Sean Corfield | 12/8/08 5:43 PM
Hennie de Villiers's Gravatar I can understand cloud computing if you are developing social networking type applications as should you hit the right buttons, changes are that you may be falling over and suddenly sit with a huge CAPEX budget to secure non-stop distributed computing and bandwidth.

I am not a developed but have experience in managing engineering teams to develop software.

I recently strolled over an article on JBoss with Ralio in amazon. Form what I could gather ralio convert CFML to java and run it as an alternative coldfusion hosted platform.

would you have any opinion on this?
# Posted By Hennie de Villiers | 1/30/09 11:10 AM
Jeffry Houser's Gravatar Hennie,

You realize that ColdFusion converts CFML to Java, right? Ralio and Open BlueDragon mimic what ColdFusion in that regard.

That said, I don't have that much of an additional opinion to offer.
# Posted By Jeffry Houser | 1/30/09 11:23 AM
David's Gravatar Hennie you are correct - Railo is a CFML alternative. There are some pro's and cons - Railo is (essentially) free - there are some paid options, and has some new tags. However, it does lack the most recent CF 8 functionality. Its a trade off - if you want to do CFML but don't use the CF8 features extensively, then you can try out Railo.

At a presentation by Gert Franz of Railo, I heard a great application for cloud computing:

1) A user uploads a video from their desktop (this actually gets uploaded to an Amazon location, as a paid service)
2) The video needs to be "processed" for formatting, etc, (thats a business requirement) so the application spawns a Railo server in the "cloud" (amazon also, I believe) and processes the video.
3) The video is saved and the could server deletes

As this is apparently a pretty processor intensive process, its best to have this happen on a server other than your production one. As you are paying for the Amazon cloud service in an as needed basis, it doesn't require up front costs, and if your demand for the service increases, then its something you can scale to.

Interesting scenario, but very specific.


# Posted By David | 1/30/09 11:33 AM
Sean Corfield's Gravatar Strictly speaking Adobe ColdFusion and Railo both convert CFML to Java *bytecode* (that runs on the JVM).

Open BlueDragon converts CFML to its own internal bytecode which it then interprets (although most of the operations in that bytecode are fairly high level and run as native compiled Java which is why it's faster than you might expect of an interpretive system).

The flexibility of cloud computing is what makes it appealing. We recently migrated our Community Platform (a content management system for Intranet/Extranet portals) from a data center to the Amazon cloud and we're able to control performance and costs much more easily.
# Posted By Sean Corfield | 1/30/09 11:34 AM
All Content Copyright 2005, 2006, 2007, 2008, 2009 Jeffry Houser. May not be reused without permission
BlogCFC was created by Raymond Camden. This blog is running version