Business digitalisation raises a number of opportunities, but also quite a few challenges. To overcome them, organisations are increasingly turning to multi-cloud strategies. This approach involves the use of multiple cloud computing and storage services in a single heterogeneous architecture.
This article explores the benefits of multi-cloud implementations, while demonstrating a multi-cloud application deployment of two Apache web servers: one in Amazon Web Services (AWS) and the other in Microsoft Azure. In this case, the load balancer is Google Cloud Platform (GCP), using an HAProxy service.
Before going any further, here are a few relevant concepts that we must understand:
Implementing a multi-cloud strategy can bring in a lot of advantages, namely:
A multi-cloud strategy cannot be successfully implemented without these key points:
This section outlines the practical steps to set up a multi-cloud deployment using Terraform, an open-source Infrastructure as Code (IaC) software tool. By automating the deployment of multiple servers across different cloud providers, we can demonstrate the robustness of a multi-cloud strategy.
Cloud providers: Amazon Web Services, Google Cloud Platform, and Microsoft Azure.
Resources:
Step 1: Environment setup
Step 2: Coding Infrastructure as Code
Step 3: Deployment
Step 4: Monitoring and management

Below is the AWS Terraform code for the setup of the EC2 to host one Apache Service.



Now, here’s the Azure Terraform code for the setup of the VM to host one Apache Service.



In the image below, we can see the Azure Portal VM details, up and working:

Now, the Apache service on Azure is up and working from the browser side:

The AWS EC2 details are also up and working:

The Apache service on AWS is also working from the browser side:

Below we can see the GCP VM details:


The GCP VM with the HAproxy service is also installed and working:


Below is the Azure Apache service running:

And also, the AWS Apache service working:

Now, we see a request from the browser to the load balancer HAProxy, with AWS Apache returning the status code “200 OK”:

And now a request from the browser to the load balancer HAProxy, with Azure Apache returning the status code “200 OK”:

Here are the statistics from the HAProxy service. The requests are balanced based on the Round-Robin algorithm:

Now, we’re stopping Apache service from Azure VM:

Here’s a request to the load balancer, returning only AWS Apache service without downtime:


Now, stopping Apache service from AWS EC2:

And now, here’s a request to the load balancer, returning “503 Service Unavailable”, because both web services are down:


GitHub repository: https://github.com/danielitogomez/terraform/tree/master/multicloud-web-servers-poc
Now that we’ve seen a practical demonstration of a multi-cloud implementation, here are a few more things to keep in mind.
It is crucial to address several advanced configurations and scalability options that significantly enhance the functionality of multi-cloud deployments:
The PoC outlined in this article primarily focuses on demonstrating the capabilities and benefits of a multi-cloud approach. However, it also highlights the need for several enhancements to optimise the architecture:
Implementing a multi-cloud strategy effectively leverages the unique strengths of various cloud providers, enhancing operational resilience, scalability, and compliance. The considerations outlined above highlight the depth of planning and sophistication that can optimise these deployments.
Organisations must carefully assess their specific needs and integrate appropriate technologies and practices to maximise the benefits of a multi-cloud approach. This practical example offers a comprehensive blueprint for achieving higher availability and performance through a diversified cloud approach. This demonstration is not only a testament to the potential of multi-cloud environments but also a guide to evolving these setups into highly resilient, efficient, and scalable architectures.
Business digitalisation raises a number of opportunities, but also quite a few challenges. To overcome them, organisations are increasingly turning to multi-cloud strategies. This approach involves the use of multiple cloud computing and storage services in a single heterogeneous architecture.
This article explores the benefits of multi-cloud implementations, while demonstrating a multi-cloud application deployment of two Apache web servers: one in Amazon Web Services (AWS) and the other in Microsoft Azure. In this case, the load balancer is Google Cloud Platform (GCP), using an HAProxy service.
Before going any further, here are a few relevant concepts that we must understand:
Implementing a multi-cloud strategy can bring in a lot of advantages, namely:
A multi-cloud strategy cannot be successfully implemented without these key points:
This section outlines the practical steps to set up a multi-cloud deployment using Terraform, an open-source Infrastructure as Code (IaC) software tool. By automating the deployment of multiple servers across different cloud providers, we can demonstrate the robustness of a multi-cloud strategy.
Cloud providers: Amazon Web Services, Google Cloud Platform, and Microsoft Azure.
Resources:
Step 1: Environment setup
Step 2: Coding Infrastructure as Code
Step 3: Deployment
Step 4: Monitoring and management

Below is the AWS Terraform code for the setup of the EC2 to host one Apache Service.



Now, here’s the Azure Terraform code for the setup of the VM to host one Apache Service.



In the image below, we can see the Azure Portal VM details, up and working:

Now, the Apache service on Azure is up and working from the browser side:

The AWS EC2 details are also up and working:

The Apache service on AWS is also working from the browser side:

Below we can see the GCP VM details:


The GCP VM with the HAproxy service is also installed and working:


Below is the Azure Apache service running:

And also, the AWS Apache service working:

Now, we see a request from the browser to the load balancer HAProxy, with AWS Apache returning the status code “200 OK”:

And now a request from the browser to the load balancer HAProxy, with Azure Apache returning the status code “200 OK”:

Here are the statistics from the HAProxy service. The requests are balanced based on the Round-Robin algorithm:

Now, we’re stopping Apache service from Azure VM:

Here’s a request to the load balancer, returning only AWS Apache service without downtime:


Now, stopping Apache service from AWS EC2:

And now, here’s a request to the load balancer, returning “503 Service Unavailable”, because both web services are down:


GitHub repository: https://github.com/danielitogomez/terraform/tree/master/multicloud-web-servers-poc
Now that we’ve seen a practical demonstration of a multi-cloud implementation, here are a few more things to keep in mind.
It is crucial to address several advanced configurations and scalability options that significantly enhance the functionality of multi-cloud deployments:
The PoC outlined in this article primarily focuses on demonstrating the capabilities and benefits of a multi-cloud approach. However, it also highlights the need for several enhancements to optimise the architecture:
Implementing a multi-cloud strategy effectively leverages the unique strengths of various cloud providers, enhancing operational resilience, scalability, and compliance. The considerations outlined above highlight the depth of planning and sophistication that can optimise these deployments.
Organisations must carefully assess their specific needs and integrate appropriate technologies and practices to maximise the benefits of a multi-cloud approach. This practical example offers a comprehensive blueprint for achieving higher availability and performance through a diversified cloud approach. This demonstration is not only a testament to the potential of multi-cloud environments but also a guide to evolving these setups into highly resilient, efficient, and scalable architectures.