1

I have edited this post to be more succinct (before someone votes it for closure on that basis.)

I am, however, leaving the original post below, for context.


New form of post:

We currently have externally managed DNS handled (ie: we do not use Route53) and CloudFront with S3 for hosting our SPA.

We also have API Gateway (also with externally managed DNS) providing access to a mock endpoint, DynamoDB and Lambda.

The API Gateway, DynamoDB and Lambda are all hosted in the same region. (One of my S3 buckets is also in that region.)

I would like to design my architecture to reduce latency and improve fail-over as much as possible. My understanding is, in simple terms, that I should be using a design which (a) hosts each resource as close as possible to the user and (b) can fail-over to another region when the region closest to the user becomes unavailable.

My simplistic understanding, at present, is that unless I design my architecture to deploy to specific regions, the resources which are region specific (ie: api gateway, dynamodb, lambda) will become unavailable if that region becomes unavailable.

However, this post and this article appear to say that if I want to have API Gateway deployed to multiple regions and accessible from the same URL, I must use Route53 to manage the closest-to-user addressing.

Is Route53 a requirement in this scenario?

Is single region deployment enough to ensure resilience if services which are deployed via CloudFront if that region becomes unavailable?


Original post:

TL;DR: I want to deploy API Gateway, Dynamo DB and Lambda with high performance and regional failure resilience. Should I rely on AWS CloudFront for as many components as possible or should I deliberately manage regional-specific deployments myself?

I am trying to make as highly available and fault resistant AWS infrastructure deployment as I can...

I have a CloudFront distribution serving S3 content from two buckets, each in a different region. I believe, for the SPA portion, this is enough to allow the SPA to provide as much speed, reliability and up time as I can (I am considering adding more origins to ensure this even further.)

I currently have an API Gateway serving requests to a DynamoDB and a Lambda (also a mock endpoint.) As these resources are deployed to the same, single region I believe this would not be failure-resistant and not provide the best response time. As illustrated in this simple diagram:

enter image description here

My understanding of AWS is that I have the option of deploying the API Gateway, DynamoDB and Lambda to more regions and that this will improve both the response time and reliability.

Given a service disruption in my one deployment region for API Gateway, DynamoDB and Lambda, my concerns for this deployment are:

  1. For DynamoDB should I deploy to multiple regions and use cross-region replication or would a Global Table perform the same function? (Or are these essentially the same thing?)
  2. If I deploy the API Gateway to multiple regions would I need multiple domain names?
  3. This page seems to imply (to me, at least) that deploying API Gateway to multiple regions with failover would require the use of Route 53 (which is not an option for me; We have naming handled externally and I have no control over this.)
  4. If Edge Optimised API Gateway deployments are deployed to Edge servers, why would I consider Regional deployments when intending to improve latency, fail-over and resilience?
Matt W
  • 11,753
  • 25
  • 118
  • 215

0 Answers0