Our svn masters (and other verion control systems) are in a different region from our database masters. We can pretty easily put the frontend and the daemons for phabricator in either (or both) of these regions, but the various different combinations we've tried all result in some sort of problem.
If we put the frontend and daemons in the same region as svn (away from the db master), we get timeouts due to slow cross-country queries. If the frontend and daemons are in the same region as the db master (and phabricator is configured to use the svn master), diffusion is unbearably slow (multiple-second page loads) due to cross-country svn reads. If we configure phabricator to use the svn replica in the same region as the db, then detection of commits lags by the replication time (about 5 min). (This is something users have complained quite a bit about.) We also tried a dns hack where phabricator was configured to use an svn url that resolved to the replica on the frontends (to avoid the ui lag) and resolved to the master on the daemons (to discover commits quickly), but this results in red error boxes in diffusion when trying to browse because you're trying to browse commits that don't yet exist on the svn replica.
It appears that any solution to solve all of these problems will involve making phabricator aware to some extent of a setup that is across multiple regions. This could be having it use a db slave for reads and only go to the db on writes, use an svn master for closing revisions and a slave for reading in diffusion (and being aware of the lag), using a post-commit svn hook to close revisions, or something else.
Does anyone have an opinion on the best way to go about solving this?