1. A computer-implemented method, comprising: receiving a configuration specification for configuring a cloud-based deployment, the configuration specification being written in a specification language and requiring instantiation of respective class definitions of one or more classes, each class modeling a respective functional component of the cloud-based deployment using a group of configurable class parameters, and the respective class definition of each class representing a requested state of the functional component modeled by the class, wherein at least one configurable class parameter for a particular uninstantiated class specifies a trigger event for dynamic reconfiguration of the functional component modeled by the particular class, the dynamic reconfiguration specified by statements in the configuration specification, wherein some of the functional components are software roles performed by an installed application in the cloud-based environment, wherein: the one or more classes include at least an existing base class and at least a customized class extended from the existing base class, the customized class inherits respective class parameters of the existing base class, and the customized class modifies a value of at least one of the class parameters inherited from the existing base class to specify a software role for the customized class that is different than the base class, wherein the specified software role comprises model parameters that describe a configuration of the cloud-based deployment and wherein a second cloud-based deployment includes a second customized class extended from the existing base class, the second customized class specifies a second software role that comprises second model parameters that describe a different configuration; deriving a plurality of application programming interface (API) calls for configuring the cloud-based deployment based on the class definitions of the one or more classes and based on at least one of the model parameters, wherein at least one of the API calls is configured to instantiate the uninstantiated class to monitor for the specified trigger event; causing the plurality of API calls to be executed to configure the cloud-based deployment; monitoring a performance metric of the cloud based deployment; and based on a matching of the performance metric to the trigger event, causing a dynamic reconfiguration of the functional component according to the statements as specified in the configuration specification.