Cloud Computing Optimization
The cloud is a great choice for so many serious workloads because it's scalable, elastic, and, often, a lot cheaper than traditional alternatives. Effective deployment provisioning will require some insight into those three features.
Scalability
A scalable infrastructure can efficiently meet unexpected increases in demand for your application by automatically adding resources. As Figure 1.2 shows, this most often means dynamically increasing the number of virtual machines (or instances as AWS calls them) you've got running.
FIGURE 1.2 Copies of a machine image are added to new VMs as they're launched.
AWS offers its autoscaling service through which you define a machine image that can be instantly and automatically replicated and launched into multiple instances to meet demand.
Elasticity
The principle of elasticity covers some of the same ground as scalability—both address how the system manages changing demand. However, though the images used in a scalable environment let you ramp up capacity to meet rising demand, an elastic infrastructure will automatically reduce capacity when demand drops. This makes it possible to control costs, since you'll run resources only when they're needed.
Cost Management
Besides the ability to control expenses by closely managing the resources you use, cloud computing transitions your IT spending from a capital expenditure (capex) framework into something closer to operational expenditure (opex).
In practical terms, this means you no longer have to spend $10,000 up front for every new server you deploy—along with associated electricity, cooling, security, and rack space costs. Instead, you're billed much smaller incremental amounts for as long as your application runs.
That doesn't necessarily mean your long‐term cloud‐based opex costs will always be less than you'd pay over the lifetime of a comparable data center deployment. But it does mean you won't have to expose yourself to risky speculation about your long‐term needs. If, sometime in the future, changing demand calls for new hardware, AWS will be able to deliver it within a minute or two.
To help you understand the full implications of cloud compute spending, AWS provides a free Total Cost of Ownership (TCO) Calculator at aws.amazon.com/tco-calculator
. This calculator helps you perform proper “apples‐to‐apples” comparisons between your current data center costs and what an identical operation would cost you on AWS.
The AWS Cloud
Keeping up with the steady stream of new services showing up on the AWS Console can be frustrating. But as a solutions architect, your main focus should be on the core service categories. This section briefly summarizes each of the core categories (as shown in Table 1.1) and then does the same for key individual services. You'll learn much more about all of these (and more) services through the rest of the book, but it's worth focusing on these short definitions, because they lie at the foundation of everything else you're going to learn.
TABLE 1.1 AWS service categories
Category | Function |
---|---|
Compute | Services replicating the traditional role of local physical servers for the cloud, offering advanced configurations including autoscaling, load balancing, and even serverless architectures (a method for delivering server functionality with a very small footprint) |
Networking | Application connectivity, access control, and enhanced remote connections |
Storage | Various kinds of storage platforms designed to fit a range of both immediate accessibility and long‐term backup needs |
Database | Managed data solutions for use cases requiring multiple data formats: relational, NoSQL, or caching |
Application management | Monitoring, auditing, and configuring AWS account services and running resources |
Security and identity | Services for managing authentication and authorization, data and connection encryption, and integration with third‐party authentication management systems |
Table 1.2 describes the functions of some core AWS services, organized by category.
TABLE 1.2 Core AWS services (by category)
Category | Service | Function |
---|---|---|
Compute | Elastic Compute Cloud (EC2) | EC2 server instances provide virtual versions of the servers you would run in your local data center. EC2 instances can be provisioned with the CPU, memory, storage, and network interface profile to meet any application need, from a simple web server to one part of a cluster of instances providing an integrated multi‐tiered fleet architecture. Since EC2 instances are virtual, they're resource‐efficient and deploy nearly instantly. |
Lambda | Serverless application architectures like the one provided by Amazon's Lambda service allow you to provide responsive public‐facing services without the need for a server that's actually running 24/7. Instead, network events (like consumer requests) can trigger the execution of a predefined code‐based operation. When the operation (which can currently run for as long as 15 minutes) is complete, the Lambda event ends, and all resources automatically shut down. | |
Auto Scaling | Copies of running EC2 instances can be defined as image templates and automatically launched (or scaled up) when client demand can't be met by existing instances. As demand drops, unused instances can be terminated (or scaled down). | |
Elastic Load Balancing | Incoming network traffic can be directed between multiple web servers to ensure that a single web server isn't overwhelmed while other servers are underused or that traffic isn't directed to failed servers. | |
Elastic Beanstalk | Beanstalk is a managed service that abstracts the provisioning of AWS compute and networking infrastructure. You are required to do nothing more than push your application code, and Beanstalk automatically launches and manages all the necessary services in the background. | |