| Next » | |
![]() ![]() ![]() | Did this page help you? Yes | No | Tell us about it... |
If you purchase hardware to run your website, you might find that highly available and scalable web hosting can be a complex and expensive proposition. Your website would likely experience dense peak traffic periods and significant fluctuations in traffic patterns. This would result in low utilization rates of your expensive hardware, and you could incur high operating costs to maintain mostly idle hardware. Amazon Web Services (AWS) provides the reliable, scalable, secure, and high performance infrastructure required for the most demanding web applications. AWS enables an elastic, scale-out and scale-in infrastructure model that matches IT costs with real-time shifts in customer traffic patterns.
This guide will help you use AWS to create scalable, robust web applications that handle sophisticated demands and workloads. We’ll review an example architecture of a web application hosted on AWS, and we’ll walk through the process of deploying a sample .NET application using several key AWS services and following best practices. You can adapt this sample to your specific needs if you want. By the end of this walkthrough, you should be able to do the following:
Sign up for AWS.
Create a location to store static files for your web application.
Create a content delivery network.
Launch, connect, secure, and deploy a sample .NET web application to a computer in the cloud.
Create a custom template of a computer containing the hardware, software, and configuration you need.
Set up a load balancer to distribute traffic across multiple computers in the cloud.
Scale your fleet of computers in the cloud.
Monitor the health of your application and computers.
Create a database instance and use it with a sample .NET application.
Create a template for the AWS resources you created.
Clean up your AWS resources.
For a deeper understanding of AWS best practices and the various options that AWS provides, we recommend that you read Web Application Hosting: Best Practices at AWS Cloud Computing Whitepapers.
If you are looking for a quicker and easier way to deploy your web applications, you can use AWS Elastic Beanstalk. AWS Elastic Beanstalk handles the deployment details of capacity provisioning, load balancing, auto scaling, and application health monitoring using several of the services discussed in this document. To learn how to get started with AWS Elastic Beanstalk in the AWS Free Usage Tier, go to Deploy a Sample Web Application in the Free Usage Tier in the AWS Getting Started Guide: AWS Free Usage Tier.
If this guide is not exactly what you are looking for, you may want to check out the following documents:
Getting Started with AWS — Provides information about Amazon Web Services, with helpful links for learning more.
Getting Started Guide: AWS Free Usage Tier — Provides information about how to get started with the free usage tier.
Hosting Websites on Amazon S3 in the Amazon Simple Storage Service Developer Guide — Provides a walkthrough in just a few steps of a static website deployment that does not require running an application.
Getting Started with AWS CloudFormation in the AWS CloudFormation User Guide — Helps you quickly get started using an AWS CloudFormation WordPress blog sample template without needing to figure out the order in which AWS services need to be provisioned or worry about the subtleties of how to make those dependencies work.
Getting Started Guide: AWS Computing Basics for Windows - Introduces you to several key AWS services and components—what these services are, why they are important, and how to use them. The guide also provides a simple example architecture on a Windows platform and walks you through a deployment that uses this architecture.
Amazon Elastic Cloud Compute Microsoft Windows Guide - Provides information that helps you get started using Amazon EC2 instances that run the Microsoft Windows Server operating system..
If you are responsible for running a web application then there are a variety of infrastructure and architecture issues that you face for which AWS can give you easy, seamless, and cost-effective solutions. This section provides a list of Amazon Web Services and components, and it explains the value they add in meeting the challenges you'll face in this example solution.
| Challenges | Amazon Web Services | Benefits |
|---|---|---|
Servers need to be provisioned to handle peak capacity and the unused cycles are wasted at other times. |
|
|
Need a content delivery network (CDN) to provide low-latency, high data transfer speeds so end users don't experience unnecessary delays. |
|
|
Applications may require a database, file system, or access to raw block-level storage. | Amazon Elastic Block Store (Amazon EBS) | Amazon EBS provides a persistent file system for web and application servers. |
Maintaining a database can be expensive and time-consuming. | Amazon Relational Database Service (Amazon RDS) | Amazon RDS provides cost-efficient and resizable capacity while managing time-consuming database administration tasks. |
Developers and businesses need a reliable and cost-effective way to route end users to Internet applications. | Amazon Route 53 | Amazon Route 53 is a highly available and scalable Domain Name System (DNS) web service. It is designed to give developers and businesses an extremely reliable and cost effective way to route end users to Internet applications by translating human readable names like www.example.com into the numeric IP addresses like 192.0.2.1 that computers use to connect to each other. |
Need to plan the order in which Amazon Web Services will be provisioned, keeping in mind dependencies among the services. | AWS CloudFormation | AWS CloudFormation gives developers and systems administrators an easy way to create a collection of related AWS resources and provision them in an orderly and predictable fashion. |
| Challenges | AWS Components | Benefits |
|---|---|---|
Need to provide security to protect application servers from outside malicious users. | Amazon Security Group | An Amazon Security Group lets you specify the protocols, ports, and source IP address ranges that are allowed to reach your Amazon EC2 instances. |
Need to design with failover in mind. | Availability Zones | Availability Zones are distinct locations engineered to be insulated from failures in other Availability Zones. Each Availability Zone provides inexpensive, low latency network connectivity to other Availability Zones in the same region. |
The following diagram shows an example architecture of a web application using the AWS resources mentioned in the previous section.

In this diagram, Amazon EC2 instances run the application and web server and belong to an Amazon EC2 Security Group. The Amazon EC2 Security Group acts as an exterior firewall for the Amazon EC2 instances. An Auto Scaling group is used to maintain a fleet of Amazon EC2 instances that can handle the presented load. This Auto Scaling group spans over multiple Availability Zones to protect against potential failures if an Availabilty Zone becomes unavailable. To ensure that traffic is distributed evenly among the Amazon EC2 instances, an Elastic Load Balancer is associated with the Auto Scaling group. If the Auto Scaling group launches or terminates instances based on load, then the Elastic Load Balancer will automatically adjust accordingly. The database tier consists of Amazon RDS database instances, including master and local slave, located in multiple Availability Zones for failover protection. Amazon RDS provides automated backups to Amazon S3. Amazon S3 stores backups and static content. Since the consumers of this application may be globally distributed or a large number may visit the site at one time, high volume static content is edge cached using Amazon CloudFront for better performance. Amazon Route 53 can be used to provide secure and reliable routing to your infrastructure that uses Amazon Web Services.
For a step-by-step walkthrough of how to build out this architecture, see Getting Started. This walkthrough will teach you how to do the following:
Sign up for AWS.
Create an Amazon S3 bucket and store files in the bucket.
Create an Amazon CloudFront distribution.
Launch, connect, secure, and deploy a .NET sample application to an Amazon EC2 instance.
Create a Custom AMI.
Set up an Elastic Load Balancer to distribute traffic across your Amazon EC2 instances.
Scale your fleet of instances automatically using Auto Scaling.
Monitor your AWS resources using Amazon CloudWatch.
Create a database instance and use it with a sample .NET application.
Create an AWS CloudFormation template based on the resources you created.
Clean up your AWS resources.
For more information on how to use Amazon Route 53 in this architecture, see Amazon Route 53.