Skip to content

Geolocation and geo-based server-selection. #36

Description

@jvilhuber

Requirement: Need to be able to send an EU citizen to an EU servers, and US citizens to US servers.

One idea is to use geolocation DNS lookups on CNAME, which amazon supports:

https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/resource-record-sets-values-geo.html

Location
When you configure Route 53 to respond to DNS queries based on the location that the queries originated from, select the continent or country for which you want Route 53 to respond with the settings in this record. If you want Route 53 to respond to DNS queries for individual states in the United States, select United States from the Location list, and then select the state from the Sublocation list.

(see also https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/routing-policy.html#routing-policy-geo)

The idea is: Client does a DNS CNAME lookup for, for example, morphic.org (or whatever we want to call the server URL). in the US, "CNAME morpic.org" would return "us.morphic.org" and in the EU it would return "eu.morphic.org". The client then saves this, and makes all subsequent API calls to that server.

Note:

  1. all API calls for the duration of this user-installation will go to the saved server. if the user is in the US when they first register, they will use the US server forever, unless they unregister and re-register in the EU (for example).
  2. If the user reformats the hard-drive, and re-installs, but is now in the EU, the CNAME lookup would now point to the EU server, but the EU server would not know their username/password nor their settings (those are on the US server). This would be confusing to the user, so we'd need some solution to that problem, perhaps. Perhaps the user could then be prompted "Where were you when you first signed up" or something.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions