Amazon Web Service's Software Infrastructure Strategy
Because of Amazon's low-margin, highly scaled requirements, you'd probably expect it to have a unique approach to the cloud computing software infrastructure running on top of its hardware environment, right? You'd be correct.
Amazon has created a unique, highly specialized software environment in order to provide its cloud computing services. It's unique because, at first glance, people often find Amazon Web Services (AWS) different and confusing — it is unlike any other computing environment they've previously encountered.
After users understand how AWS operates, however, they generally find that its design makes sense and that it's appropriate for what it delivers — and, more important, for how people use the service.
Though Amazon has an unusual approach to its hardware environment, it's in the software infrastructure that its uniqueness truly stands out. Here is a quick overview of its features. The software infrastructure is
Based on virtualization: Virtualization — a technology that abstracts software components from dependence on their underlying hardware — lies at the heart of AWS. Being able to create virtual machines, start them, terminate them, and restart them quickly makes the AWS service possible.
As you might expect, Amazon has approached virtualization in a unique fashion. Naturally, it wanted a low-cost way to use virtualization, so it chose the open source Xen Hypervisor as its software foundation. Then it made significant changes to the "vanilla" Xen product so that it could fulfill the requirements of AWS.
The result is that Amazon leverages virtualization, but the virtualization solution it came up with is extended in ways that support vast scale and a plethora of services built atop it.
Operated as a service: You're thinking: "Of course it's operated as a service — that's why it's called Amazon Web Services!"
That's true, but Amazon had to create a tremendous software infrastructure in order to be able to offer its computing capability as a service.
For example, Amazon had to create a way for users to operate their AWS resources from a distance and with no requirement for local hands-on interaction. And it had to segregate a user's resources from everyone else's resources in a way that ensures security, because no one wants other users to be able to see, access, or change his resources.
Amazon had to provide a set of interfaces — an Application Programming Interface (API) — to allow users to manage every aspect of AWS.
Designed for flexibility: Amazon designed AWS to address users like itself — users that need rich computing services available at a moment's notice to support their application needs and constantly changing business conditions.
In other words, just as Amazon can't predict what its computing requirements will be in a year or two, neither can the market for which Amazon built AWS.
In that situation, it makes sense to implement few constraints on the service. Consequently, rather than offer a tightly integrated set of services that provides only a few ways to use them, Amazon provides a highly granular set of services that can be "mixed and matched" by the user to create an application that meets its exact needs.
By designing the service in a highly flexible fashion, Amazon enables its customers to be creative, thereby supporting innovation.
Not only are the computing services themselves highly flexible, the conditions of use of AWS are flexible as well. You need nothing more to get started than an e-mail address and a credit card.
Highly resilient: If you already recognize the inherent unreliability of hardware, you now realize that there is no way to implement resiliency via hardware. The obvious alternative is with software, and that is the path Amazon has chosen.
Amazon makes AWS highly resilient by implementing resource redundancy — essentially using multiple copies of a resource to ensure that failure of a single resource does not cause the service to fail.
For example, if you were to store just one copy of each of your objects within its S3 service, that object may sometimes be unavailable because the disk drive on which it resides has broken down. Instead, AWS keeps multiple copies of an object, ensuring that even if one — or two! — objects become unavailable because of hardware failure, users can still access the object, thereby improving S3 reliability and durability.
In summary, Amazon has implemented a rich software infrastructure to allow users access to large quantities of computing resources at rock-bottom prices.