Amazon Web Services (abbreviated AWS) is a collection of remote computing services (also called web services) that together make up a cloud computing platform, offered over the Internet by Amazon.com. The most central and well-known of these services are Amazon EC2 and Amazon S3.
AWS is a suite of hosting products that aims to take the headache out of traditional hosting solutions. Services like Dropbox and websites such as Reddit all use AWS. In Fact we feel that we are in a good neighbourhood by being on AWS.
AWS isn't just for the Dropboxes and Reddits of the world, though. You and I can host a couple of servers on AWS and quite efficiently too. We recently have been using AWS to host the web backend for an enterprise web application we built for the mortgage servicing industry, which usually runs on high traffic during the office hours and a bit of less traffic in the off hours.
For transient events like this, AWS makes a lot of sense. The traffic is high during the day, and then will dwindle off, allowing us to manage the amount of server computation needed to host the backend without being tied into a yearlong contract, or paying for power we don't necessarily need.
I've compiled a few of our reasons for choosing AWS and explained them here. So let's dive in and see why AWS is better than the competition, for big and small users.
On the Go Pricing
Amazon took a refreshing approach to pricing its hosting when launching AWS. Every service is "a la carte", meaning you pay for what you use. This makes a lot of sense for server infrastructure, as traffic tends to be very bursty, especially the larger the site is.
Traditional hardware, for the most part, goes unutilized for 90% of its lifecycle. AWS helps deal with this problem by keeping it cheap during the slow times.
The Free Tier
The biggest reason many people do not use AWS is lack of knowledge. EC2 is not like a traditional hosted solution, as it's designed to bring servers online and offline very quickly as needed. Because of this, many IT professionals were leery of using EC2 (or the rest of the AWS suite) because of the cost associated with "playing around" to figure it out.
The free tier, which provides enough credit to run an EC2 micro instance 24/7 all month, resolves this. It comes with S3 storage, EC2 compute hours, Elastic Load Balancer time, and much more. This gives developers a chance to try out AWS's API in their software, which not only enhances their software, but also ties them to AWS, which benefits Amazon in the long run.
There's no denying the speed of AWS. The Elastic Block Storage is nearly as fast as S3, but provides different features. EC2 Compute Units give Xeon-class performance on an hourly rate. The reliability is better than most private data centers in the world, and if there is a problem, you're usually still online , but with reduced capacity.
This is tested using a beautiful application Chaos Monkey, where by using this application it randomly powers down a component in your cloud environment. Then you could whether your application is still running or if it is brought down entirely. So in our case the chaos monkey brought down our database and a web server. The database which was a RDS service immediately switched to another database using the Multi AZ feature as promised by AWS. In the web server scenario, when one web server was down then another web server was launched using the autoscaling feature, so we finally concluded that AWS delivers High Availability Performance as promised by them.
In a traditional traditional hosting environments, this probably would have meant downtime and 404 errors as the websites would have just gone dark. But in a truly cloud-hosted environment like AWS, there's enough separation between processing and storage that sites can remain online and continue generating revenue even with reduced functionality. We host our sites out of the Northern Virginia cluster and Oregon cluster, and experienced no problems.
But the performance power of AWS is in the storage. The distributed nature of EBS and S3 yields millions of input/output operations per second to all instances. Think of it like having a raid array of SSDs attached to a particular computer. Add in incredible bandwidth, and you have a storage system that is capable of vast scaling, with the reliability of 99.999999999%.
If you've ever had to provision a hosted web service, you know this pain very well. Traditional providers take anywhere from 48-96 hours to provision a server. Then you have to spend a few hours tweaking it and getting everything tested.
AWS shrinks that deployment time to minutes. If you utilize their Amazon Machine Images, you can have a machine deployed and ready to accept connections in that short amount of time. This is important when, for example, you are running a promotion that generates tons of traffic at specific intervals, or just need the flexibility to handle the demand when a new product launches.
The Cloudformation Templates is a gift from the AWS which can be used to roll out multiple environments at the click of button and as well can be rolled down at the click of a button when the requirement recedes.
Access to the AWS resources can be restricted using the IAM(Identity and Access Management), using the roles in IAM we can define the privileges for user actions which greatly reduces any malpractices.
AWS also provides VPC, which can be used to host our services on a private network which is not accessible from the internet, but can communicate with the resources in the same network. This restricts the access to the resources such that any ill intentioned user from the internet.
These resources hosted in the private network can be accessed using the Amazon VPN or some open source service like OpenVPN.
The most important feature in AWS is its flexibility. All the services work and communicate together with your application to automatically judge demand and handle it accordingly.
Combined with the fantastic API and the Amazon Machine Images you create, you can have a completely customized solution that provisions a server instance in under 10 minutes, and is ready to to accept connections once it comes online. Then you can quickly shut down instances when they are no longer needed, making server management a thing of the past.