I am looking to create a multi-geographic infrastructure. Essentially, I need to serve a website to US, EU and AU users.
The challenge is that this website is ecommerce in nature, so needs read & write access on the database.
To my knowledge there are a number of options:
Have a single RDS instance (multi AZ) in a central data centre (probably EU). Have multiple EC2 in each territory, which connect to the RDS.
Have a complete environment in each territory (separate RDS and EC2, not connected to the others in any way). Live with the fact that user's can't share logins/data across territories.
Have EC2s running MySQL in each territory. Build something into the application layer to handle syncing between the databases as writes happen.
Have a central RDS that houses all data. Have child RDS instances in each territory that houses all read-only data (product data primarily). Build something into the application layer so that product-specific queries happen in the local database, but writes happen in the central RDS instance.
At the moment option #1 seems the most sensible, but I'm unsure of the actual latency between data centres, and I'm unable to source any reliable information on it.
No. 2 is limiting, but a possibility.
No. 3 is full of potential issues with syncing not working as expected.
No. 4 is possible but will require substantial refactoring of the application layer, which could in itself lead to issues.
What is the best approach here? Am I missing options? Is the latency between data centres 'acceptable'?