Right Abstraction

VMs, Containers and functions provide with a wide choice of delivery platforms. When to use what? This is a difficult choice. What do you gain and lose in each of those choices?

How do we address that in the cloudfoundry? What is our experience with these? More importantly what is our customer's experience with these.