Traditional web application deployment in a VPC uses a three-tier architecture:
Web Tier: Presentation layer with Application Load Balancer pointing to web servers
Multiple Amazon EC2 instances across two availability zones
Auto scaling group for high availability
Customer manages instance security patches and software updates
Amazon CloudWatch monitoring and alarms
Application Tier: Business logic layer accessed through another Application Load Balancer
High availability design across two AZs with auto scaling group
Customer responsible for instance maintenance
Data Tier: AWS managed Amazon RDS Multi-AZ database
Primary database in one AZ with synchronous replication to secondary in second AZ
AWS manages database instances, security patches, and software updates
Automatic failover when primary database fails
The multi-tier architecture provides a framework for decoupled and independently scalable application components. However, the network acts as the boundary between tiers and requires creating many undifferentiated application components like message queues and authentication components.
A common serverless implementation of three-tier architecture:
Web Tier: Amazon CloudFront distributes static front-end from Amazon S3 bucket
Application Tier:
Amazon Cognito user pool handles authentication with JWT tokens
Amazon API Gateway validates JWT tokens and routes to AWS Lambda functions
Lambda functions execute business logic
Data Tier: Amazon DynamoDB for data storage and retrieval
This pattern eliminates server management while maintaining the three-tier architectural benefits. Modern applications are built “serverless-first” to increase agility throughout the application stack.