This is an earlier version of the AWS Well-Architected Framework. For the latest version, see AWS Well-Architected Framework.
SUS02-BP04 Optimize geographic placement of workloads for user locations
Analyze network access patterns to identify where your customers are connecting from geographically. Select Regions and services that reduce the distance network traffic must travel to decrease the total network resources required to support your workload.
Common anti-patterns:
-
You select the workload's Region based on your own location.
Benefits of establishing this best practice: Placing a workload close to its customers provides the lowest latency while decreasing data movement across the network and lowering environmental impact.
Level of risk exposed if this best practice is not established: Medium
Implementation guidance
-
Select the Regions for your workload deployment based on the following key elements:
-
Your Sustainability goal: as explained in Region selection.
-
Where your data is located: For data-heavy applications (such as big data and machine learning), application code should execute as close to the data as possible.
-
Where your users are located: For user-facing applications, choose a Region close to your workload’s customer base.
-
Other constraints: Consider constraints such as security and compliance as explained in What to Consider when Selecting a Region for your Workloads
.
-
-
Use AWS Local Zones
to run workloads like video rendering and graphics-intensive virtual desktop applications. Local Zones allow you to benefit from having compute and storage resources closer to end users. -
Use local caching or AWS Caching Solutions
for frequently used resources to improve performance, reduce data movement, and lower environmental impact. Service When to use Use to cache static content such as images, scripts, and videos, as well as dynamic content such as API responses or web applications.
Use to cache content for web applications.
Use to add in-memory acceleration to your DynamoDB tables.
-
Use services that can help you run code closer to users of your workload:
Service When to use Use for compute-heavy operations that are executed when objects are not in the cache.
Use for simple use cases like HTTP(s) request or response manipulations that can be executed by short-lived functions.
Use to run local compute, messaging, and data caching for connected devices.
-
Use connection pooling to enable connection reuse, and reduce required resources.
-
Use distributed data stores that don’t rely on persistent connections and synchronous updates for consistency to serve regional populations.
-
Replace pre-provisioned static network capacity with shared dynamic capacity, and share the sustainability impact of network capacity with other subscribers.
Resources
Related documents:
Related videos:
Related examples: