We have a app that is hosted in US and the EU.
For great performance we will host a datastore instance on both locations.
Now is our question how we can replicate the data from the US datastore to the EU datastore?
Or is it no matter where we store the data from technical view?
There is not such thing as multi-location GAE apps (at least not yet). The app's unique location can be selected when the app is created and cannot be changed. See App Engine - How to create project in region us-central and gae app moving to eu-datacenter or re-opening
An important note from Creating a project and application:
Important: Each Cloud Platform project can contain only a single App Engine application and you cannot change the region after you
create the App Engine application.
Now the datastore itself can only exist in a single cloud project, which also maps 1:1 to a location. From Google Cloud Datastore Locations:
When you create a Google Cloud Platform project, you must choose a
location where the project's data is stored. To reduce latency and
increase availability, store your data close to the users and services
that need it. You can create projects in the following locations:
europe-west
— Western Europe
us-central
— Central United States
us-east1
— Eastern United States
asia-northeast1
— Northeastern Asia-Pacific
Both App Engine and Cloud Datastore are listed as products with Multi-Regional Coverage (see https://cloud.google.com/about/locations/). But that coverage is not global, it still remains contained within a region group. And US and EU are in different region groups, so this won't help you. From Multi-regional resources:
The data associated with multi-regional resources is not tied to a
specific region and can be moved between regions and regions can be
added and removed from a region group. For example, buckets in the
European Union location for Google Cloud Storage keep data at-rest
inside the European Union, but at-rest data can be stored in or moved
to any Cloud Storage region within the European Union (subject to
terms of service and service specific terms).
So at best you can have 2 different GAE apps deployed in 2 different regions, eventually from (almost) the same code.
You need to take care of replicating the data across these apps yourself, for example by adding custom/dedicated communication between the apps for that purpose or by using the Remote API (each app acting like a client for the other app's remote API).
Most likely not trivial, especially if the data consistency is important. In such case you might be better off with a single app and some performance penalty for some of your customers, based on their location.