# 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.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://karansingh.gitbook.io/ccpnotes/architecting-on-the-cloud/well-architected-framework.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
