Friday, December 5, 2008

Open BlueDragon in the Cloud

One of the more interesting developments in application deployment recently is the concept of cloud computing. I'm sure everyone reading this blog will be well aware of what that means and entails, but if you want or need a bit of background, wikipedia is always a great start.

To me the really interesting thing about cloud computing is not only its on-demand nature, but all the things you no longer have to worry about. Infrastructure is someone else's problem. Redundancy and scaling are available at the simple push of a button, or even completely automated. And the cost is ridiculously low for what you get in return.

Yes, as with everything there are trade-offs, and even though to us this is all abstracted, we have to remember that somewhere all of this is being powered by physical hardware as opposed to some sort of magic. That being said, between cloud computing and the virtualization that's becoming the norm inside the data centers of most companies, particularly with the increasing budgetary constraints and green initiatives, we are starting to do things quite differently than we did even 5 years ago.

The cloud service that is most familiar to people, and certainly seems to garner the most attention in the CFML world, is Amazon's various web services, collectively known as AWS. This includes their Elastic Compute Cloud (EC2), SimpleDB, Simple Storage Service (S3), CloudFront, and Simple Queue Service (SQS).

Things like EC2, SimpleDB, and S3 are compelling enough, but with the addition of things like CloudFront and SQS to their offerings, Amazon is becoming a one-stop shop for cloud computing, and as I mentioned above, the cost is ridiculously low for the power and flexibility you get.

Amazon is certainly not the only company in this space, however, and depending on what your needs are they might not even be the best option. Companies that may not be as well known as Amazon, at least in the US, include FlexiScale, GoGrid, and AppNexus, which offer very similar services with varying subtleties and costs.

And if all you want to do is deploy some code you've written, services like Google AppEngine let you deploy your applications to Google's servers without you having to worry about the server-level piece of the puzzle at all. Currently Google AppEngine only supports Python and their own proprietary BigTable data storage mechanism, but it has proven a popular option for deploying Python applications.

Google also seems keen on supporting more languages, the first of which will be Java, so if you're not a Python developer but you're interested in Google AppEngine, you'll want to keep an eye out to see when your favorite language is supported. As with the more full-service cloud offerings outlined above there are pros and cons to this sort of application deployment service, so make sure you go into whatever choice you make with your eyes wide open.

Cloud services also have a burgeoning ecosystem surrounding them, and some of these offerings make life in the cloud even easier. CohesiveFT's ElasticServer is one such service, allowing you to easily create machine images from a web-based interface that contain the only specific features you need. Create your perfect machine image and it can then be deployed or downloaded in various image formats such as Xen, VMWare, Parallels, PXE, and Amazon EC2, with more image types coming soon. You can also create your own machine images and upload them to ElasticServer to share with others.

This is all fantastic stuff, but what does it mean for CFML developers? Let's put some pieces together.

This week we released Open BlueDragon 1.0, which is the first official, versioned release of a product that has a heck of a lot more proven history behind it than the 1.0 version number implies.

Since OpenBD is, as the name indicates, open source, you don't have to pay anyone a license fee to use it. Use as many copies as you want on as many servers as you want, and it doesn't cost you a dime in license fees.

Seems to fit in perfectly with the new on-demand and virtualized world we're living in. Need another CFML server? Need 10 more? Push a button and all you have to worry about is the usage fees of your cloud provider, not any license fees for the software itself.

Hot on the heels of the 1.0 release, we also announced that OpenBD is available on ElasticServer, so you can go to ElasticServer, create a free account, and build your own OpenBD machine image with your choice of J2EE container and database. Fill out a form, click a button, and you're ready to deploy or download a CFML server. Couldn't be simpler.

To coin a very overparaphrased advertisement, "Cost to you? $0. Easily running CFML in the cloud? Priceless."

If you've stuck with me so far you'll be glad you did, because there's more. Getting back to Amazon Web Services, in addition to being able to deploy an OpenBD server on EC2, OpenBD 1.0 includes numerous features and language enhancements specifically designed to allow you to interact with S3 and SimpleDB.

SimpleDB support is built right into <cfquery> and is supported by a new set of CFML functions, so you can leverage SimpleDB in your CFML applications and take advantage of caching in OpenBD to save on transaction costs. S3 support is also built in, meaning you can easily interact with S3 from within your CFML applications using OpenBD.

The bottom line is if you have your head in the clouds these days, and you're a CFML developer, you really owe it to yourself to check out OpenBD. It's geared for the cloud from both a feature perspective as well as a licensing one, and as we move forward from the 1.0 release we'll continue to make the lives of CFML developers easier both in the clouds as well as on the ground.

As always if you have specific features you'd like to see in future versions of OpenBD, head over to the mailing list and let us know.


I still don't get it after reading many articles. The wikipedia article has a lot of jargon without explaining the basics. I have never seen a basic post or article that explained the simplest things.

What exactly is the difference to me, the owner of a website, between paying for a cloud server and paying a host for a regular server? If I move to a cloud service, do I get a new IP and direct everything there as a new site?

Or do I need both and my current server connects to the cloud server for everything? (That can't be right if we're putting the cfml engine on the cloud "image" - whatever that means. But, if correct, it must be much slower overall, no? What exactly is the gain unless you need massive infrastructure?)

What exactly am I and my customers connecting to - and how? - and doing that is different from my current "normal" website?

I'm with Stupid.

I don't get it. Can someone explain to me why you'd want to run BD [or CFML or any application server] in the cloud? And how is that different than the current hosting model?

I blogged this very same question

It's vastly different that the traditional hosting model.

If you are running CF on a dedicated server or VPS somewhere, can you push a button to add capacity on demand within mere moments?

If you need to add a server for a brief period for a special event, is that dead simple and do you only pay for what you need?

How much redundancy do you have with traditional hosting? How arduous is it to add that redundancy? And at what cost?

And if we're just talking file storage (e.g. for downloading something you've written, images that are used on multiple servers, etc.), how many servers do these resources live on? Unless you're paying for it, likely only one.

Cloud computing is all about distributed, on-demand computing. The machines on which we run our applications are abstracted above the physical layer, which is something we no longer have to worry about.

Resource storage and utilization is spread across someone else's massively redundant network, and we only pay for what we use. Adding and removing capacity is literally as simple as pushing a button.

Hope that covers a bit of how different cloud computing is from traditional hosting models.

One of ColdFusion's selling points is Rapid Application Development so this takes it to another level with rapid, scalability of infrastructure. I think it is a great fit.


If you are running CF on a dedicated server or VPS somewhere, can you push a button to add capacity on demand within mere moments?


No, I can't. I don't understand how people in the cloud are able to, though.


How much redundancy do you have with traditional hosting? How arduous is it to add that redundancy? And at what cost?


I'll add that I don't understand how cloud computing addresses this issue either.


And if we're just talking file storage (e.g. for downloading something you've written, images that are used on multiple servers, etc.), how many servers do these resources live on? Unless you're paying for it, likely only one.


Cloud computing services offer immediate redundancy?


Hope that covers a bit of how different cloud computing is from traditional hosting models.


Sort of. I get it slightly more [but still don't filly grok yet].

@Jeffry--concerning capacity, let's see if I can explain things a bit better. If I want a server on Amazon, I create a machine image (various ways to do this) that I deploy to Amazon. If I need more instances of that "server" (which exists as a machine image), I push a button to add more. And that's literally, not figuratively, "I push a button"--I log into Amazon's console, click a button, and I have another server. This can even be fully automated when load thresholds are released. When I don't need the extra capacity I can remove it, and I've only paid for what I use.

Cloud services *do* offer immediate (or even just out of the box) redundancy. If I put a resource on a VPS server somewhere, if my VPS goes down, that resource isn't available. If I put that same resource on Amazon S3, sure if S3 as a whole goes down then my resource isn't available, but S3 is massively redundant compared to anything I could set up on my own. And with Amazon's CloudFront your downloads can easily be geographically disbursed (think Akamai), which again is something very difficult to configure yourself.

Adobe estas Spanish por fekajo .... Amerikano seksumer!!!!!!!


Hey Matt,

First off thanks for your work on OBD.

Any chance you could share numbers of how much hosting in the cloud costs?

I understand that the numbers will vary widely based on many variables.

I looked very briefly into setting up a test account at Amazon, but was scared away with all of the questions Amazon asked and not knowing (or being too lazy to do the math) the answers. I did not want to accidentally sign up for a $1000 / month hosting.

@Mark--the costs will vary so widely based on usage that there's no real way that I could tell you cost better than what you can discover using some of the calculators that the various companies have.

I will say that if you just want to host a personal site and are used to paying for a shared hosting account, it will certainly cost substantially more than that. But if we're talking in comparison to a high-end VPS or dedicated server, it's certainly in that ballpark and probably cheaper than some hosting solutions in the VPS and dedicated space.

I'll see if I can find some links to a good cloud calculator.

So, to answer all my questions at the top, it is EXACTLY the same as using and connecting to any other webhost and hosting my site there, except they have a better system for adding extra capacity if I want it. If I sign up, I hook up my domain name to a new IP from Amazon, and log in and manage my site there, same as I would elsewhere, correct?

If so, why do people use so much jargon? It's a webhost.

@me stupid--If you completely ignore everything that makes what has come to be called cloud computing quite different than a traditional web host, then sure, it's just a web host. I do think your views fall into the realm of reductio ad absurdum, however.

My point is referencing the questions posed at the top, such that there is no difference to me for how I manage my site or how my customers connect to it. For 90% of people running sites, probably no real benefit. For 10% needing the scalabilty/etc. of such a webhost, a great option. I just wish people wouldn't use jargon when talking about it as it completely obscures what it is and offers.

Thanks for helping to clarify, though I still don't understand all the references to services one hears, as though one is connecting from one's existing site, if just a very scalable/etc. webhost.

Hey Matt, I was just thinking how cloud computing would be ideal for one of our clients. But then it hit me... Can cloud computing be PCI complaint? My first guess is no it can not. Thoughts?

@Mark--unfortunately I do *zero* with CC processing, PCI, etc. these days so I wouldn't really be qualified to comment on that. As prevalent as cloud computing is becoming there should be resources out there addressing it.

1 comment:

Blogger said...

DreamHost is ultimately the best web-hosting provider with plans for any hosting requirments.