Technical challenges in multi cloud
Cloud providers have abstraction layers
Not all clouds are the same under the covers. Each cloud has its own underlying abstraction layer, often called the Cloud Service Fabric, this is where network, compute and storage are presented to the VM that is usually used to host applications
If a VM is to be moved to a new cloud provider, the VM image will need to be modified to match the cloud fabric of the underlying target platform.
For Example, AWS Networking is significantly different to Microsoft Azure Networking and in turn both AWS and Azure Networking are significantly different in their set up from GCP Networking. It is the same for virtual machines, a VM running on Azure cannot be automatically moved to AWS and an AWS VM cannot be directly moved to GCP.
Solutions
To be on multi cloud - one need to focus on portability.
Use Docker - Containerize application.
Use Terraform
Use Kubernetes for orchestration
Use Microservice - Break application into micro service. Each micro service has its own container.