Well-Architected describes the key concepts, design principles and architecture best practices for designing your cloud workloads. It balances best practices with business goals to determine the optimal outcome.
Created by AWS Solutions Architects using the lessons Amazon has learnt from running thousands of systems at a massive scale, it enables developers to compare their workloads against the rigorous standards that AWS holds itself against.
Credit to Jerry Hargrove
- Operational Excellence - To be able to monitor and support workloads effectively, to enable continuous improvement and to deliver business value.
- Security - Improving your security posture by taking advantage of Cloud technologies to protect your assets and systems.
- Reliability - Ensuring your workload can perform it's intended function correctly and consistently.
- Performance Efficiency - Ensuring appropriate resource allocation to enable performant systems and a positive end user experience.
- Cost Optimisation - Ensuring you are delivering business value at the lowest possible cost.
Lenses can be applied to a Well-Architected review to get additional specific questions targeting your type of application. Examples of lenses include Serverless, Machine Learning and SaaS. You can find more out about lenses here.
Well-Architected should be applied both continuously with reviews carried out at regular intervals. Understanding the pillars, core concepts and reasons behind the pillars of the Well-Architected framework can enable you to make better architecture decisions and avoid rewrites or large changes after a full-scale review has been carried out.
The AWS Console has a "Well-Architected Tool" which allows you to track the health of your workloads. This is a free service and will ask questions based on your workload type to come up with an improvement plan.
As a junior engineer, being involved in design discussions can be a daunting experience.
A few months ago, I took time to take a deep dive into the AWS Well-Architected framework. The knowledge I gained by doing this has been invaluable.
Well-Architected is a gold standard for best practices for building on AWS. It can also be applied to other types of applications.
Instead of forming opinions about how something should be done, referring to the Well-Architected framework can often yield an AWS backed approach.
The key differentiator between Well-Architected and self-formed opinions is that Well-Architected is the opinion of AWS Solutions Architects with many years of experience. My own self-formed opinions are only based on my experiences, which at the beginning of my career are limited.
Being able to point to documentation to back up your points is invaluable.
By following Well-Architected principles and applying them in everything I did I found myself over time becoming more involved in design discussions and more high-level work.
Well-Architected gave me the right questions to ask, to drive discussions so we could make better choices in the day-to-day development of our application.
When weighing up technical decisions, think Well-Architected:
- Security - Is this as secure as it could be, what's data are we storing, who has access?
- Cost - What's the potential cost impacts of this change, is it worth it, is the business aware?
- Operational Excellence - What monitoring do we need for this, what metrics should we be looking at, what level of fault tolerance should we allow?
- Performance - What will this do to performance, do we need to tweak/re-evaluate resource allocation as a result of this change?
- Reliability - What happens if this fails, if a downstream system is down?
Asking these questions and driving conversations led to me progressing pretty quickly to becoming a Senior Software Engineer.
I had plenty of examples of how I identified improvements to our application that I identified by applying Well-Architected.
If I could recommend one topic of learning to a junior engineer or someone looking to up their game designing and building on AWS it would be to read the Well-Architected framework and understand how to apply it.
If you or your team applies Well-Architected I'd love to hear how it made a difference to your application in the comments!