4.2.2. Key Concepts Review: Core Design Patterns (Compute, Storage, Network, Database)
š” First Principle: Optimal architectural design involves selecting and integrating purpose-built services across compute, storage, network, and database layers, based on workload characteristics and architectural best practices.
Scenario: You need to design a new backend for a mobile application that will handle user authentication, store profile data (flexible schema), manage real-time user sessions, and process asynchronous notifications.
These are the fundamental building blocks of any AWS solution.
- Compute:
- Services:
"EC2"
(IaaS
),"ECS"
/"EKS"
(Containers),"Lambda"
(Serverless Functions),"Fargate"
(Serverless Containers),"Batch"
. - Patterns:
"Auto Scaling"
(elasticity),"Load Balancing"
(distribution),"Multi-AZ"
("HA"
), immutable infrastructure.
- Services:
- Storage:
- Services:
"S3"
(Object),"EBS"
(Block),"EFS"
/"FSx"
(File),"Glacier"
(Archive). - Patterns: Data Durability (
"CRR"
), Tiering ("Lifecycle Policies"
), Access Patterns (Hot/Warm/Cold).
- Services:
- Network:
- Services:
"VPC"
(Isolation),"Route 53"
(DNS
/Traffic),"Direct Connect"
/"VPN"
(Hybrid),"Transit Gateway"
(Inter-"VPC"
),"Security Groups"
/"NACLs"
(Security). - Patterns: Multi-Tier Architecture (Public/Private Subnets), Defense-in-Depth, Network Performance Optimization.
- Services:
- Database:
- Services:
"RDS"
/"Aurora"
(Relational),"DynamoDB"
(NoSQL
Key-Value/Document),"Redshift"
(Data Warehouse),"ElastiCache"
(Caching),"Neptune"
(Graph),"QLDB"
(Ledger),"Timestream"
(Time Series). - Patterns:
"Read Replicas"
(Read Scaling),"Multi-AZ"
("HA"
),"Global Tables"
(Multi-Region HA
/"DR"
), Sharding.
- Services:
Visual: Core Design Patterns Interconnection
Loading diagram...
ā ļø Common Pitfall: Using a service for a purpose it wasn't designed for (an "anti-pattern"), such as using "EFS"
as a database back-end.
Key Trade-Offs:
- Managed vs. Self-Managed: Using a managed service (like
"RDS"
) reduces operational overhead but offers less control than managing the software yourself on"EC2"
.
Reflection Question: How would you integrate specific AWS services from the Compute, Storage, Network, and Database categories (e.g., "Lambda"
, "DynamoDB"
, "ElastiCache"
, "API Gateway"
) to form a scalable, highly available, and loosely coupled architecture for a mobile backend that handles user authentication, stores flexible profile data, manages real-time user sessions, and processes asynchronous notifications?