If you want to make smart choices about how your organization is going to use Amazon Web Services’ cloud platform, you’ll first need to properly understand it. To get there, you’ll need to figure out just what the cloud is, what technologies it’s built on, what kinds of cost savings and operational advantages it can bring you, and how cloud-based applications work differently than their traditional cousins.
This chapter will introduce you to the basics. The rest of the book will fully flesh out the details.
What Is Cloud Computing?
Using a public cloud is about using other people’s servers to run your digital workloads.
In a sense, there’s no significant difference between running a software application on servers hosted in your own office versus locating it within Amazon’s infrastructure. In both cases, you need to make sure you’ve got sufficient compute, memory, network, and storage resources. In both cases, fast deployments and avoiding over-provisioning are key goals.
But, particularly when it comes to the largest cloud providers, there are important differences. You see, the sheer size of a platform like AWS (and right now there’s no platform on Earth that’s bigger) means it can offer you service, cost, and reliability performance that you could probably never hope to re-create on your own.
Let’s see how some of that works.
Highly Available and Scalable Resources
There’s an awful lot a successful company like AWS can get done with a few hundred thousand networked servers and hundreds of the best trained engineers in the business:
- Design multiple layers of redundancy so that whenever one component fails, its workload is automatically and instantly moved to a healthy replacement.
- Connect resources in geographically remote locations so that the failure of one complete region could trigger a predefined relocation. This relocation can be supported by a similarly automated rerouting of network requests.
- Provide customers with access to as much compute power as they could possibly need, and deliver that power on-demand.
- Because of the scale and efficiency of the platform, AWS can do all that at a price that’s often far below what it would cost to run comparable workloads locally.
Professionally Secured Infrastructure
IT security is a constantly moving target. As difficult as it’s been to manage last year’s threats, you know there’s a whole new batch coming right behind them. As a business, you’re already responsible for protecting the workstations and networking hardware running in your office along with securing your organization’s data and code your developers put into your apps. The integrity of your underlying server infrastructure is just one more potential area of vulnerability for you to worry about.
No matter how good your IT security team is, they’re probably not better informed, equipped, and trained than their counterparts at a major cloud provider. Because AWS is so good at what it does—and because it takes responsibility for the security of its platform’s underlying networking and compute infrastructure—this is one area where outsourcing will usually make sense.
This won’t relieve you of all worries. As you’ll see in Chapter 4, “Understanding the AWS Environment,” the terms of the AWS Shared Responsibility Model mean that, in many cases, the security and integrity of the resources you run on the cloud are still your problem. But the cloud itself is managed by AWS.
Metered Payment Model
One of the defining characteristics of any public cloud computing platform is the way it automatically allocates resources to meet client requests. Practically, this means that you can, for instance, log in to the AWS browser console, and define and launch a virtual server (called an instance in the AWS world), and moments later your new instance will be ready for you. There’s no need to wait for manual intervention by AWS employees.
The flexibility of the self-serve system permits usage patterns that would have been impossible using traditional compute paradigms. Let’s say you need to quickly test a possible application configuration you’re working on. In the old days, even if the test lasted only an hour, you would still need to find free capacity on a physical server in the server room. Once the test ended, you’d still be paying the maintenance and ownership costs of that server capacity even if it was idle.
In the cloud, by contrast, you fire up an instance, run it for the length of time your test requires, and then shut it down. You’ll be billed for only that testing time, which, in some cases, could cost you a fraction of a penny.
Since there’s no human processing involved in cloud compute billing, it’s as easy for a provider to charge a few pennies as it is thousands of dollars. This metered payment makes it possible to consider entirely new ways of testing and delivering your applications, and it often means your cost-cycle expenses will be considerably lower than they would if you were using physical servers running on-premises.
Comparing the costs of cloud deployments against on-premises deployments requires that you fully account for both capital expenses (capex) and operating expenses (opex). On-premises infrastructure tends to be very capex-heavy since you need to purchase loads of expensive hardware up front. Cloud operations, on the other hand, involve virtually no capex costs at all. Instead, your costs are ongoing, consisting mostly of per-hour resource “rental” fees.
You’ll learn more about AWS billing in Chapter 2, “Understanding Your AWS Account.”