AWS Architecture for an N-Tier Web Application

July 4, 2017 Tags: Architecture, Application, Cloud, Amazon AWS

The multi-tier architecture below uses the Amazon Web Services (AWS) cloud platform to provide a durable design for a web application that can scale with demand.

Being based around the Elastic Beanstalk service, this architecture supports most mainstream web application languages, including: Java/J2EE, C#/.Net, Ruby/Rails, Node.js, PHP, Python and Go.

With the addition of CloudFront and S3, static web resources can be deployed to S3 and served via the CloudFront Content Delivery Network (CDN). This improves application responsiveness and reduces server load.

The web and application tiers are deployed via Elastic Beanstalk, which orchestrates the required services and scaling groups.

Key Components:
  • CloudFront

    Global content delivery network (CDN). Optimises website content delivery based on the user's geographic location.
  • Simple Storage Service (S3)

    Massively scalable and durable object store. Used as a distributed filesystem, to store and retrieve web resources.
  • Route 53

    Cloud-based Domain Name System (DNS) service. Used to match a website domain name to the application and available content.
  • Code Build (optional)

    Continuous integration service that compiles source code, runs tests and packages deployable resources.
  • Code Deploy (optional)

    Coordinates and controls the deployment of application resources, such as packages and configurations.
  • Elastic Beanstalk

    Orchestrates AWS application services to manage provisioning, scaling, monitoring and balancing of application resources
  • ElastiCache

    Distributed in-memory object cache that provides scalability and acceleration to an application's data access layer.
  • RDS Cluster/Aurora

    Relational database service, supporting clusters configured with multiple read-replicas. AWS Aurora is worth consideration if supported in the chosen region.
  • Batch (optional)

    Provisions and manages processing jobs that can be scheduled. Data Pipeline may provide an alternative option if Batch is unavailable in the chosen AWS region.

By deploying web, application and database resources across AWS availability zones, this architecture enhances durability and takes advantage of AWS' Disaster Recovery (DR) features.

As the application components are deployed to services that are within elastic scaling groups, the separate application tiers can automatically scale as required to meet growing demand. The scaling groups will also slowly reduce in size if that demand resides, saving on costs.

Scalability and application responsiveness can be further enhanced by taking advantage of client-side templating and rendering, using JavaScript frameworks such as React, Ember.js, JQuery or similar.

If you're building a new web application or have an existing system that requires scalability enhancements, we may be able to provide guidance and/or assist with implementation.

Please Get in Touch to discuss.