> For the complete documentation index, see [llms.txt](https://karansingh.gitbook.io/ccpnotes/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://karansingh.gitbook.io/ccpnotes/architecting-on-the-cloud/well-architected-framework.md).

# Well-Architected Framework & Best Practices

## General Guiding Principles:

* **Stop guessing capacity**: Might end up sitting on expensive idle resources or dealing with the performance implications of limited capacity.<br>
* **Test systems at production scale**: Can create a production-scale test environment on demand.<br>
* **Automate to make architectural experimentation easier**: Automation allows you to create and replicate your workloads at low cost and avoid the expense of manual effort.<br>
* **Allow for evolutionary architectures**: Allow for systems to evolve over time so that businesses can take advantage of innovations as a standard practice.<br>
* **Drive architectures using data**: Make fact-based decisions on how to improve your workload.<br>
* **Improve through game days**: Test how your architecture and processes perform by regularly scheduling game days to simulate events in production.

## General Design Principles:

* **Be scalable -** Vertically and horizontally.<br>
* **Disposable resources** - Servers should be easily disposable and easily configured.<br>
* **Automation** - Serverless, auto-scaling, etc.<br>
* **Loose coupling** - Break a monolith down into smaller, loosely coupled components so a failure doesn't affect other components.<br>
* **Services, not servers** - Using managed services and going serverless rather than just using EC2 instances.<br>

## Best Practices:

* **Decouple your components** - Also called loose coupling.<br>
* **Think parallel** - Experiment different architectures in parallel.<br>
* **Implement elasticity** - Can scale in and scale out to meet the demand without any human intervention.<br>
* **Design for failure** - Being pessimistic.
