To clarify the terms first,
Infrastructure as Code (IaC) can be delivered with upcoming technologies like Docker Swarm, Kubernetes, OpenShift, OpenStack and possiby some others run on bare metal. - You can code the infrastructure.
Software defined data center (SDDC) are typically enterprise and mostly more traditional solutions from IBM, VMWare, recently also Nutanix any many others. -You can define the infrastructure through some sort of UI.
Correct me if I am wrong.
Then, typically, my assumption/observation larger companies (much larger than a s startup, much smaller than Google) would provision you with some SDDC resources and there you can play with IaC.
In such a case which I consider yet not very rare, does this setup actually make sense if you want high performance?
An SDDC solution would have some sort of scheduler, and your IaC CPUs are virtual CPUs on real CPUs, so in most pessimistic scenarios your Spark shares resources with say corporate mail server or some backup solution. And there can be priorities set between them, so the sharing is not equal. And collision cases described below from random towards a notorious DOS (Denial of Service) bias.
Collision case 1. Then your Docker Swarm, or Kubernetes scheduler would "see" a machine and say, well, the load there was not so much, so I take it - and then it finds what if was not expecting because the SDDC system scheduler has decided to take it already for something else.
Collision case 2. Just in the moment the IaC scheduer decides to compute something, the SDDC scheduler decides to unschedule it, so what would happen is kind of paralyzing spikes setting IaC to a slow motion mode.