30 days of AWS - Part 3: AWS Well-Architected Framework
Tags: beginners, aws, wellarchitectedframework, learning
Published: 2024-07-02 18:56:01

## Definition
To put it simply, the AWS well-architected framework is a **collection of best practices and guidelines** for designing and operating reliable, secure, efficient, and cost-effective systems in the cloud.

It is built upon 6 pillars. Namely:
- Security
- Cost optimization
- Operational excellence
- Reliability
- Efficiency
- Sustainability

Acronym to remember it by: S-C-O-R-E-S

## Operational Excellence
**Focus** - Run and monitor systems to deliver business value. Continually improve and support processes and procedures.

**Key Topics**
- Automating changes
- Responding to events
- Defining standards to maintain daily operations

### Design  Principles
- **Perform operations as code**- Define the entire workload as code and update it with code.
- **Make frequent, small, reversible changes**- Design workloads that can be updated regularly. Make provision for reversible changes in small increments.
- **Refine operations procedures frequently**- Look for opportunities to improve operations procedures.
- **Anticipate failure**- Identify potential failure sources so they can be removed or mitigated.
- **Learn from all operational failures**-Drive improvement through lessons learnt from all operational events and failures. 

## Security
**Focus**- Protect information, systems, and assets while delivering business value through risk assessments and mitigation strategies.

**Key topics**
- Protecting confidentiality and integrity of data
- Identifying and managing who can do what
- Protecting systems
- Establishing controls to detect security events

### Design Principles
- **Implement a strong identity foundation**- Make use of the principle of least privilege. Enforce separation of duties with appropriate authorization. Centralize privilege management. Reduce or eliminate the use of long-term credentials.
- **Enable traceability**- Monitor, alert, and audit actions and changes to your environment in real time. Integrate logs and metrics to automatically take action.
- **Apply security at all layers**- Apply defense in depth and apply security controls to all layers of your architecture.
- **Automate security best practices**- Automate security mechanisms to improve your ability to securely scale more rapidly and cost-effectively.
- **Protect data in transit and at rest**- Classify your data into sensitivity levels and use mechanisms such as tokenization, encryption, and access control.
- **Keep people away from data**- Create mechanisms and tools to reduce or eliminate direct data access.
- **Prepare for security events**- Run incident response management simulations and use automation tools to increase your detection, investigation, and recovery speed.

## Reliability Pillar
**Focus**- Ensure a workload performs its intended functionality correctly and consistently when it's expected to. 

**Key topics**
- Recovery planning
- Handling change
- Designing distributed systems

### Design principles
- **Stop guessing capacity**- Monitor demand and system usage, and automate the addition or removal of resources.
- **Manage change in automation**- Use automation to make changes to infrastructure.
- **Scale horizontally to increase aggregate workload availability**- Replace one large resource with multiple smaller resources and distribute requests across these resources.
- **Automatically recover from failure**- Monitor systems for key performance indicators and configure your systems to trigger an automated recovery in case of a breach.
- **Test recovery procedures**- Test how your systems fail and validate your recovery procedures.

## Performance Efficiency pillar
**Focus**- Use IT and computing resources efficiently to meet system requirements and to maintain that efficiency as demand changes.

**Key topics**
- Selecting the right resource types and sizes based on workload requirements
- Monitoring performance
- Making informed decisions to maintain efficiency as business needs evolve.

### Design Principles
- **Go global in minutes**- Deploy systems in multiple regions to reduce latency and enhance customer experience at minimal cost.
- **Experiment more often**- Perform comparative testing of different types of service configurations.
- **Use serverless architectures**- Serverless architectures remove the operational burden of running and maintaining servers.
- **Democratize advanced technologies**- Consume technologies as a service. This enables teams to focus on product development instead of resource provisioning and management.
- **Consider mechanical sympathy**- Use the technology approach that aligns best to what you are trying to achieve.

## Cost optimization pillar
**Focus**- Avoid unnecessary costs

**Key topics**
- Understanding and controlling where money is being spent
- Selecting the most appropriate and right number of resource types
- Analysing spending over time
- Scaling to meet business needs without overspending

### Design principles
- **Implement cloud financial management**- Build capability through knowledge building, programs, resources, and processes to become a cost-efficient organization.
- **Adopt a consumption model**- Pay only for the computing resources that you require.
- **Measure overall efficiency**- Measure the business output of the workload and costs that are associated with delivering it. Use this measure to know the gains that you make from increasing output and reducing costs.
- **Stop spending money on undifferentiated heavy lifting**- Focus on your customers and business projects instead of the IT infrastructure such as racking, stacking, and powering services.
- **Analyse and attribute spending**-