In the documentation for App Engine it says:
Meeting your latency, availability, or durability requirements are
primary factors for selecting the region where your apps are run.
You cannot change an app's region after you set it.
In App Engine Standard Environment (with automatic scaling), what should I do if my application starts getting a lot of requests from a region far away from mine? For example if my region is us-east1 but I get a lot of requests from asia?
For some reason I thought that App Engine would spin up new instances in the region the request is coming from.
If wanting to build a globally accessible and fast app, this seems like a big limitation to me. Is GAE standard environment a bad choice then?
For the most part, Google App Engine is designed for small, simple and easy to deploy server instances.
If you need global load balancing and auto scaling, then you will need to select and configure the services yourself. Google's load balancer supports global geolocation based load balancing. You can define, in advance, which regions it will load balance to. Combined with Google Compute Engine and Instance Groups, you can define the global characteristics of your site.
The tradeoff for you is how much effort do you want to spend in planning, deploying and managing your setup. Google App Engine makes this easy, but you are limited in some options. Google Compute Engine takes more effort, but you have a larger set of options to chose from and manage.
Start with some research on Google's Load Balancer to better understand the options available to you.
GOOGLE CLOUD LOAD BALANCING
Related
Our project was running in GCP compute engine. For scaling purpose, it is moved to app engine. We had rabbitmq implemented for push messages and chatbots in compute engine. In app engine it is not feasible to implement rabbitmq. So I was going through alternate options. There I found cloud task option. But I have doubts in certain areas even after reading their documentation
In my understanding, we need an app engine instance for cloud tasks. In that case, can I implement it in same project itself as a different service? Will this affect the performance of the existing project?
Is there any better solution than cloud tasks in this case?
You can implement additional services under your app in the App Engine as shown in this diagram.
By default, App Engine scales your app to match the load. Your apps will scale up the number of instances that are running to provide consistent performance, or scale down to minimize idle instances and reduces costs.
You can consider running a RabbitMQ Cluster on Google Kubernetes Engine. You can find more information in the following documentation: rabbitmq.
I have many websites and also websites made by clients which I would like to optimize. I am currently using different CDN providers but I would like to simplify my workflow and hopefully also lower the costs.
I would like to have a CDN with a Pull Zone, and that CDN would also optimize the images (while not modifying the other static resources).
Ideally, I would also have access to statistics for each Pull Zone (since I would like to charge my clients for this service instead of guessing).
What are the different ways to do this with the Google Cloud? Is there a way to do this only using Google Functions, CDN, and Google Storage? Of course, I guess that having a little NodeJS app running to optimize the images would be needed as well. I just wonder about the general architecture and if it is even possible (I know it is with Azure and AWS but I am already running a few things on the Google Cloud).
Thanks a lot :)
In GCP a pull zone can be created by associating a HTTP(S) Load Balancer to a Cloud Storage Bucket and enabling Cloud CDN.
Having a different bucket for every client will break down the logs on your project, but not the billing for it.
To be able to separate billing you can always export the logs to a BigQuery and use it to break down the billing costs per client based on their use.
Regarding the optimization of the images, Google CDN will not perform any operation, neither GCS Bucket.
The only operation available in this direction is when using and serving GZip-compressed files.
I suggest you to dedicate one Instance to be able to prepare the images before storing or to add/replace the optimized versions of the images already inside the bucket.
Question:
Is there a way to Specify Zone for Google Cloud App Engine Flexible Environment to reside in? If not, what are the alternatives?
Context:
I'm having a setup where I use App Engine to write and reads to Bigtable. However I noticed a performance decrease, and during the debugging, I found a documentation from Google stating:
There are issues with the network connection. Network issues can reduce throughput and cause reads and writes to take longer than usual. In particular, you'll see issues if your clients are not running in the same zone as your Cloud Bigtable cluster.
In my case, my client is in a different region, by moving it to the same region had a huge increase in performance. However the performance issue still exist, and the recommendation from the documentation is to put client in the same zone as Bigtable.
I also considered using Container engine or Compute Engine where it is easier to specify the zone, but I want stay with App Engine for its autoscale functionality and managed services.
App Engine is a regional service:
App Engine is regional, which means the infrastructure that runs your
apps is located in a specific region and is managed by Google to be
redundantly available across all the zones within that region.
Taken from here.
You could indeed use GKE or GCE, while you're correct that these are not managed services like App Engine is, they do both support autoscaling.
In Google app engine, what is the benefits of using modules instead separate applications?
For example If am already having an application named "Example" for my example.com and now I need new blog feature for blog.example.com.
Now Which is better? New module named "blog" in "Example" application OR New application named "Example Blog" like that?
And Note I concern about Google's Free Quota for App Engine too. If I use separate applications I can get Free Quotas for each Individual application. But If I used modules I should manage both example.com and blog.example.com in the same Free Quota usage.
So which option is best on Price Comparison and which is best in Performance
Modules are operates under same AppId, that mean that they will:
share same Datastore for data
same Task Queue for interoperability
same configuration for other Google Cloud services (BigQuery, Storage, etc)
There is not difference in Performance, separate apps or separate modules of same app could have as much resources as they need.
As about price, then two apps could be little bit cheaper that two modules, because of Free Quota. But I don't think there is a significant difference for most apps.
I've created a social networking website with the following:
FrontEnd: Java for web site and hybrid app for mobile.
Web Service: Java web service which returns JSON object.
BackEnd: Neo4j(nosql, graph based database).
I've decided to host this application in any cloud server. After all research I've decided to go with google compute engine. I'm expecting to receive 10 million concurrent users. Since this is a social networking website, the user will upload photos, Like, comments, blogs, chat and etc. My region is going to be Asia/Pacific. Google does provide pricing calculator. Please find the link below:
Click Here for Compute Engine pricing calculator
However I do not know what configuration is required to handing these much of traffic. Please if any one of you have used google compute engine, please help me in selecting the right Servers, Persistent Disk, Load Balancing and GCE Network Bandwidth in Compute Engine Section from the above link. So that I can estimate the cost I need to spend per month.
Thanks for your help in advance.
Nobody can estimate the cost but you. We do not know how well the application was developped and how you use your resources.
Deploy your application on the Google Cloud, build a performance test plan (see tools like JMeter, LoadRunner etc) and test your different assumptions (type of VM, type of disk).
Use monitoring tools (Google Compute Engine now comes with one) to measure anything you need to know (bandwidth, CPU usage and whatnot).This will allow you to estimate the cost.
That way, you will know how much each option costs and will be able to make your own informed decision.