Search for Well Architected Advice
Understand the available compute configuration and features
Understanding the available configuration options and features for your compute service is pivotal to provisioning the right amount of resources. This knowledge ensures that your workload can effectively handle varying loads, ultimately optimizing performance efficiency and user experience.
Best Practices
Evaluate Compute Options Thoroughly
- Analyze the compute requirements of your application, considering the workload types (e.g., batch processing, real-time processing).
- Investigate various compute services offered by AWS (e.g., EC2, Lambda, Fargate) to match your performance needs.
- Utilize AWS Compute Optimizer to receive recommendations for optimal instance types based on historical usage data.
Leverage Auto Scaling
- Implement Auto Scaling to dynamically adjust capacity based on traffic patterns, ensuring your application remains performant under varying loads.
- Set appropriate scaling policies based on metrics such as CPU utilization, request count, or custom CloudWatch metrics to optimize resource usage.
- Regularly review and adjust scaling thresholds and policies to respond to changing workload patterns.
Monitor and Optimize Performance
- Use AWS CloudWatch to monitor performance metrics and identify bottlenecks or resource inefficiencies in real-time.
- Conduct load testing and performance testing to validate the compute choices and configurations under expected workload conditions.
- Consider using AWS X-Ray to analyze and debug distributed applications, helping you understand how different components interact and optimize them accordingly.
Engage in Continuous Review and Iteration
- Regularly assess your compute choices as application requirements evolve, particularly after major updates or changes in user traffic patterns.
- Involve key stakeholders in periodic reviews to align business needs with technical capabilities, ensuring the compute architecture remains efficient.
- Stay informed about new AWS offerings and features that may enhance performance, and evaluate them for potential integration into your architecture.
Questions to ask your team
- Have you evaluated the specific compute requirements of your application and workload patterns?
- Do you regularly review the performance metrics of your compute resources?
- Are you familiar with the different configurations and capacity options for the compute services you are using?
- Have you tested the performance of your application with various compute instance types or sizes to determine the most efficient option?
- Do you assess the cost-versus-performance trade-offs when selecting compute resources for your workload?
- Are you utilizing auto-scaling features to adjust the number of instances based on current demand?
- Have you considered serverless options where applicable to optimize resource usage and performance?
- Do you have a clear understanding of how instance types and configurations affect your application’s performance characteristics?
Who should be doing this?
Cloud Architect
- Evaluate the workload requirements to determine appropriate compute resources.
- Analyze different compute services and configurations available in AWS.
- Design architectures that optimize performance based on usage patterns.
- Collaborate with developers to understand application design impacts on performance.
- Monitor resource utilization and performance metrics to identify inefficiencies.
- Recommend changes to improve performance efficiency as needed.
DevOps Engineer
- Implement infrastructure as code (IaC) to provision the required compute resources.
- Continuously monitor performance of the deployed applications and compute resources.
- Automate scaling and resource allocation based on demand and performance metrics.
- Ensure best practices are followed in configuring compute resources.
- Collaborate with the Cloud Architect to refine resource provisioning strategies.
Application Developer
- Understand application performance requirements and communicate them effectively.
- Optimize application code and design to leverage the selected compute resources.
- Work with the architecture team to align application design with compute choices.
- Test applications for performance, identifying bottlenecks related to compute resource usage.
What evidence shows this is happening in your organization?
- Compute Resources Configuration Guide: A comprehensive guide outlining the various compute resource configurations available in AWS, including EC2 instance types, Auto Scaling options, and serverless architecture choices. This guide helps teams understand how to select the optimal compute resources based on workload requirements.
- Performance Efficiency Checklist: A checklist to evaluate different compute resource options and their features for various applications. This tool assists architects in ensuring they have considered all necessary configurations and features to enhance performance efficiency.
- Compute Resource Selection Matrix: A matrix that categorizes different compute services based on workload characteristics and usage patterns. This matrix provides visual guidance on selecting the most efficient compute resource for specific application needs.
- Performance Optimization Playbook: A playbook detailing strategies for optimizing performance efficiency in workloads by selecting the right compute resources. It includes best practices, configuration tips, and case studies that illustrate effective resource utilization.
- AWS Compute Services Dashboard: An interactive dashboard that displays real-time metrics on the performance of various AWS compute services being utilized by the organization. This tool allows teams to monitor efficiency and make data-driven decisions for resource adjustments.
Cloud Services
AWS
- Amazon EC2: Provides resizable compute capacity in the cloud, allowing you to select from a variety of instance types and sizes based on your workload requirements.
- AWS Lambda: Enables you to run code in response to events without provisioning or managing servers, allowing for efficient scaling based on demand.
- Amazon ECS: A fully managed container orchestration service that allows you to deploy and manage containerized applications with the ability to optimize resource utilization.
Azure
- Azure Virtual Machines: Provides on-demand scalable computing resources with various VM sizes and configurations to meet different application needs.
- Azure Functions: A serverless compute service that automatically scales to meet demand, allowing you to run event-driven code without managing infrastructure.
- Azure Kubernetes Service (AKS): Simplifies the deployment, management, and scaling of containerized applications using Kubernetes, optimizing resource efficiency.
Google Cloud Platform
- Google Compute Engine: Offers scalable and flexible virtual machine instances that provide various machine types to optimize performance for different workloads.
- Google Cloud Functions: A lightweight, serverless compute service that automatically scales in response to incoming requests, optimizing resource allocation.
- Google Kubernetes Engine (GKE): A managed environment for deploying containerized applications, offering automated scaling and optimized resource management.
Question: How do you select and use compute resources in your workload?
Pillar: Performance Efficiency (Code: PERF)