There is certainly no shortage of cloud services available to the average consumer, and the same goes for enterprises, but it seems as though many cloud offerings cater to one or the other. Services like Dropbox and Box.net are for the consumer demographic while Azure or Citrix is for the enterprise. For individuals seeking powerful tools in the cloud arena, it's difficult -- and expensive -- to leverage those enterprise solutions on a personal level. Amazon's elastic cloud offering, EC2, attempts to bridge that gap.
Amazon positions its EC2 product as a tool for developers. Whether it's a developer starting from scratch or a large-scale development company, EC2 can scale to fit any cloud storage and virtual environment need.
Amazon EC2 Pricing
The appeal of EC2 is its payment structure; the user pays only for the storage and time that's necessary. While other cloud services are based on a pre-paid structure with fixed data allowances, Amazon charges by data and/or time to provide a perfect fit for any developer. To make EC2 accessible to everyone, Amazon has even added a Free Usage Tier to its pricing scheme. This free tier offers respectable monthly limits as well, including 750 hours of instance usage and 30GB data transfer to and from the cloud.
The first paid level starts at $0.08 per hour on a Linux machine or $0.12 per hour on a Windows machine. As you increase the virtual machine's power and storage capability, prices will increase all the way up to $2.10 per hour. Amazon also allows you to reserve a single instance for an entire year with a single, one-time payment. This ranges from $227.50 for the smallest instance for one year up to $5,630 for the "Quadruple Extra Large" instance category.
Amazon has even introduced a Free Usage Tier so developers can get started without spending a dime.
Regardless of payment plan, Amazon makes it easy for developers to get started quickly with preconfigured template images, or they can create an Amazon Machine Image (AMI) from scratch. As a developer tests and runs an application, they are charged from the time an instance starts to when it is terminated. (A side note: the developer does need to terminate any instances manually, otherwise they will be charged for the running time of that instance.)
As the developer goes from building an application to actually running it in the cloud, EC2 has the ability to scale on-demand. Other cloud services can take days or weeks to assign more storage for an application instance; Amazon claims a request for increased cloud space can be completed in minutes.
EC2 provides a developer with several OS environments to choose from as well. Multiple Linux iterations are available, including Ubuntu, openSUSE, Oracle and Red Hat Enterprise Linux as well as Windows Server. Users also have their choice of software to run in the cloud, including databases from IBM, MySQL and Oracle, hosting from Apache HTTP, ASP.NET and IBM Lotus services, and application development environments including Ruby on Rails, IBMsMash and JBoss Enterprise platform.
When a developer is ready to test and run an application in the cloud, Amazon provides numerous configurations for virtual machines. From the simplest machine with 1.7GB of memory, 1 Virtual Core and 160GB of local-instance storage on a 32-bit platform to powerful GPU clusters with 1690GB virtual storage, 22GB virtual RAM and 2x NVIDIA Tesla M2050 GPUs running on a 64-bit machine. Amazon's powerful backend makes it possible to test your application with a large variety of virtual machines, and when you're ready to implement an app for public use, you'll have plenty of power to make sure it remains stable and reliable.
Getting Started with Amazon EC2
When you're ready to get started with EC2, the process is fairly straightforward. Sign up for a free Amazon EC2 account. Launch an instance using the setup wizard in the Web environment. Here you can choose a Linux or Windows development environment, create your "key pair," which is a password you will use to securely connect to your virtual environment, follow the prompts and finish the setup. Record the public DNS name for the newly created instance and it should now be marked as "running."
If you're using a Linux machine, you can connect using SSH in a command line shell. On a Windows machine, you probably should use an SSH client, such as the free "PuTTY" application. After you're connected (complete instructions can be found on the Amazon EC2 website), you will be able to interact with the virtual instance just as you would any other server.
The simplicity, power and flexibility of Amazon EC2 makes it ideal for the "prosumer" or experienced developer. With the power of Amazon's backend, a developer could actually use EC2 from an application's development to implementation on a large scale, paying only for what they use throughout the process.