architecture - cirelledo-csa/herd GitHub Wiki
WAG - well architected guide
We will use the AWS Well Architected Tool as a general framework to evaluate applications for production fitness.
The well architected guide evaluates an application's fitness based on five criteria:
Process
There are two stages to complete a WAG.
WAG Evaluation
Developers and solution architects run through all sections of the AWS WAT answering all questions to the best of their ability. You should seek advice on any of the issues from sme's. The evaluation phase typically takes 6-8 hours for the uninitiated. Prior evaluations are likely useful in reducing the effort to conduct this phase.
WAG Presentation
A WAG prestentation typically takes 6-8 hours for the uninitiated, practice should bring this down to ~20 minutes. There are key roles that must participate:
Presentation Roles and Functions
- Chair - Keeps order, creates consensus, makes final decisions on exceptions.
- Solutions Architect - Presents the findings of the AWS Well Architected Tool
Nopes
These specialized roles have the power of NO, like "You will NOT run that app that allows rdp from anywhere!"
- Security - Evaluates security findings
- Data - Evaluates data security, stewardship, classification, ownership, etc
- Business - Evaluates the business functionality, ensures app provides value
- Application Portfolio - Evaluates applications as they fit into the ecosystem of applications, looks for convergence, n-1, etc
- Cost - Evaluates the cost and budget
Some of these roles may have overlap, eg Data and Security might have shared responsibility.
Sample Q and A for new product
What's this all about
- Who are you?
- What does your product do?
- Who uses your product?
Cost
- How much does it cost and how do you know how much it costs?
- How do you know if the cost is changing?
- Could it cost less?
Excellence
- How do you mitigate risk?
- How do you know how/what your app is doing?
- How do you operate your product?
Performance
- Tell us about how you designed your app?
- Tell us about how you chose to run compute?
- Tell us about how you chose to run database?
Reliability
- How do you control change?
- How does your app deal with failure?
- How would you deal with a disaster?
Security
- How do you secure your application resources? eg network, compute and data.
- How do you control access?
- How do you detect security events?