A processing system may obtain a request to deploy a service comprising a first virtual network function (VNF) to a multi-cloud environment comprising cloud infrastructures, the request including metadata associated with the service, decompose the service into a plurality of modules comprising: a plurality of VNFs and/or a plurality of components of the first VNF, select at least a first deployment model for the service from among a plurality of deployment models, based upon the metadata, each deployment model comprising rules for assigning the plurality of modules to cloud infrastructures, and deploy a first module to a first cloud infrastructure and a second module to a second cloud infrastructure.