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 Amazon.com 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?





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.
Oscar
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.
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.
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.
Cheers,
Davo
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!
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.
Cheers,
David
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.
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?
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.
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.
Cheers,
Davo
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.