Google Cloud Platform large architecture solutions?

64 views
Skip to first unread message

Ridha El Bekri

unread,
Dec 26, 2018, 8:42:37 AM12/26/18
to Google App Engine
Hi everyone,

I'm wondering about architectural solutions for very large, world wide, backend services.

I've worked on POC projects using different Google Cloud Tech solutions :

  • Google App Engine (GAE) standard environment
  • GAE flex environment
  • Google Container Engine (GKE) a kubernetes cluster of Flask nodes + Google Cloud SQL

The goal is to have a backend service which is pretty much "fast to answer" [we are talking about a video game backend] no matter where the request comes from in the world.

My first thoughts were about data-centers and their location. As far as I can tell, a google cloud project and the resources used for a solution are Region, and or Zone, relative. Meaning that having an just an appengine backend defined in us-central1 data-center is not the best solution to serve millions of users of an online video game.

My question, to be more specific, is to know if there is any "standard" optimized how to setup things with a precise tech choices ?

What I'm thinking of, with what I know from Google Cloud Platform, would be (in case we go for the appengine standard environment) to have a project per region (picking 4 of 5 relevant regions for the world) and to "proxy" client side or server side to each region. The project will be "simply" cloned from a main region to another one. The downside of this solution is of course to end up with a big amount of maintenance operations to go with, not talking about monitoring that would probably become a mess as well. What about the Database ? It will be a datastore per region -> how would players interact with each other ? maintain some sort of replica of each region in each region ??

I'm feeling like I'm missing a keypoint somewhere but at the same time I m telling my self that it's probably ran somehow this way with tons of maintenance tools for automation and a **** load of devOps/operators just to make sure everything is okey everywhere.

Maybe there is an article and/or a book that I should be reading ?

Anyway, thank you in advance for your help and contribution.

Omair (Cloud Platform Support)

unread,
Dec 26, 2018, 3:15:43 PM12/26/18
to Google App Engine

Hi Ridha,


Google App Engine is a regional service[1] which can not be deployed cross-region unless you create multiple projects in multiple regions and clone your apps explicitly to each project. Like App Engine, Cloud SQL is also a regional service which can be configured for high availability in a single region [2].


As per the documentation at [3], Cloud Datastore and Cloud Spanner can be deployed across multiple regions for redundancy. See the article Building Scalable Web Applications with Cloud Datastore [4] for more details. The multi-region locations that are available can be found at [5]. However, this will not synchronize the Datastores in your multiple projects. For this you will have to use Remote API[6].


You can also create cross region load balancers to serve traffic to your app. The article at [7] gives an example of how to do this using four Compute Engine instances.


There is a similar question on StackOverflow [8] that you might find helpful.


I hope this helps.



[1] https://cloud.google.com/appengine/docs/locations

[2] https://cloud.google.com/sql/docs/mysql/high-availability

[3] https://cloud.google.com/docs/geography-and-regions#multi-regional_resources

[4] https://cloud.google.com/solutions/building-scalable-web-apps-with-cloud-datastore

[5] https://cloud.google.com/datastore/docs/locations#location-mr

[6] https://cloud.google.com/appengine/docs/standard/python/tools/remoteapi

[7] https://cloud.google.com/load-balancing/docs/https/cross-region-example#sendtraffic

[8] https://stackoverflow.com/a/41368308/10553701



Henry Pan

unread,
Dec 26, 2018, 3:34:31 PM12/26/18
to google-a...@googlegroups.com, henr...@hotmail.com
Saluting Omair from Seattle,

Enjoy your cool answer:>)

Thanks


Henry Pan

DevOps Architect | Dito

henr...@ditoweb.com | PHONE: (425) 802-3975

Dito Logo.png




--
You received this message because you are subscribed to the Google Groups "Google App Engine" group.
To unsubscribe from this group and stop receiving emails from it, send an email to google-appengi...@googlegroups.com.
To post to this group, send email to google-a...@googlegroups.com.
Visit this group at https://groups.google.com/group/google-appengine.
To view this discussion on the web visit https://groups.google.com/d/msgid/google-appengine/a9581001-47c4-4d2f-ba05-cdaec695062e%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Ridha El Bekri

unread,
Dec 27, 2018, 5:39:49 AM12/27/18
to Google App Engine
Thank you Omair for your answer.

Its pretty much what I was already thinking about. Thank you also for the links, I already went through some of them before writing here and so It comforts me in the idea that I m going in the right way.
Reply all
Reply to author
Forward
0 new messages