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)
-
Understand the available services and resources: Learn about and understand the wide range of services and resources
available in the cloud. Identify the relevant services and configuration options for
your workload, and understand how to achieve optimal performance.
-
Define a process for architectural choices: Use internal experience and knowledge of the cloud, or external resources
such as published use cases, relevant documentation, or whitepapers to define a process
to choose resources and services. You should define a process that encourages experimentation
and benchmarking with the services that could be used in your workload.
-
Factor cost requirements into decisions : Workloads often have cost requirements for operation. Use internal cost controls to select resource types and sizes based on predicted resource need.
-
Use policies or reference architectures: Maximize performance and efficiency by evaluating internal policies and existing reference architectures and using your analysis to select services and configurations for your workload.
-
Use guidance from your cloud provider or an appropriate partner: Use cloud company resources, such as solutions architects, professional
services, or an appropriate partner to guide your decisions. These resources can help
review and improve your architecture for optimal performance.
-
Benchmark existing workloads: Benchmark the performance of an existing workload to understand how it performs on the cloud. Use the data collected from benchmarks
to drive architectural decisions.
-
Load test your workload: Deploy your latest workload architecture on the cloud using different resource types and sizes. Monitor the deployment to
capture performance metrics that identify bottlenecks or excess capacity. Use this performance information to design or improve your architecture and resource selection.
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.