What is a controller in SDN?
Most SDN solutions have controllers. These controllers are generally the brains of the SDN system. They are some sort of software/application that allows administrators to make changes to policies, traffic flow, or other network changes generally from one place. For instance VMware NSX uses the vCenter to deploy at least three controllers. These controllers become virtual appliances within your management cluster. The NSX controllers make it possible to make network changes to your virtual environment.
Cisco ACI uses APICs, Application Policy Infrastructure Controllers, to manage and control your physical and virtual environment. In the case of the APIC they are not within the data path, but only the control path. This is different from the OpenFlow example, for instance. Where control and data traffic are typically not separated. There are many flavors of SDN and they may use controllers in different ways, but most SDN solutions do you some sort of controller.