A method for configuring a controller of an industrial automation system via a network, the method comprising: obtaining, by a cloud computing system, a controller configuration and a controller program; generating, by the cloud computing system, based on the obtained controller configuration and the obtained controller program, a compile time representation of the controller allowing modification of the controller program and the controller configuration at compile time comprising a time at or prior to generation of run time machine code for the controller from a corresponding source code, and a time during which the source code is generated by extracting the source code from a configuration file or by writing the source code via programming language or via a cloud-based source code development environment; and generating, by the cloud computing system, a modified controller program and a modified controller configuration, using the compile time representation of the controller, wherein the controller program defines runtime operation of the controller controlling a subsystem of the industrial automation system; and providing, by the cloud computing system via the network, the modified controller program and the modified controller configuration to the controller of the industrial automation system; wherein the obtained controller configuration further comprises one or more of: controller type and capability information, network configuration of the controller, interface information for electromechanical drives, and interface configuration for I/O devices connected to the controller via back panel integration of Industrial Field Bus Systems, wherein the compile time representation of the controller comprises a persistence layer holding controller configurations and control instruction elements of controller programs, wherein the individual control elements are represented as separated control logic objects, and wherein individual elements of the persistence layer are individually configurable based on programming and configuration instructions received via a programming interface. obtaining, by a cloud computing system, a controller configuration and a controller program; generating, by the cloud computing system, based on the obtained controller configuration and the obtained controller program, a compile time representation of the controller allowing modification of the controller program and the controller configuration at compile time comprising a time at or prior to generation of run time machine code for the controller from a corresponding source code, and a time during which the source code is generated by extracting the source code from a configuration file or by writing the source code via programming language or via a cloud-based source code development environment; and generating, by the cloud computing system, a modified controller program and a modified controller configuration, using the compile time representation of the controller, wherein the controller program defines runtime operation of the controller controlling a subsystem of the industrial automation system; and providing, by the cloud computing system via the network, the modified controller program and the modified controller configuration to the controller of the industrial automation system; controller type and capability information, network configuration of the controller, interface information for electromechanical drives, and interface configuration for I/O devices connected to the controller via back panel integration of Industrial Field Bus Systems, wherein the compile time representation of the controller comprises a persistence layer holding controller configurations and control instruction elements of controller programs, wherein the individual control elements are represented as separated control logic objects, and wherein individual elements of the persistence layer are individually configurable based on programming and configuration instructions received via a programming interface.