I currently have a react web app that is globally distributed via AWS cloudfront.
I want to know how to architect a server and DB so that they are also globally distributed. Bonus for as serverless as possible
My thoughts and knowledge right now are aligned with the following:
1) You should turn your server into a docker image and run it with a container management solution like kubernetes or AWS Fargate. This way it's serverless and you could deploy the cluster to different regions.
2) The DB is the bottleneck. If you pick a relational DB even like Aurora compatible PostgreSQL you have no way to distribute the DB over AWS Regions. Even if you did you cloud only do a read copy. Should I just forget about relational data as globally distributed or should I pick another DB product from AWS?
1.) Use API GW
+ Lambda
deployed to multiple regions (IMHO it is more serverless than opsless Kubernetes/Fargate
, but not all apps are serverless friendly). Use Route 53
with latency routing policy, so user will be routed to the region with the best latency.
2.) Aurora
has also Global
version (only MySQL) - https://aws.amazon.com/rds/aurora/global-database/