Matt Woodward's posterous

Matt Woodward's posterous

Matthew Woodward  //  * CFML, Grails, and Java Developer
* Principal IT Specialist, US Senate
* Open BlueDragon Steering Committee Member
* All-Around Geek

May 13 / 10:24am

Moving to the Cloud | The White House

Recovery.gov is the first government-wide system to move to the cloud. The move is part of the Administration’s overall efforts to cut waste and fix or end government programs that don’t work. By migrating to the public cloud, the Recovery Board is in position to leverage many advantages including the ability keep the site up as millions of Americans help report potential fraud, waste, and abuse. The Board expects savings of about $750,000 during its current budget cycle and significantly more savings in the long-term.

I continue to be pleasantly shocked when I see how progressive the current administration is with information technology. Very cool stuff.

Filed under  //  Cloud Computing   Government  
Mar 21 / 10:35am

Java Install Failing With install.sfx Error? You're Probably On the Wrong Architecture

I'm getting a RackSpace Cloud server set up for a side project, and when trying to install Java on Ubuntu Server and I was getting the following error:
./install.sfx.3763: not found

Since I'm not the one who ordered the cloud server I wasn't sure if it was 32- or 64-bit, but given the modest amount of RAM we're allocating I was guessing it was 32-bit.

Turns out I was wrong. I decided to try the 64-bit Java installer and it worked fine.

So if you get the mysterious install.sfx error when installing Java you're probably using the installer for the wrong architecture. Grab the "other" installer for your situation and it'll likely solve the problem.

I guess you could also ask the person who ordered the server whether it's 32- or 64-bit, but where's the adventure in that?

Filed under  //  Cloud Computing   Java   Linux   Ubuntu  
Nov 25 / 11:21am

First (?) Production Site on Open BlueDragon for Google App Engine

Yesterday Peter Farrell pointed me to a brochure site he did for a friend. Looks great, it's running Mach-II 1.8 beta, using SES URLs, all great stuff.

Then he told me it was running on Open BlueDragon for Google App Engine (GAE). VERY cool. You can read a bit more about it on Peter's blog. I could be wrong, but I think this may be the first production site running on OpenBD on GAE. (If there are others out there, I'd love some links!)

The interest in running CFML apps on GAE has really been picking up lately, and with good reason. It's a dead simple way to deploy CFML applications to Google's cloud, and unless the site is going to get a huge amount of traffic it's completely free.

Free CFML engine, free hosting, easy deployment right from Eclipse ... there's a lot to love here. No more hunting around for cheap shared hosting accounts that are so restrictive they're barely usable, no more spending money on a VPS if you don't need one (though I highly recommend them!), you just build your app and deploy right to GAE.

Since a lot of people I've been talking with recently aren't all that familiar with GAE, I'd like to point out that it's a bit of a different paradigm than many other cloud computing services. Unlike Amazon EC2, where you're dealing with things at the server level, GAE is application-oriented. So you don't have a server with an operating system on which you install a servlet container and OpenBD, instead you're simply deploying individual applications to Google's Java infrastructure. It's a really nice way to do things since the server-level stuff is all handled for you.

Be aware that there are some restrictions on what you can do on GAE vs. deploying on your own server, but really these are just differences rather than any huge impediments:

  • Unless you use the Virtual File System (VFS) that Vince Bonfanti has been building, you can't write to the file system. Note that you can use the VFS on all Java projects on GAE; it isn't specific to OpenBD.
  • The limit on the length of a single request is 30 seconds. (Not a problem unless you're generating reports or something.)
  • You can't ...
    • open a socket or direct connection to another host. You can use GAE's URL Fetch Service to call other hosts on ports 80 and 443.
    • spawn new threads
    • make system calls
  • There are some limitations on request/response sizes, maximum file sizes, etc. but all are quite reasonable.
The big difference is that you can't use a traditional RDBMS like MySQL. Instead you use Google's Datastore, which is a "schemaless object datastore." You can read more about Datastore here. So what does this mean for CFML developers? Well, OpenBD for GAE implements persistence for CFCs to Google Datastore, so you can save your CFCs (works for structs as well) to the Datastore by using the GoogleWrite() function, and there are also functions to run queries and read single objects from the Datastore. You can read more about OpenBD's Datastore integration on the OpenBD wiki.

There has also been some work done on making a file-based RDBMS like H2 work with the VFS, and although it works apparently the performance is pretty slow at the moment. When the issues around that get resolved that will be another nice option, since a database could be deployed to GAE right along with your application code.

Personally I'm really excited about the opportunities this offers CFML developers. It could not be simpler to build a site and deploy it on Google App Engine, and the benefits of being on the Google infrastructure are pretty amazing. If your application doesn't get a huge amount of traffic it's completely free, and if your application starts to grow, the underlying infrastructure will scale up automatically as needed. That's one of the many benefits of cloud computing.

If you're interested in getting started with OpenBD on GAE, make sure and join the OpenBD Google Group, check out the GAE section of the wiki, and there are some great blog posts by members of the OpenBD community as well:

As I said, there's lots to love here, so I encourage you to give it a try.
Filed under  //  CFML   Cloud Computing   Google App Engine   Open BlueDragon  
Sep 12 / 1:02am

Nirvanix Support in Open BlueDragon

More exciting cloud support has just been added to the nightly build of Open BlueDragon! This time around it's full support for the Nirvanix Storage Delivery Network. Read more in the announcement on the OpenBD blog, and full usage notes are on the OpenBD wiki.

Nirvanix is similar to Amazon S3, which OpenBD also supports, but Nirvanix offers the ability to create child accounts that can be limited by storage capacity and bandwidth. Nirvanix also has fantastic functionality form media files such as audio, video, and photos, allowing you to convert file formats, resize, crop, etc. all from Nirvanix.

Cloud computing is seriously powerful stuff, and we're making all this power available across multiple cloud services right from within OpenBD.

Filed under  //  CFML   Cloud Computing   Open BlueDragon  
Sep 10 / 1:00pm

OpenBD Google App Engine and cfc's - Paul Kukiel

In my previous OpenBD on Google App Engine post I mention there is no relational database ( yet ) for OpenBD on GAE. There is however the ability to write and save objects directly to Googles Data Store. This sort of feels like working with an ORM but it's even more abstracted as there is not actual database that we can see but we can put objects in this place and run simple queries against the data sets.

Here is a code snippet:

Persisting Data:

  1.   
  2.   
  3. cfset v = createObject("component","Visitor").init() />  
  4.   
  5.   
  6.   
  7. cfset v.setFirstName("Paul"/>  
  8.   
  9.  
  10.       in a collection called Visitors --->   
  11.   
  12. cfset googleWrite(v,"Visitors"/>  
  13.   
  14.   
  15.   
  16.  
  17.       This will return an array of Obhjects ( cfc's ) that are 
  18.       in the datastore in the Visitor collection    --->  
  19.   
  20. cfquery name="dataStoreQuery">  
  21.   
  22. select  
  23.   
  24. from Visitors  
  25.   
  26. cfquery>  

select
from Visitors

Notice I must use variable.VariableName rather then cfproperty name="variableName this is explained here.

Here is a small application to demonstrate this in action:

Click Here for a live demo.
( Yes it looks like UniCode just works :) )

Being that it lives on Googles servers the application should be very fast and I expect Googles connections to be very fast you'll notice I do a cfhttp call in every page request you almost don't even notice it's happening.

I really have no metrics to judge/comment on the performance of the datastore but I am working on a project with Rob Parkhill which will make use of the datastore or the SQL engine that's being built so I may have something to report in a few weeks/months.

Here is the official OpenBD wiki entries on the datastore.

Here is the sample app code:




Visitor.cfc


Great intro by Paul to some very slick stuff with OpenBD on GAE! Make sure and read the comments--Vince is working on making this syntax compatible with the ORM functionality in CF 9.

Filed under  //  CFML   Cloud Computing   Google App Engine   Open BlueDragon  
Dec 5 / 11:26am

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.

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?

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

http://www.jeffryhouser.com/index.cfm/2008/12/8/Running-ColdFusion-in-the-Clo...

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.

[Quote]

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?

[/quote]

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

[Quote]

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

[/Quote]

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

[Quote]

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.

[/Quote]

Cloud computing services offer immediate redundancy?

[quote]

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

[/quote]

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!!!!!!!

huahuahuahuah

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?

https://www.pcisecuritystandards.org/

@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.

Filed under  //  Cloud Computing   Open BlueDragon  
May 10 / 8:24am

Amazon AMI with Open BlueDragon Available

Just one of the very cool examples of what you can do with FOSS--Peter Amiri has put together an Amazon AMI with Cent 5, Jetty, and Open BlueDragon. There are some pre-built VMs in the work as well!

Filed under  //  Cloud Computing   Open BlueDragon