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.
Comments
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?