By making use of existing features within several AWS serverless services, it is straight forward to create an architecture that is tolerant of regional failures (or smaller scopes) without any significant additional effort. Further, the resulting architecture is self-healing and requires negligible operational maintenance even during a failure event.
In this blog post, CloudPegboard.com founder Ken Robbins will describe a serverless architecture that makes strategic use of CloudFront origin failover, S3 cross-region replication, Route 53 latency routing, and DynamoDB global tables in addition to a lot of other serverless goodness (using API Gateway, Lambda, DynamoDB, and S3).
Making good tool choices and making judicious use of several key features within those tools made it possible for develop a robust and fault tolerant solution while still remaining an extremely lean startup. After living with the architecture for a year now, I remain extremely happy with the result. There has been no infrastructure maintenance effort.
The only major change that I’d make in hindsight is the use of Cognito User Pools. Cognito is not well suited to any sort of active-active or active-passive DR approach – something I have with all other services in the architecture. Likely AWS Directory Service would have been a better choice (not tried, so that’s just a hypothesis).
To view the blog post for the full architecture description (with diagrams) and a discussion of the specific implementation details and gotchas that I’ve documented to hopefully save you the effort of doing the same caveats discovery, click HERE.