To deploy my application, I had to create a compute instance, provision a database install my app, clone the server and then set up a load-balancer for my two servers.
Creating a Compute Instance
I was able to quickly build a linux instance and logged in with SSH. Rackspace issues a random password on instance creation, and the Linux server was ready in about five minutes or less. I had the choice of 8 flavors of Linux (CentOS, debain, fedora, FreeBSD, gentoo, SUSE, Redhat, Ubunto) as compared with 6 for AWS (that I could see).
Rackspace didn’t have the ability to choose community images (pre-built images that included various tools and configurations) like AWS. AWS currently has over 11K community images to choose from.
When creating a compute instance, Rackspace allows users to select the amount of RAM but there was no easy way to see how many “cores” that equates to. In addition, you can’t change the size of the file system that’s created for the compute instance. AWS makes it easy to see the real size of the server and allows you to modify the default root file system size.
The other thing that I noticed was that Rackspace issued a normal password for the root account whereas AWS has users create a ssh key file and apply it to the instance which can be used on multiple instances. I think that the AWS approach is more secure and easier to deal with when companies are spinning up a large number of instances. If a customer loses their initial root password, I didn’t see a way to recover it whereas customers can always re-download their private key.
Setting up my first server was pretty straightforward right up to the point that I found myself in the second UI to manage my systems. It was a bit jarring at first. Evidently Rackspace is keeping the legacy UI in place while their customers become accustomed to the new UI and they work out any bugs.
Create a Database
Provisioning a database for my app was as straightforward as it gets. Part of the reason it’s so easy is because Rackspace only offers 1 type of relational database to their customers, MySQL. After submitting a name, RAM size, disk size, DB name and user credentials into a form, it creates the DB instance.
In contrast, AWS allows customers to provision a database using one of the top three industry products, MySQL, Oracle, and SQLServer (with multiple flavors for each). In addition, when it comes to database, AWS offers a NoSQL DB, and an in-memory cache database solutions as well.
I need to better understand the AWS security model out of the box because AWS required me to configure a security group that would allow my compute instance to connect to the database. This gave me the impression that the DB server had an added layer of protection (as if it were not on the DMZ network). My Rackspace instance required no configuration but according to their documentation I should be able to place my DB server within a protected virtual network while my web servers resided within a DMZ. AWS has a myriad of different options for virtual private nets.
Once my database was set up it was a simple matter of adding Apache httpd and PHP engine and then unzipping and installing my application.
Cloning a Compute Instance
I wanted to quickly setup a second server to put under my load balancer. I created an image of my first system but was unable to use it to generate a new server. After some digging around, I started a chat sessions with Rackspace support. We discovered that the OpenStack AJAX interface had a bug that didn’t show my staved VMs but the legacy UI did. After switching to the legacy UI, the problem was resolved. Two lessons, the AJAX UI is buggy, Rackspace support rocks.
Load Balancer Setup
Load balancer setup is simple. Customers specify the load-balance name and then add the hosts it should balance to. In addition to being able to add local compute instances, Rackspace allows customers to add any IP address outside Rackspace data centers. AWS does not allow for external addresses within their LB configuration. In theory customers could use Rackspace LB to load balance across two completely different vendor solutions.
Adding More Storage
The marketing on the Rackspace website indicated that they had block storage available. When I couldn’t find it, support informed me that it wasn’t out yet. Sure enough, there was some “fine print” at the bottom indicating that it’s in “preview” right now.
Rackspace support currently runs on the back of electronic chat to live support people and on-line help. The questions I submitted to Rackspace were answered in about 5 minutes or less. This rocks! Rackspace help pages were a bit rough in areas and shows that they still have some work to do.
AWS relies on Forums, FAQs and other web-based support. If customers want to be able to submit help tickets or call, they have to pay for it. In AWS’s favor, they’ve been around long enough and are popular enough to have built a free community or cottage industry of people that have blogged about almost every situation you might find yourself in. Googling my AWS issues always resulted in a fix within about 2 minutes.
Some Comparisons to AWS
In general, when comparing Rackspace to AWS, Rackspace was less expensive but fell short in many areas and offers about a fourth the number of services. On the plus side Rackspace support rocked and was able to answer any question I tossed at them in under 5 minutes. My implementation was fairly straightforward however. I definitely like the AWS free program that allows customers to try almost all of their cloud products for a year at no charge. I was surprised to find out that Rackspace has no such deal.
Rackspace had more flavors of Linux to choose from but no ability to choose pre-packaged virtual machines like AWS has (AWS has over 11k “community” packages). Rackspace lacked all of the options that AWS in what Amazon calls “Deployment & Management”. Elastic Beanstalk is one of the AWS deployment products that provide more of a platform to quickly deploy PHP, Java, or Python applications and then easily upgrade them (or roll back an upgrade) from one place.
It’s a good thing that Rackspace still supports the old UI for provisioning services since I found a serious bug in the new control panel. Having two UIs was a bit confusing. Finding such an obvious bug in the Rackspace control panel was disturbing. AWS control panel continues to scale well as they add services and provides a consistent UI as well and just looks fully baked.
When I created a Rackspace compute instance I couldn’t tell how many cores would be part of that instance nor could I change the amount of disk for my instance. AWS makes it easy to see the number of cores that will be assigned based on the selection and allows users to modify the root file system. In addition, AWS enables users to add additional volumes from EBS when creating the instance.
Where Rackspace offers only one choice for relational database service, AWS offers the top 3 in the industry. In addition, AWS offers NoSQL and in-memory cache where Rackspace has nothing.
Rackspace has 5 basic services as part of their offering. It’s hard to do a fair comparison to AWS who has over 20 with new products being announced almost weekly. The services that Rackspace does have do work and are simple to use.
As of this writing Rackspace is missing a block storage offering for high speed disk to be attached to their compute environments but does offer an object store similar to Amazon’s S3. According to support at Rackspace, the block storage will be available to all customers soon. Maybe I’m missing something but for a company that’s been doing this as long as Rackspace, I’m surprised that this isn’t available by now.
AWS has a larger number of services, and a gorilla like footprint on the Internet. Where Rackspace has only two major locations, AWS has seven (each with at least 2 availability zones). AWS combines this with their “CloudFront” service that allows companies to auto-distribute content to the edge of Amazon’s network giving AWS much broader reach on the Internet. After I wrote this, I took a look at the TechRepublic side-by-side comparison, and they indicate that Rackspace has 8.
TechRepublic.com has a good side-by-side comparison of many of the cloud providers and it’s worth a quick read. It’s a little more objective than this article but misses what I think are a key dimension in the analysis which is a little broader look at the services offered. One example is database.
Although Rackspace services were easy to implement and worked, the UI had an immature and not fully baked feel to it. Their significant lack of available services (compared to AWS) would cause me to hesitate to choose them as a long term partner. AWS on the other hand has more than I need today, but if I expected my service needs to grow, I’d go with AWS over Rackspace. The number AWS services available and the pace of growth of their portfolio builds a picture of a company that is a leader and intends to stay there.
Price might be the one area that Rackspace is competing with. If price was a high priority and I felt that RackSpace could fit my needs for the next two years they are a real contender, but only a contender. If I’m that focused on price there are a lot more options for me to investigate first. If I use the iPad analogy, there’s iPad, then are the 1000s of other offerings that compete for the crumbs left on the floor.
This was a pretty quick review but it did provide a good look at Rackspace and opened my eyes a little more when comparing to AWS.
References & Related
- Cloud Vendor Expansion
- Rackspace releases its Open Stack private cloud software for free - Infoworld
- Is The Cloud Prepping for Hockey Stick Growth? - CloudRant.com
- A Primer on Cloud Computing
- Benefits of Cloud Computing
- Challenges & Risks of Implementing Cloud Computing