PERF 1: How do you select the best performing architecture?

Often, multiple approaches are required for optimal performance across a workload. Well-architected systems use multiple solutions and features to improve performance.

Resources

Introducing The Amazon Builders’ Library (DOP328)

Best Practices:

Improvement Plan

Understand the available services and resources

  • Inventory your workload software and architecture for related services: Gather an inventory of your workload and decide which category of products to learn more about.Gather an Identify workload components that can be replaced with managed services to increase performance and reduce operational complexity.
  • Define a process for architectural choices

  • Select an architectural approach: Identify the kind of architecture that meets your performance requirements.Identify constraints, such as the media for delivery (desktop, web, mobile, IoT), legacy requirements, and integrations.Identify opportunities for reuse, including refactoring. Consult other teams, architecture diagrams, and resources such as AWS Solution Architects, AWS Reference Architectures, and APN Partners to help you choose an architecture.
  • Define performance requirements: Use the customer experience to identify the most important metrics. For each metric, identify the target, measurement approach, and priority.Define the customer experience. Document the performance experience required by customers, including how customers will judge the performance of the workload.Prioritize experience concerns for critical user stories. Include performance requirements and implement scripted user journeys to ensure that you know how the stories perform against your requirements.
  • Factor cost requirements into decisions

  • Optimize workload components to reduce cost: Right size workload components and enable elasticity to reduce cost and maximize component efficiency.Determine which workload components can be replaced with managed services when appropriate, such as managed databases, in-memory caches, and reverse proxies.
  • Use policies or reference architectures

  • Deploy your workload using existing policies or reference architectures: Integrate the services into your cloud deployment, then use your performance tests to ensure that you can continue to meet your performance requirements.
  • Use guidance from your cloud provider or an appropriate partner

  • Reach out to AWS resources for assistance: AWS Solutions Architects and Professional Services provide guidance for solution implementation.APN Partners provide AWS expertise to help you unlock agility and innovation for your business.
  • Benchmark existing workloads

  • Monitor performance during development: Implement processes that provide visibility into performance as your workload evolves.
  • Integrate into your delivery pipeline: Automatically run load tests in your delivery pipeline. Compare the test results against pre-defined key performance indicators (KPIs) and thresholds to ensure that you continue to meet performance requirements.
  • Test user journeys: Use synthetic or sanitized versions of production data (remove sensitive or identifying information) for load testing. Exercise your entire architecture by using replayed or pre-programmed user journeys through your application at scale.
  • Load test your workload

  • Validate your approach with load testing: Load test a proof-of-concept to find out if you meet your performance requirements. You can use AWS services to run production-scale environments to test your architecture. Because you only pay for the test environment when it is needed, you can carry out full-scale testing at a fraction of the cost of using an on-premises environment. Amazon EC2 testing policy
  • Monitor metrics: Amazon CloudWatch can collect metrics across the resources in your architecture. You can also collect and publish custom metrics to surface business or derived metrics. Use CloudWatch or third-party solutions to set alarms that indicate when thresholds are breached.
  • Test at scale: Load testing uses your actual workload so you can see how your solution performs in a production environment. You can use AWS services to run production-scale environments to test your architecture. Because you only pay for the test environment when it is needed, you can run full-scale testing at a lower cost than using an on-premises environment. Take advantage of the AWS Cloud to test your workload to discover where it fails to scale, or if it scales in a non-linear way. For example, use Spot Instances to generate loads at low cost and discover bottlenecks before they are experienced in production.