Skip to content

Commit ef97ad6

Browse files
milldrclaude
andauthored
docs: restructure Service Availability section (#869)
Co-authored-by: Claude Haiku 4.5 <noreply@anthropic.com>
1 parent c9738f2 commit ef97ad6

1 file changed

Lines changed: 52 additions & 25 deletions

File tree

docs/layers/network/design-decisions/decide-on-primary-aws-region.mdx

Lines changed: 52 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,16 @@ tags:
99

1010
import Intro from "@site/src/components/Intro";
1111
import KeyPoints from "@site/src/components/KeyPoints";
12+
import Steps from "@site/src/components/Steps";
1213

1314
While the company might operate in multiple regions, one region should be selected as the primary region. There are
1415
certain resources that will not be geographically distributed and these should be provisioned in this default region.
1516

1617
When starting from scratch with a new AWS account, it's a good time to revisit decisions that might have been made
1718
decades ago. There are many new AWS regions that might be better suited for the business.
1819

20+
## Considerations
21+
1922
### Customer Proximity
2023

2124
One good option is picking a default region that is closest to the where the majority of end-users reside.
@@ -34,47 +37,53 @@ over `us-east-1` and the latencies between these regions is very minimal.
3437

3538
### High Availability / Availability Zones
3639

37-
Not all AWS regions support the same number of availability zones.
38-
[Many regions only offer (2) availability zones](https://howto.lintel.in/list-of-aws-regions-and-availability-zones/)
39-
when a minimum of (3) is recommended when operating kubernetes to avoid "split-brain" problems.
40+
Not all AWS regions support the same number of availability zones. A minimum of 3 AZs is recommended when operating
41+
Kubernetes to avoid "split-brain" problems. Most AWS regions now have at least 3 AZs, but there are exceptions:
4042

41-
### Cost
43+
- `us-west-1` (US West, N. California) — newer accounts only have access to 2 AZs
44+
- Some opt-in regions may have fewer AZs
4245

43-
Not all regions cost the same to operate.
46+
See the [AWS Regions documentation](https://docs.aws.amazon.com/global-infrastructure/latest/regions/aws-regions.html)
47+
for the current AZ count per region.
4448

4549
### Service Availability
4650

47-
Not all regions offer the full suite of AWS services or receive new services at the same rate as others. Other times,
48-
certain regions receive platform infrastructure updates slower than others. Also, recently AWS launched
51+
Not all regions offer the full suite of AWS services or receive new services at the same rate as others. Some regions
52+
receive platform infrastructure updates slower than others. AWS also offers
4953
[Local Zones](https://aws.amazon.com/about-aws/global-infrastructure/regions_az/#AWS_Local_Zones) (e.g.
5054
`us-west-2-lax-1a`) which operate a subset of AWS services.
5155

5256
See [AWS Regional Services List](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/) for
5357
a complete breakdown of service availability by region.
5458

55-
### Reference Architecture Component Availability
59+
Several services used in the reference architecture are only available in a subset of AWS regions:
5660

57-
Beyond standard AWS services, certain components in the reference architecture have their own regional constraints that
58-
should factor into your primary region decision.
61+
<Steps>
62+
1. **[AWS App Runner](https://aws.amazon.com/apprunner/)** is only available in these regions:
63+
`us-east-1`, `us-east-2`, `us-west-2`,
64+
`eu-central-1`, `eu-west-1`, `eu-west-2`, `eu-west-3`,
65+
`ap-south-1`, `ap-southeast-1`, `ap-southeast-2`, `ap-northeast-1`.
66+
We use App Runner for [RunsOn](/layers/github-actions/runs-on/), our recommended solution for self-hosted GitHub runners.
5967

60-
#### RunsOn (Self-Hosted GitHub Runners)
68+
1. **[Amazon Managed Grafana](https://aws.amazon.com/grafana/)** is only available in these regions:
69+
`us-east-1`, `us-east-2`, `us-west-2`,
70+
`eu-central-1`, `eu-west-1`, `eu-west-2`,
71+
`ap-northeast-1`, `ap-northeast-2`, `ap-southeast-1`, `ap-southeast-2`.
72+
We use Managed Grafana for centralized monitoring dashboards in the
73+
[Grafana monitoring stack](/layers/monitoring/).
74+
</Steps>
6175

62-
[RunsOn](/layers/github-actions/runs-on/) is our recommended solution for self-hosted GitHub runners. It relies on
63-
[AWS App Runner](https://aws.amazon.com/apprunner/), which is only available in a subset of AWS regions:
76+
#### Deploying in Unsupported Regions
6477

65-
- `us-east-1`, `us-east-2`, `us-west-2`
66-
- `eu-central-1`, `eu-west-1`, `eu-west-2`, `eu-west-3`
67-
- `ap-south-1`, `ap-southeast-1`, `ap-southeast-2`, `ap-northeast-1`
78+
If your primary region doesn't support one of these services, you can still use that region by deploying the service
79+
in a supported region and connecting it back. Depending on the service, this may require connecting the alternate region
80+
via [Transit Gateway](/components/library/aws/tgw/hub/) with a cross-region peering connection, deploying cross-region
81+
IAM roles, or a combination of both. These workarounds add complexity and cost (e.g. Transit Gateway cross-region
82+
data transfer adds approximately **$80/month**).
6883

69-
Notably, **`us-west-1` does not support App Runner**, and therefore RunsOn cannot be deployed there directly.
70-
71-
If your primary region doesn't support App Runner but you still want to use that region, you'll need to deploy RunsOn
72-
in a supported region and connect it to your primary region. We recommend using Transit Gateway with a cross-region
73-
peering connection for this, though other connectivity options exist. This adds approximately **$80/month** in Transit
74-
Gateway cross-region data transfer costs.
84+
### Cost
7585

76-
For most deployments, we recommend choosing a primary region that supports App Runner to avoid this additional
77-
complexity and cost.
86+
Not all regions cost the same to operate.
7887

7988
### Instance Types
8089

@@ -85,7 +94,25 @@ Not all instance types are available in all regions
8594
Latency between v1 infrastructure and v2 infrastructure could be a factor. See
8695
[cloudping.co/grid](https://www.cloudping.co/grid) for more information.
8796

88-
### References
97+
## Recommendation
98+
99+
Taking all of the above into consideration, we recommend choosing a primary region that supports the services you need,
100+
has at least 3 availability zones, and is not `us-east-1` (due to its history of service interruptions). The regions
101+
that support both App Runner and Managed Grafana while meeting these criteria are:
102+
103+
- `us-east-2` (US East, Ohio)
104+
- `us-west-2` (US West, Oregon)
105+
- `eu-central-1` (Europe, Frankfurt)
106+
- `eu-west-1` (Europe, Ireland)
107+
- `eu-west-2` (Europe, London)
108+
- `ap-southeast-1` (Asia Pacific, Singapore)
109+
- `ap-southeast-2` (Asia Pacific, Sydney)
110+
- `ap-northeast-1` (Asia Pacific, Tokyo)
111+
112+
For US-based organizations, `us-east-2` and `us-west-2` are both solid choices. They avoid the stability concerns of
113+
`us-east-1`, offer low latency to other US regions, and support the full reference architecture without workarounds.
114+
115+
## References
89116

90117
- [https://www.geekwire.com/2017/analysis-rethinking-cloud-architecture-outage-amazon-web-services/](https://www.geekwire.com/2017/analysis-rethinking-cloud-architecture-outage-amazon-web-services/)
91118
- [https://www.concurrencylabs.com/blog/choose-your-aws-region-wisely/](https://www.concurrencylabs.com/blog/choose-your-aws-region-wisely/)

0 commit comments

Comments
 (0)