06 General Design Principles

🦄 06 General Design Principles

The Well-Architected Framework identifies a set of general design principles to facilitate good design in the cloud:

1. Stop guessing your capacity needs: Eliminate guessing about your infrastructure capacity needs. When you make a capacity decision before you deploy a system, you may end up sitting on expensive idle resource or dealing with performance implications of limited capacity. With cloud computing, these problem can go away. You can use as much or as little capacity as you need, and scale up and down automatically.

2. Test systems at production scale: In the cloud, you can create a production scale test environment on demand, complete your testing, and then decommision resources. Because you only pay for the test environment when it’s running. You also can simulate your live environment for a fraction of the cost of testing on premises.

3. Automate to make experimentation easier: Automation allows you to create and replicate your systems at low cost and avoid the expense of manual effort. You can track changes your automation, audit the impact and revert back the previous changes when necessary.

4. Allow for evolutionary architectures: Allow for evolutionary architectures. In a traditional environment, an architect decision is often implemented as a static, one-time event with a few major versions of a system during its lifetime. As a business and its context continue to change, these initial decisions might be a challenge to deliver changing business requirements. In the cloud, the capability to automate and test on demand lowers the risk of impact design changes. This allows system to evolve over time so that businesses can take advantages of innovations as a standard practice.

5. Drive architectures using data: In the cloud, you can collect data on how your architectural choices affect the behavior of your workload. This lets you make fact-based decisions on how to improve your workload. You cloud infrastructure is code, so you can use that data to inform your architecture choices and improvements over time.

6. Improve thru game days: Test how your architecture and processes perform by regularly scheduling game days to simulate events in production. This will help you improve your development, develop organizational experience in dealing with events.