Archive for the 'Virtualization' Category

Software as a Service as a Product (SaaSaaP)

Monday, February 18th, 2008

SaaSaaP, an acronym I came up with before reading about Appliance-based Software Delivery (AbSD) (here, here, here) is, what I believe to be the next step in the evolution of SaaS (or just application delivery in general). SaaSaaP / AbSD involves taking the SaaS hosted in the datacenter and placing it behind the corporate firewall, essentially turning your software service model into a product model (see: Google Search Appliance)

The availability of good virtualization technology can allow a SaaS company to make the jump from a SaaS to appliance-based delivery very straightforward. Additionally SaaS companies should evaluate whether their applications have opportunities that can be better realized behind the corporate firewall. Besides, SaaS is the analogue to what software hosted on mainframes were many decades ago, and as history is known to repeat itself, SaaSaaP would be the next step in the evolution of software delivery, except this time you get the computing platform and the software packaged all bundled into one efficient appliance, instead of a PC and a CD and the need to run setup.exe

Oh yeah, and Cisco just validated Appliance-based Software Delivery with its purchase of IronPort for $830 million.

Amazon EC2 Experiences

Friday, October 5th, 2007

I’ve been on a blogging tear lately, finally getting around to writing posts on topics that I’ve been meaning to write about for a while now. I have a series of posts that I’m working on in the category of virtualization, so I thought it might be useful to write about my experience with Amazon EC2.

I first became aware of Amazon EC2 when I was investigating rPath Linux and their rBuilder suite of appliance packaging tools. I first used EC2 at Startup Weekend Boulder because it was an easy way to instantly provision a server with pretty good horsepower (1.8 GHz, 1.8 GB RAM) while keeping costs low ($0.10 per instance hour per month), and didn’t require any contracts or setup fees. I also thought it would be great for scaling should Startup Weekend Boulder produce the SaaS hit of the century and all of a sudden get overwhelmed with traffic - Just start up a few more instances to handle the load and we’d be set.

EC2: A Great Service, Except For That Ephemeral Storage!
While I was setting up the instance at Startup Weekend, I quickly realized the biggest problem with EC2: The ephemeral storage. The ephemeral storage is the 250GB slice of storage that is mounted at /mnt of every EC2 server instance and is the only local storage available to an instance as the Amazon Machine Images (AMI) images have root filesystems that are limited to around 10GB. The problem with the ephemeral storage is that should the server instance get terminated for any reason (such as the recent accidental termination due to their management software upgrade), you will lose everything stored on the ephemeral store, and this usually includes your application and any databases it may be accessing, not to mention any server customization and configuration that you may have implemented.

I spent a lot of time at Startup Weekend figuring out how to save our customized AMI image and dump our database to Amazon S3, I figured worst case if we have the image and data saved we can get things going again in a reasonable amount of time (although “reasonable” probably doesn’t hold for very popular production sites).

Accidental Instance Termination
Speaking of this recent accidental termination of EC2 instances, one of my instances that I was using to temporarily host my (wah) cool “RaceBib” Facebook app (I didn’t want to be left out of the “Facebook is the new Internet” club) was shut down. This termination was my motivation to finally move this application over to something more permanent and less costly (see my previous virtualized hosting article). I knew eventually an unexpected instance termination would happen and took the basic precautions of copying the database to S3, so I didn’t lose any data, I just had downtime which while unfortunate wasn’t a huge big deal with only a handful of Facebook users.

Anyone who complains to Amazon about this accidental termination should have expected it in the first place. Amazon states clearly that instances are subject to termination at any time, and they recommend that users plan accordingly and implement redundancy and backup measures. If I recall correctly I think they even say to expect an average of 90 day termination or maintenance events. Anyhow, setting up redundant MySQL servers or brain damage of that nature seems to reduce the cost effectiveness of the service (having to setup multiple instances), and reduces the ease of implementation of the Amazon service. From what I’ve read I believe Amazon is aware of this weakness in the EC2 service and they’re actively working to create a more permanent “ephemeral store.”

Amazon EC2: What other VPS Providers Should Emulate
One of the main things that caused EC2 to quickly get my attention was the ability to bring your own virtual image (AMI) to Amazon and have them run it on EC2. This was one of the build options that rPath’s rBuilder provided and what sparked my initial investigation into the EC2 service. Currently most VPS providers will offer you a wide array of stock VPS operating system images that they’ll let you run. Pick one, load it up on your VPS, customize it to your application’s needs, but if you ever decide to leave one VPS service for another, you have to leave your image behind with all your configuration.

Additionally if you simply want to replicate your application’s configuration to additional servers on the same service, you have to start with the stock OS image and reconfigure everything manually. But then maybe some of you out there actually get a kick out of repetitive server configuration. Regardless, Amazon EC2 is perfect for all of these. Once they get their ephemeral storage issues resolved, it will be in my opinion, the perfect hosting option (especially with it’s integration into the S3 service) and I will continue to recommend it as a hosting option to others.

All the servers I’ve been provisioning lately are packaged in a virtualized form. If a VPS service can’t afford the flexibility to host my pre-built image, or allow me to download a server image I’ve customized either to move it somewhere else, scale it, or keep it for backup purposes, then they’re missing the some of the greatest benefits of virtualization. If you’ve come across this post, and you’re looking for someone to host pre-built virtualized images, I offer VMware image hosting through my company, Obility, LLC. Contact me and I can work with you to help you realize and take advantage of everything virtualization has to offer.

Virtualization: Decouple Your Server Hardware and Storage

Friday, October 5th, 2007

Are you having difficulty separating your server applications and data from your server hardware? Wish you could use that inexpensive NAS to store application data, but your applications don’t work over NFS? Wish you could easily switch between server hardware without having to physically move storage from one server to another? These are problems I’ve had for a long time that virtualization technologies have now resolved.

The Problem: Decoupling Server Hardware and Storage
Traditional server configurations involve a single piece of hardware (processor, memory), and some storage (a single drive or RAID configuration). Load on this an operating system, configure your applications and you’re off to the races. When the server hardware fails or you want to upgrade the server, you have to physically move the storage from the old server to a new one and deal with any RAID issues. This can be a time consuming, error-prone activity, especially if you don’t have quick, physical access to your hardware.

The Virtualization Solution
With server virtualization you can easily decouple your server hardware from your application and OS storage. The benefits to this approach allow you to incorporate inexpensive server hardware and low cost storage solutions to create a complete solution that affords reliability in the event of hardware failure and flexibility in the face of server re-provisioning and upgrades. Running a virtual server on the server hardware and storing the virtual images in a NAS is a solution that has been revolutionary in the way I am currently provisioning and running my server applications.

My Configuration
My current configuration uses commodity server hardware running a stripped down version of Ubuntu Feisty server and an install of VMware server. I have saved this server install and can quickly replicate it to bring up new server hardware if needed. I am currently experimenting with loading this setup from a 4GB compact flash, as there is no need for the server to have a hard drive. I have created stock VMware server images and store them on a 2TB ReadyNAS. The servers mount the VMware images via NFS. Benefits of this setup include:

  • I have commoditized my server infrastructure. I can rely on an array of inexpensive non-redundant server hardware to run my virtualized servers and applications. If server hardware fails, I can quickly switch the virtual image to another working one.
  • The server hardware runs a minimal set of applications (base OS and VMware server) this configuration is easily and quickly replicable.
  • I can run multiple virtual images on a single server, making more efficient usage of the hardware and easily separate applications that may interfere with each other.
  • All the applications and data are stored on the ReadyNAS, a device that that is designed for reliable high-capacity storage of data.
  • Applications are encapsulated in virtual images and are not affected by the use of NFS. I have always use Cyrus IMAPD to serve my email. Using Cyrus IMAPD over NFS is not recommended and can result in corruption of key system files. I am now using Cyrus IMAPD in a virtual image over NFS, and am immune to typical NFS problems. Same holds true for all other databases and applications that have issues running over NFS due things like file locking or delayed writes.

If you’re struggling with the issues I’ve mentioned above, give server virtualization a hard look. It has the potential to change how you go about deploying your servers and applications. Feel free to contact me if you have any questions or would like some more information on how to simplify your server deployments using virtualization technology.