Domain 1.0: Cloud Concepts
1.2. Identify design principles of the AWS Cloud
1.2 Identify Design Principles of the AWS Cloud
AWS recommends several best practices when designing cloud architectures to fully leverage the benefits of cloud computing.
Design for Failure
- Disaster Recovery (DR): AWS provides services for DR strategies like backup (S3, Glacier) and failover capabilities (Route 53 health checks, Elastic Load Balancing).
- Fault-tolerant design: Use multi-AZ or multi-region architectures to ensure high availability and resilience.
Implement Elasticity
- Auto-scaling: Automatically scale resources to meet demand and avoid over-provisioning.
- Serverless services: AWS Lambda allows for automatic scaling without the need for provisioning servers.
Decouple Components
- Loose coupling: Break applications into smaller, independent components (microservices) using services like Amazon SQS and Amazon SNS.
- Service-oriented architecture: Design with services that can operate independently, improving reliability and scalability.
Optimize for Cost
- Right-sizing: Regularly evaluate and adjust resource allocation to prevent over-provisioning and reduce costs.
- Leverage Spot Instances: For non-critical workloads, Spot Instances offer up to 90% cost savings.
Automation
- Infrastructure as code (IaC): Tools like AWS CloudFormation or AWS CDK allow for automating infrastructure provisioning and updates.
- CI/CD Pipelines: Use AWS CodePipeline and CodeDeploy to automate software delivery.
Security in Every Layer
- Zero-trust model: Apply security at every level using services like AWS Identity and Access Management (IAM), AWS Key Management Service (KMS), and Virtual Private Cloud (VPC) security groups.
- Encryption: Ensure that data is encrypted at rest (using KMS or CloudHSM) and in transit (using SSL/TLS).
Global Design
- Regions and Edge locations: Distribute your application across multiple AWS regions and utilize edge locations for CDN (CloudFront) to reduce latency and improve the user experience.