One of the joys of AWS is the ease with which we can design and implement scalable, decoupled, multi-tier applications. In this post, I want to provide an example of the services you might use (and their purpose) in the hosting of a Web Application.
Users can find your Web Application thanks to Route 53 of AWS. This is the highly available Domain Name System (DNS) network service. This service handles the forwarding of client requests to the correct components in your AWS application infrastructure.
To optimize client access and reduce latency, you can use the CloudFront service which provides a global network of edge locations that can offer caching and improved performance of content delivery.
S3 can store the Web resources (such as static web pages and graphics) required by the Web Servers that make your application accessible from the Internet.
Elastic Load Balancing can distribute HTTP requests from clients to the various Web Servers that make up the Internet facing presence. Elastic Load Balancers can also distribute traffic to the various Application Servers you are using as well.
EC2 instance are perfect for your Web Servers and Application Servers. You can choose the ideal software platforms and hardware instances to meet your needs. For example, your Web Servers can be simple Amazon Linux instances running Apache, while your Application Servers can be more complex Windows Server systems (if required).
Auto Scaling can be used with the Web and Application Servers to dynamically scale the Web Application presence as needed. EC2 instances can be created and destroyed dynamically as traffic increases and decreases beyond set thresholds.
For data storage required by the Web Application, you can rely on the Amazon Relational Database Service. RDS permits the selection of a relational database technology from a large number of popular options including Oracle and SQL Server. Amazon even has their own option of Aurora.