Rapid Deployment
Using a single template, identical environments can be deployed, removing repetitive manual steps and checklists
Trade-offs can increase cost and complexity, so design decisions should be based on empirical data. This might include load testing for measurable performance benefits or benchmarking for cost-optimal workloads over time.
Objective: Ensure that your architecture can handle changes in demand.
Proactive ScalingAnti-pattern: Reactive manual scaling where users are prevented from accessing applications while administrators manually launch instances.
Objective: Automate the provisioning, termination, and configuration of resources.
AWS offers built-in monitoring and automation tools at virtually every infrastructure layer. Without automation, you must manually detect and respond to failures.
Objective: Provision your computing infrastructure using code instead of manual processes.
Rapid Deployment
Using a single template, identical environments can be deployed, removing repetitive manual steps and checklists
Reduce Errors
Manual configuration is error-prone. IaC reduces errors and streamlines error checking with quick rollback capabilities
Consistent Changes
Make changes to template and push to all stacks, enabling consistent deployment across environments
Objective: Take advantage of the dynamically provisioned nature of cloud computing.
Think about infrastructure as software instead of hardware:
This approach enables quick response to capacity changes, application upgrades, and underlying software management.
Objective: Design architectures with independent components.
Traditional infrastructures have chains of tightly integrated servers where one component failure can be fatal and impedes scaling.
With loose coupling, managed solutions act as intermediaries that automatically handle both failures and scaling of components.
Objective: Use the breadth of AWS services. Don’t limit your infrastructure to servers.
Examples of managed solutions: AWS Lambda, Amazon SQS, Amazon DynamoDB, ELB, Amazon SES, Amazon Cognito
Objective: Match technology to the workload, not the other way around.
AWS recommends choosing data stores based on application environment needs rather than hardware or license constraints.
Objective: Assume everything fails. Then, design backward.
Where possible, eliminate single points of failure from architecture. This doesn’t mean duplicating every component - you can use:
Create secondary (standby) database server and replicate data. If main database goes offline, secondary server picks up the load, and application servers automatically send requests to secondary database.
Objective: Take advantage of AWS flexibility to increase cost efficiency.
Variable vs Fixed ExpenseTrade fixed expenses (servers running 24/7) for variable expense (pay only for services you need for as long as you use them).
Objective: Minimize redundant data retrieval operations, improving performance and cost.
Caching temporarily stores data in intermediary location between requester and permanent storage to make future requests faster and reduce network throughput.
Objective: Build security into every layer of your infrastructure.
Security involves ensuring individual environments and components are secured from each other, not just getting through outer boundary.
These best practices work together to create robust, scalable, and cost-effective cloud architectures that can adapt to changing business needs while maintaining security and reliability.