AWS Documentation: https://aws.amazon.com/architecture/well-architected/
AWS Whitepaper: https://docs.aws.amazon.com/wellarchitected/latest/framework/welcome.html
💡 Avoid using “WAF” for “Well-Architected Framework”. “WAF” is much more commonly used for “Web Application Firewall”, both the AWS service as well as any web application firewall outside of AWS.
Best Practice Principles of the AWS Cloud
Ref: https://www.udemy.com/course/aws-certified-cloud-practitioner-new/learn/lecture/20056474
General Guiding Principles
- Stop guessing your capacity needs
- Leverage cloud elasticity and autoscaling
- Test systems at production scale
- Cloud enables you to deploy and tear down production-like infrastructure quickly, no excuse not to test it!
- Automate to make architectural experimentation easier
- Allow for evolutionary architectures
- Design based on changing requirements → cloud promotes agility
- Drive architectures using data
- Improve through game days
- Simulate applications for flash sale days (e.g. simulate spikes during Christmas)
Best Practice Cloud Design Principles
- Scalability (vertical & horizontal)
- Infrastructure should be repeatable and easily (re)created
- Disposable Resources: servers should be disposable & easily configured
- Automation: Serverless, Infrastructure-as-a-Service (IaaS), autoscaling…
- Loose Coupling:
- Most apps start as a monolith (entire codebase in one server) → they get bigger and bigger over time as you add more functionality
- For better maintainability, it's recommended to break down a monolith into smaller, loosely coupled components → allows for isolated failure and independent scaling of components
- Services, not Servers:
- You could potentially just use EC2 and configure all functionality in EC2 instances…
- …but AWS offers tons of managed services, DBs, serverless offerings, etc! Do you really want to reinvent the wheel AND have so much admin/management overhead?