Deploying an Application on Google Cloud: Architecture Design for 24/7 Availability

Designing the Architecture for Deploying an Application on Google Cloud

Question

You need to deploy an application to Google Cloud.

The application receives traffic via TCP and reads and writes data to the filesystem.

The application does not support horizontal scaling.

The application process requires full control over the data on the file system because concurrent access causes corruption.

The business is willing to accept a downtime when an incident occurs, but the application must be available 24/7 to support their business operations.

You need to design the architecture of this application on Google Cloud.

What should you do?

Answers

Explanations

Click on the arrows to vote for the correct answer

A. B. C. D.

D.

https://cloud.google.com/compute/docs/instance-groups

Based on the requirements, the application cannot be horizontally scaled, requires full control over the file system, and can tolerate some downtime but needs to be available 24/7. To design an architecture for this application on Google Cloud, we need to choose the right combination of compute, storage, and load balancing services.

Option A: Use a managed instance group with instances in multiple zones, use Cloud Filestore, and use an HTTP load balancer in front of the instances. Managed instance groups provide a scalable and highly available solution for running identical instances. However, this option is not suitable for the given scenario because the application does not support horizontal scaling. Using Cloud Filestore could provide a scalable and high-performance file storage solution, but it does not meet the requirement of full control over the file system. Additionally, an HTTP load balancer may not be appropriate for TCP traffic.

Option B: Use a managed instance group with instances in multiple zones, use Cloud Filestore, and use a network load balancer in front of the instances. Similar to Option A, using a managed instance group with instances in multiple zones and Cloud Filestore may not be suitable for the requirements of the application. However, a network load balancer is a better fit for TCP traffic than an HTTP load balancer.

Option C: Use an unmanaged instance group with an active and standby instance in different zones, use a regional persistent disk, and use an HTTP load balancer in front of the instances. Using an unmanaged instance group can provide full control over the file system, which is a requirement of the application. Additionally, using a regional persistent disk can provide reliable and durable storage for the application. An HTTP load balancer can be used to distribute the traffic among the active and standby instances. However, this option may not provide the highest availability for the application since there is only one active instance.

Option D: Use an unmanaged instance group with an active and standby instance in different zones, use a regional persistent disk, and use a network load balancer in front of the instances. This option is the best fit for the given requirements. Using an unmanaged instance group provides full control over the file system, and using a regional persistent disk provides reliable and durable storage. A network load balancer is a better fit for TCP traffic than an HTTP load balancer. Using an active and standby instance in different zones provides high availability for the application. In case of an incident or failure, the standby instance can take over quickly without affecting the application's availability.

Therefore, the correct answer is Option D: Use an unmanaged instance group with an active and standby instance in different zones, use a regional persistent disk, and use a network load balancer in front of the instances.