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.

 

 

Concepts to keep in mind

Before going any further, here are a few relevant concepts that we must understand:

  • Multi-cloud environment: a multi-cloud environment is a cloud solution that integrates more than one cloud service from multiple providers. This can include public, private, and hybrid clouds to achieve optimal performance.

  • Cloud service models: there are various cloud service models like Infrastructure-as-a-Service (IaaS), Platform-as-a-Service (PaaS), and Software-as-a-Service (SaaS), which are the foundation of multi-cloud architecture.

  • Infrastructure-as-a-Service: IaaS provides computing resources over the internet. IaaS allows businesses to rent servers, storage space, and networking hardware.

  • Platform-as-a-Service: PaaS provides a framework for developers that they can use to build custom applications. Instead of handling the underlying infrastructure (servers, storage, and networking), developers can focus on the deployment and management of applications.

  • Software-as-a-Service: SaaS delivers software applications over the internet, on a subscription basis. SaaS providers manage the hardware, middleware, app software, and app data.

  • Service Level Agreements (SLAs): these are contractual agreements that specify the performance standards expected from cloud service providers and are critical in multi-cloud setups to ensure service reliability and accountability.

 

 

Benefits of multi-cloud implementations

Implementing a multi-cloud strategy can bring in a lot of advantages, namely:

  • Risk mitigation

    By spreading assets across multiple clouds, organisations can avoid vendor lock-in and reduce the risk of service disruptions from a single point of failure.
  • Compliance and data sovereignty

    Multi-cloud strategies facilitate compliance with various regulatory requirements by enabling data to reside in specific geographical locations, as required by law.

  • Cost savings

    Organisations can optimise costs by selecting the most cost-effective cloud solutions for different tasks based on pricing models and performance metrics.

  • Improved performance and scalability

    Multi-cloud environments enable organisations to deploy services closer to end-users, thereby reducing latency and improving performance. Scalability is enhanced as resources from multiple clouds can be harnessed dynamically as demand changes.

 

 

Strategic implementation considerations

A multi-cloud strategy cannot be successfully implemented without these key points:

  • Workload assessment and planning

    Which workloads to move to which cloud should be determined based on specific requirements like security, performance, and costs.

  • Cloud integration

    There are technical and management challenges of integrating multiple clouds, which involves compatibility between different platforms and APIs.

  • Security and governance

    Security policies and governance should be consistently implemented across all cloud services to prevent data breaches and unauthorised access.

  • Expertise and vendor management

    There is a need for skilled professionals who understand multiple platforms and can manage relationships with various cloud providers.

 

Demonstrating a multi-cloud deployment using Terraform

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.

 

1. Setup overview

Cloud providers: Amazon Web Services, Google Cloud Platform, and Microsoft Azure.

Resources:

  • AWS EC2 instance running an Apache web server.
  • Azure VM running another Apache web server.
  • GCP VM running HAProxy for load balancing between the two Apache servers.

 

2. Implementation summary

Step 1: Environment setup

  • Install and configure Terraform on a local machine.
  • Set up cloud provider accounts and acquire necessary API keys and permissions.

Step 2: Coding Infrastructure as Code

  • Write Terraform scripts to provision the virtual machines and install necessary software (Apache, HAProxy).
  • Configure network settings including security groups, IP addresses, and routing rules to ensure connectivity and security.

Step 3: Deployment

  • Initialise the Terraform configuration and run Terraform Apply to start the deployment process.
  • Validate the setup by accessing the web servers through the HAProxy IP, ensuring that traffic is properly routed and load-balanced.

Step 4: Monitoring and management

  • Set up monitoring tools to track performance and logs to ensure the system runs smoothly.
  • Plan for regular updates and security patches across all platforms.

 

3. Diagram implementation

Multi-cloud implementation diagram

 

4. Proof of Concept (PoC) implementation + GitHub repository

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

Multi-cloud code 1

Multi-cloud code 2

Multi-cloud code 3

 

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

Multi-cloud code 4

Multi-cloud code 5

Multi-cloud code 7

 

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

Multi-cloud 8

 

 

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

Multi-cloud 9

 

The AWS EC2 details are also up and working:

Multi-cloud 10

 

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

Multi-cloud 11

 

Below we can see the GCP VM details:

Multi-cloud 12

 

Multi-cloud 13

 

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

Multi-cloud 14

Multi-cloud 15

 

Below is the Azure Apache service running:

Multi-cloud 16

 

And also, the AWS Apache service working:

Multi-cloud 17

 

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

Multi-cloud 18

 

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

Multi-cloud 19

 

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

Multi-cloud 20

 

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

Multi-cloud 21

 

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

Multi-cloud 22

Multi-cloud 23

Now, stopping Apache service from AWS EC2:

Multi-cloud 24

 

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

Multi-cloud 25

Multi-cloud 26

GitHub repository: https://github.com/danielitogomez/terraform/tree/master/multicloud-web-servers-poc

 

 

Further considerations for multi-cloud deployments

Now that we’ve seen a practical demonstration of a multi-cloud implementation, here are a few more things to keep in mind.

 

Advanced configuration and scalability

It is crucial to address several advanced configurations and scalability options that significantly enhance the functionality of multi-cloud deployments:

  • DNS solutions

    Implementing DNS (Domain Name System) solutions is vital for managing dynamic IP addresses and providing seamless user experiences. DNS management tools can be used to direct traffic intelligently across different cloud services, improving availability and load balancing.

  • Configuration management

    Tools like Ansible, Chef, or Puppet can automate the configuration of new servers and the scaling of existing ones. This automation ensures consistent environments and reduces the likelihood of human error during manual setups.

  • Security improvements

    Given that public IPs expose resources to potential threats, integrating Web Application Firewalls (WAFs) protects against common web exploits. Additionally, employing advanced network security configurations, such as Virtual Private Clouds (VPCs) and security groups, ensures that only authorised traffic accesses these resources.

  • Geographical distribution

    Deploying virtual machines in diverse regions (e.g., one in the US and another in the EU) enhances performance and compliance with local data laws. This approach also mitigates risks associated with regional disruptions or geopolitical factors.

  • Content Delivery Networks (CDNs)

    A CDN can be implemented to cache content at edge locations closer to users, drastically reducing latency and improving user experience for globally distributed applications.

 

Future developments

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:

  • Automated scalability

    Integrating more sophisticated scaling strategies, such as those provided by Kubernetes or other orchestration platforms, can facilitate the automatic scaling of web services based on traffic demands.

  • Hybrid deployment

    Combining cloud-based services with on-premises deployments can cater to organisations needing tighter control over certain data or applications while still enjoying the scalability of cloud solutions.

  • Multi-region resiliency

    Establishing services in multiple geographic regions can be complemented by implementing inter-region failover mechanisms to provide high availability and disaster recovery capabilities.

  • Enhanced monitoring and analytics

    Advanced monitoring solutions can provide deeper insights into application performance and user interactions, enabling proactive management and resources’ optimisation.

 

Conclusion

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.

Share this article