Thursday, December 30, 2010

Cloud Computing

I've been reading a lot about Cloud Computing, especially regarding hosting. I am working on a personal development project that I will need to host at some point.

It seems that a lot of offerings that are branded as Cloud Hosting Solutions are really virtualization with automatic scaling of resources, as opposed to a pure cloud concept.

In my humble opinion (as someone who has just started learning about this subject), a pure cloud concept would be horizontal scaling of an application across multiple web servers and clustered database instances that automatically adapts to increased demands for resources (bandwidth, database and file I/O, etc.).

Some examples I've seen would be Rackspace's Cloud Sites and Google App Engine.

I played with Google App Engine during its infancy (when Python was the only supported language, and I found myself trying to learn Python / Django / BigTable as quickly as possible).

Most Cloud Hosting Solutions I've seen are really VPS or VM offerings, branded as Cloud Solutions. Many of these run in VMware or Xen.

Although I am a big fan of virtualization, I feel it's really a different category of hosting than a pure cloud solution for several reasons:

  1. You are still going to have to build out the server. The fact that it is virtual instead of a physical dedicated server does provide some advantages, with regards to pushing out clones for QA testing or increasing CPU / memory / HDD.
  2. Your VM will still reside in a single physical location that is subject to a single point-of-failure.
All in all, both virtualization and cloud computing are fascinating topics that I hope to learn more about.

Tuesday, December 28, 2010

Fedora Core 14 as VM

Well, I'm running Windows 7 Ultimate as my native OS.

However, I'm going to be doing some personal coding in PHP using the LAMP stack, and in order to get that "L", I need a Linux installation. I thought of several approaches:

  • Repartition my HDD and run a dual-boot Windows 7 / Fedora Core 14. There are several downsides to this approach. One is the fact that I never know how much space to allocate to each. The other is the fact that rebooting to get into the other OS is a pain. I've done dual boot (actually done tri-boot for Windows 98 / Windows NT / Red Hat back in the day) and the reality is I would end up spending ALL of my time in one OS.

  • Reformat my HDD to run Linux natively and do my Windows work in a VM.

  • Leave my HDD running Windows natively and do all my Linux work in a VM.

The last option (running Windows natively, Linux work in VM) seemed like the path of least resistance, and also the best fit for how I work on personal development projects. I do a lot of stuff in Microsoft .NET (as previous blog posts probably show), and I hate running an IDE in a VM. I am planning on doing my PHP development in Eclipse 3.6 (Helios) with PHP IDE PDT plugged in. I can just run Eclipse in Windows 7 natively. However, I couldn't run Visual Studio .NET in Linux natively.

One of my favorite things about VMware and this approach is how easy it is to roll back. If I were to repartition my HDD and something went wrong, I'm in a bad spot, which entails a complete reinstall of OS and Applications.

With VMware, if something goes horribly, horribly wrong with my VM, I can always just delete the files and start over.

I've never had it come to that, there's always snapshots to revert back to for VMware.

Additional notes:

  1. I tried to install using my "User" account without admin privileges in Windows 7. I've started trying to emulate the Unix security model in Windows of running as a limited privileges user and only login / su / sudo root when needing to do something like install software. This caused a problem, since VMware player need to install VMware Tools for Linux. Oops.

  2. VMware's Easy Install failed for my FC 14 install. Anaconda / kickstart got an error. Not sure why, but rather than try to run it down (I've never been a big fan of things that try to turn an already simple installation into a managed easy install), I just created a blank VM and installed FC 14 on my own. This worked just fine.