Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Should one use google cloud app engine or compute engine or container engine for a large Drupal website migration?

I am aware that Google cloud has an IaaS offering which allows point click installation of drupal sites using Bitnami. But I am wondering how this compares with using App Engine or container engine (instead of IaaS).

Per OP-- Large is defined as: "upto 1 million daily users visits to the website and growing"

like image 386
naveen k Avatar asked Jun 21 '17 11:06

naveen k


1 Answers

App Engine, Kubernetes Engine (formerly Container Engine), and Compute Engine are tools that solve different problems.

From what you have shared about your use case, you have the following requirements:

  1. Migrate a large (single) Drupal website
  2. Ensure that it scales beyond 1 million user visits per day

All 3 products will support these requirements.

The important factors that you will need to consider when evaluating these products are:

  1. Cost
  2. Maintenance Effort

When evaluating the products against these two factors in the context of your requirements, you might reach a clearer winner.

For the cost ratings below, it is a best guess using you high level requirements.

Google App Engine - allows you to easily deploy, scale, and update your application. It takes care of all of the "system administration" tasks for you. Rolling out updates to deployed services is also done quite easily via the command line.

Cost is "medium" when compared to running a small single Compute Engine VM but App Engine only provisions what it believes you need to serve the traffic you are receiving, as Drupal requires a DB (can be managed by Google Cloud SQL), this will need to be provisioned separately and will add to the total cost.

Maintenance Effort is "low" because App Engine handles all of the operations tasks.

Google Kubernetes Engine - is a managed Kubernetes providing "Container Infrastructure as a Service". Great for when you have various sized services and you want to bin pack and utilize a cluster of machines for different services. Given you are running a single sized application - a Drupal website, you won't really be taking advantage of this. Scaling and administration is also a little bit more complicated as you will need to scale your Pod as well as the Kubernetes Engine cluster.

Cost is "low" as Kubernetes Engine zonal masters are free and you are only charged for the compute resources of the nodes.

Maintenance Effort is "high" as you will have to configure scaling of your cluster and pods. Operate the Kubernetes Engine cluster and manage your application through the Kubernetes API. A lot more moving parts, when compared to App Engine.

Google Compute Engine - as mentioned, there are Cloud Launcher options to run Drupal. However, once the instance is deployed, you will need to take care of updating. Also, that particular Cloud Launcher version deploys to a single VM. You will probably want to setup Load Balancing, a Managed Instance Group, and Cloud SQL to ensure it is highly available and will scale.

Cost is "low" as you could run your Drupal application and DB on a single small VM, however it may not scale.

Maintenance Effort is "high" as at a minimum, you will have to apply OS patches. To have High Availability and scaling you will have to configure a managed instance group, load balancer, and a startup script/VM image.

In conclusion, if you are an experienced System Administrator, you might prefer to deploy to Compute Engine and manage the system yourself for a potentially lower cost.

If you don't want any operational overhead, App Engine is the way to go.

Kubernetes Engine is too sophisticated a tool for the problem you are solving.

like image 144
Henry Lawson Avatar answered Oct 02 '22 09:10

Henry Lawson